> On Oct 20, 2017, at 12:17 PM, Kong, Fande <[email protected]> wrote: > > How about to do a global check (MPI_Allreduce)?
Kill you for large number of processes. > If we do not set values at all and the matrix is already assembled, we just > return without doing anything? > > How expensive, in the current implementation, to call MatAssemblyBegin/End > if there are no any stashed data? Is it so cheap that we can just ignore it? It requires at least one global reduction. > > I am asking because we call MatAssemblyBegin/End so often in MOOSE. I want to > make sure this is not going to bring up any performance issue. You need to check each use in MOOSE and see WHY it is being called. If no reason then don't call. Barry > > > Fande, > > On Fri, Oct 20, 2017 at 11:08 AM, Barry Smith <[email protected]> wrote: > > One process sets a value in the matrix, the others do not. They all call > MatAssemblyBegin(). Some processes will skip the assembly and hence the code > will hang. > > > > On Oct 20, 2017, at 12:03 PM, Kong, Fande <[email protected]> wrote: > > > > Hi All, > > > > In Mat/VecAssemblyBegin/End, why we do not check if or not mat/vec is > > assembled. If mat/vec is already assembled, should we just return without > > doing anything? > > > > I think we have some particular reasons not to check if the matrix is > > assembled. I honestly do not know why. > > > > Thanks, > > > > Fande, > >
