How about to do a global check (MPI_Allreduce)? 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? 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. Fande, On Fri, Oct 20, 2017 at 11:08 AM, Barry Smith <bsm...@mcs.anl.gov> 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 <fande.k...@inl.gov> 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, > >