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,
>
>

Reply via email to