> On Oct 20, 2017, at 5:33 PM, Kong, Fande <[email protected]> wrote:
> 
> 
> 
> On Fri, Oct 20, 2017 at 4:24 PM, Barry Smith <[email protected]> wrote:
> 
> > 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.
> 
> So, this global reduction is cheaper than MPI_Allreduce?  Or they are similar.

  No it is not cheaper, it is the same thing. 

  You need to eliminate unneeded AssemblyBegin/End in MOOSE. That is the only 
corrective action that can take place.


> 
> 
>  
> >
> > 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.
> 
> Good point.
> 
> Fande,
> 
>  
> 
>   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,
> >
> >

Reply via email to