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.
