[petsc-users] Different communicators in the two objects

(Rebecca) Xuefei YUAN xy2102 at columbia.edu
Tue Mar 2 16:24:35 CST 2010


Hi,

I tried to save the solution from DMComposte() as two binary files(one  
for da, and one for a scalar), but I get the error messages as below  
when running in two processors:

(gdb) where
#0  0xb7f1a410 in __kernel_vsyscall ()
#1  0xb7c9a085 in raise () from /lib/tls/i686/cmov/libc.so.6
#2  0xb7c9ba01 in abort () from /lib/tls/i686/cmov/libc.so.6
#3  0x0873f24d in PetscAbortErrorHandler (line=697, fun=0x8868fd6 "VecView",
     file=0x8868e50 "vector.c", dir=0x8868e59 "src/vec/vec/interface/", n=80,
     p=1,
     mess=0xbfc40b74 "Different communicators in the two objects:  
Argument # 1 and 2", ctx=0x0) at errabort.c:62
#4  0x086b41be in PetscError (line=697, func=0x8868fd6 "VecView",
     file=0x8868e50 "vector.c", dir=0x8868e59 "src/vec/vec/interface/", n=80,
     p=1,
     mess=0x8869130 "Different communicators in the two objects:  
Argument # %d and %d") at err.c:482
#5  0x085f2356 in VecView (vec=0x8a14000, viewer=0x89cc6f0) at vector.c:697
#6  0x0804f30b in DumpSolutionToMatlab (dmmg=0x89b3370,
     fn=0xbfc416b7 "twmgoreggt_tx7_ty6_x7_y6_nl1_s100_t375000_r30_pn10.m")
     at twmgoreggt.c:430
#7  0x0804d72c in main (argc=Cannot access memory at address 0x2072
) at twmgoreggt.c:234

The piece of code is:

	X = DMMGGetx(dmmg);

	ierr = DMCompositeGetEntries(dm,&da1,PETSC_IGNORE);CHKERRQ(ierr);
	ierr = DAGetLocalInfo(da1,&info1);CHKERRQ(ierr);

//	ierr = DMCompositeGetAccess(dm,X,&GRID,&c);CHKERRQ(ierr);
	ierr = DMCompositeGetLocalVectors(dm,&GRID,&c);CHKERRQ(ierr);
	ierr = DMCompositeScatter(dm,X,GRID,c);CHKERRQ(ierr);

     if(parameters->adaptiveTimeStepSize){
         sprintf(fileName,  
"g_atwgcqt2unffnictv_tx%i_ty%i_x%i_y%i_nl%i_nt%1.5f.dat",info1.mx,info1.my,  
parameters->mxgrid,parameters->mygrid,parameters->numberOfLevels,parameters->timeToGenerateGrid);
     }else{
         sprintf(fileName,  
"g_twgcqt2unffnictv_tx%i_ty%i_x%i_y%i_nl%i_nt%1.5f.dat",info1.mx,info1.my,  
parameters->mxgrid,parameters->mygrid,parameters->numberOfLevels,parameters->timeToGenerateGrid);
     }
	PetscViewerBinaryOpen(PETSC_COMM_WORLD,fileName,FILE_MODE_WRITE,&viewer_g);
	VecView(GRID,viewer_g);
	ierr = PetscViewerDestroy (viewer_g);	CHKERRQ (ierr);
	if(parameters->adaptiveTimeStepSize){
         sprintf(fileName,  
"g_atwgcqt2unffnictv_tx%i_ty%i_x%i_y%i_nl%i_nt%1.5f.c.dat",info1.mx,info1.my,  
parameters->mxgrid,parameters->mygrid,parameters->numberOfLevels,parameters->timeToGenerateGrid);
     }else{
         sprintf(fileName,  
"g_twgcqt2unffnictv_tx%i_ty%i_x%i_y%i_nl%i_nt%1.5f.c.dat",info1.mx,info1.my,  
parameters->mxgrid,parameters->mygrid,parameters->numberOfLevels,parameters->timeToGenerateGrid);
     }
	int				fd;
      
PetscViewerBinaryOpen(PETSC_COMM_SELF,fileName,FILE_MODE_WRITE,&viewer_out);
     PetscViewerBinaryGetDescriptor(viewer_out,&fd);
     PetscBinaryWrite(fd,&c[0],1,PETSC_DOUBLE,PETSC_FALSE);
//	ierr = DMCompositeRestoreAccess(dm,X,&GRID,&c);CHKERRQ(ierr);
	ierr = DMCompositeGather(dm,X,GRID,c);CHKERRQ(ierr);
	ierr = DMCompositeRestoreLocalVectors(dm,&GRID,&c);CHKERRQ(ierr);
	ierr = PetscViewerDestroy (viewer_out);	CHKERRQ (ierr);


As debugging in gdb,

in processor one:
Breakpoint 1, DumpSolutionToMatlab (dmmg=0x89946b0,
     fn=0xbfc63f17 "twmgoreggt_tx7_ty6_x7_y6_nl1_s100_t375000_r30_pn10.m")
     at twmgoreggt.c:430
430             VecView(GRID,viewer_g);
(gdb) s
VecView (vec=0x8a139e0, viewer=0x89b9750) at vector.c:690
690       PetscFunctionBegin;
(gdb) n
691       PetscValidHeaderSpecific(vec,VEC_COOKIE,1);
(gdb)
692       PetscValidType(vec,1);
(gdb)
693       if (!viewer) {
(gdb)
696       PetscValidHeaderSpecific(viewer,PETSC_VIEWER_COOKIE,2);
(gdb)
697       PetscCheckSameComm(vec,1,viewer,2);
(gdb) s
PMPI_Comm_compare (comm1=-2080374780, comm2=-2080374782, result=0xbfc63c14)
     at comm_compare.c:81
81          MPIU_THREADPRIV_GET;

and in processor two:

Breakpoint 1, DumpSolutionToMatlab (dmmg=0x89b3370,
     fn=0xbf867a67 "twmgoreggt_tx7_ty6_x7_y6_nl1_s100_t375000_r30_pn10.m")
     at twmgoreggt.c:430
430             VecView(GRID,viewer_g);
(gdb) s
VecView (vec=0x8a14000, viewer=0x89ae380) at vector.c:690
690       PetscFunctionBegin;
(gdb) n
691       PetscValidHeaderSpecific(vec,VEC_COOKIE,1);
(gdb)
692       PetscValidType(vec,1);
(gdb)
693       if (!viewer) {
(gdb)
696       PetscValidHeaderSpecific(viewer,PETSC_VIEWER_COOKIE,2);
(gdb)
697       PetscCheckSameComm(vec,1,viewer,2);
(gdb) s
PMPI_Comm_compare (comm1=-2080374777, comm2=-2080374780, result=0xbf867764)
     at comm_compare.c:81
81          MPIU_THREADPRIV_GET;
(gdb)

In processor one, comm1=-2080374780, comm2=-2080374782, while in  
processor two,
comm1=-2080374777, comm2=-2080374780. I do not know what causes the  
two communicators are different.

Any idea about it? Thanks very much!

-
(Rebecca) Xuefei YUAN
Department of Applied Physics and Applied Mathematics
Columbia University
Tel:917-399-8032
www.columbia.edu/~xy2102



More information about the petsc-users mailing list