[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