[petsc-dev] asm / gasm
Mark Adams
mfadams at lbl.gov
Sun Jul 3 10:40:59 CDT 2016
Barry,
GAMG must be setting up the ASM incorrectly, on empty processors, when
using the aggregates. In asm.c, I see that osm->is_local is NULL for empty
processors, and this causes a problem when this branch is taken by less
than 8 processes (of 8):
if (osm->is_local) { // asm.c:282
....
ierr =
VecScatterCreate(vec,osm->is_local[i],osm->y_local[i],isl,&osm->prolongation[i]);CHKERRQ(ierr);
I get an error "MPI_Allreduce() called in different locations (code lines)
on different processors ", because "vec" here is global. This gamg.c code
must not be correct:
if (!sz) {
IS is;
ierr = ISCreateGeneral(PETSC_COMM_SELF, 0, NULL,
PETSC_COPY_VALUES, &is);CHKERRQ(ierr);
ierr = PCASMSetLocalSubdomains(subpc, 1, &is, NULL);CHKERRQ(ierr);
ierr = ISDestroy(&is);CHKERRQ(ierr);
} else {
....
}
I will look into why osm->is_local seems to be NULL here when it should
have an empty IS.
Mark
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20160703/62cb82c2/attachment.html>
More information about the petsc-dev
mailing list