Barry Smith <[email protected]> writes:

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

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.

Reply via email to