[petsc-dev] horrid bug

Mark F. Adams mark.adams at columbia.edu
Fri May 18 07:20:00 CDT 2012


I've got a bug with block sizes in multigrid that is getting harry and wanted to see if I could get some help.

The crux of the problem seems to be that different versions of VecScatterEnd are being called.  I've added a print statement in:

PetscErrorCode PETSCMAP1(VecScatterEnd)(VecScatter ctx,Vec xin,Vec yin,InsertMode addv,ScatterMode mode)

in vpscat.h. and with a two processor run see this:

*****[0]VecScatterEnd_3 start, N=27 Xin.bs=3 yin.bs=1
*****[1]VecScatterEnd_3 start, N=27 Xin.bs=3 yin.bs=1
*****[0]VecScatterEnd_2 start, N=27 Xin.bs=3 yin.bs=1
*****[1]VecScatterEnd_1 start, N=27 Xin.bs=3 yin.bs=1
[1]PETSC ERROR: VecScatterEnd_1() line 217 in /Users/markadams/Codes/petsc-dev/include/../src/vec/vec/utils/vpscat.h
[1]PETSC ERROR: VecScatterEnd() line 1620 in /Users/markadams/Codes/petsc-dev/src/vec/vec/utils/vscat.c
[1]PETSC ERROR: MatMultAdd_MPIAIJ() line 1118 in /Users/markadams/Codes/petsc-dev/src/mat/impls/aij/mpi/mpiaij.c
[1]PETSC ERROR: MatMultAdd() line 2372 in /Users/markadams/Codes/petsc-dev/src/mat/interface/matrix.c
[1]PETSC ERROR: MatInterpolateAdd() line 7439 in /Users/markadams/Codes/petsc-dev/src/mat/interface/matrix.c
[1]PETSC ERROR: PCMGMCycle_Private() line 52 in /Users/markadams/Codes/petsc-dev/src/ksp/pc/impls/mg/mg.c


This is a two level solve and the coarse grid is all on proc 0 and has a block size of 3. The fine grid has a block size of 2.  THis error, as you can see, comes from the interpolation from coarse to fine.  You can see from this output that the code called VecScatterEnd_3 successfully (the coarse grid) but when it does the interpolation proc 0 calls VecScatterEnd_2 (the destination is block size 2) and proc 1 calls VecScatterEnd_1 -- clearly wrong.

Anyway, I'll keep digging, but any ideas would be welcome.

Mark




More information about the petsc-dev mailing list