[petsc-dev] MatAssembly and VecAssembly

Jed Brown jed at jedbrown.org
Fri Oct 20 17:47:01 CDT 2017


Barry Smith <bsmith at mcs.anl.gov> writes:

>> On Oct 20, 2017, at 5:33 PM, Kong, Fande <fande.kong at inl.gov> wrote:
>> 
>> 
>> 
>> On Fri, Oct 20, 2017 at 4:24 PM, Barry Smith <bsmith at mcs.anl.gov> wrote:
>> 
>> > On Oct 20, 2017, at 12:17 PM, Kong, Fande <fande.kong at inl.gov> 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. 

The point-to-point communication when using -vec_assembly_bts with
VEC_SUBSET_OFF_PROC_ENTRIES may be slightly less expensive.

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

You should definitely do this rather than trying to hide behind possibly
slightly faster null assembly.


More information about the petsc-dev mailing list