[petsc-users] PetscSplitOwnerShip()
(Rebecca) Xuefei YUAN
xy2102 at columbia.edu
Tue Mar 9 17:16:46 CST 2010
Hi,
I ran np=4 for a small (-da_grid_x 6, -da_grid_y 5) problem, with
PETSC_STENCIL_BOX and width=2, dof = 4.
When I use vecLoad() to load the binary file with the following set:
PetscViewerBinaryOpen(PETSC_COMM_WORLD,fileName,FILE_MODE_READ,&viewer);
VecLoad(viewer,PETSC_NULL,&FIELD);
ierr = DAVecGetArray(da2_4,FIELD,&field);CHKERRQ(ierr);
ierr = DAVecRestoreArray(da2_4,FIELD,&field);CHKERRQ(ierr);
ierr = VecDestroy(FIELD);CHKERRQ(ierr);
ierr = DADestroy(da2_4);CHKERRQ(ierr);
ierr = PetscViewerDestroy(viewer);CHKERRQ(ierr);
However, I got the error messages as below:
[0]PETSC ERROR: DAVecGetArray() line 53 in src/dm/da/src/dagetarray.c
Vector local size 32 is not compatible with DA local sizes 36 100
[1]PETSC ERROR: DAVecGetArray() line 53 in src/dm/da/src/dagetarray.c
Vector local size 32 is not compatible with DA local sizes 36 100
[2]PETSC ERROR: DAVecGetArray() line 53 in src/dm/da/src/dagetarray.c
Vector local size 28 is not compatible with DA local sizes 24 80
[3]PETSC ERROR: DAVecGetArray() line 53 in src/dm/da/src/dagetarray.c
Vector local size 28 is not compatible with DA local sizes 24 80
Then I tracked down and tried to find how this 32,32,28,28 coming from.
It turns out that my da2_4 has the parameters at each processor:
xs xe ys ye x y Xs Xe Ys Ye Nl base nlocal Nlocal
p0: 0 12 0 3 12 3 0 20 0 5 100 0 100 36
p1: 12 24 0 3 12 3 4 24 0 5 100 36 100 36
p2: 0 12 3 5 12 2 0 20 1 5 80 72 80 24
p3: 12 24 3 5 12 2 4 24 1 5 80 96 80 24
and deep in
#0 PetscSplitOwnership (comm=-2080374782, n=0x8a061b4, N=0x8a061b8)
at psplit.c:81
#1 0x08628384 in PetscLayoutSetUp (map=0x8a061b0) at pmap.c:140
#2 0x08618320 in VecCreate_MPI_Private (v=0x8a05c50, alloc=PETSC_TRUE,
nghost=0, array=0x0) at pbvec.c:182
#3 0x08618ba7 in VecCreate_MPI (vv=0x8a05c50) at pbvec.c:232
#4 0x085f1554 in VecSetType (vec=0x8a05c50, method=0x885dd0b "mpi")
at vecreg.c:54
#5 0x085ec4f0 in VecSetTypeFromOptions_Private (vec=0x8a05c50)
at vector.c:1335
#6 0x085ec909 in VecSetFromOptions (vec=0x8a05c50) at vector.c:1370
#7 0x085d7a7e in VecLoad_Binary (viewer=0x89f70b0, itype=0x885ce3d "mpi",
newvec=0xbfe148e4) at vecio.c:228
#8 0x085d70e4 in VecLoad (viewer=0x89f70b0, outtype=0x885ce3d "mpi",
newvec=0xbfe148e4) at vecio.c:134
#9 0x0804f140 in FormInitialGuess_physical (dmmg=0x89a2880, X=0x89b34f0)
at vecviewload_out.c:390
#10 0x08052ced in DMMGSolve (dmmg=0x89a2720) at damg.c:307
#11 0x0804d479 in main (argc=-1, argv=0xbfe14cd4) at vecviewload_out.c:186
it says that
*n = *N/size + ((*N % size) > rank);
where *N = 30; size = 4; rank = 0,1,2,3, in such a case, this gives me
*n = 32,32,28,28 for pro0,1,2,3, separately.
Where could be wrong with this mismatch of the local vector size and
da local size(excluding ghost pts or including ghost pts)?
Thanks so much!
Rebecca
More information about the petsc-users
mailing list