[mpich-discuss] MPI_File_set_view Error: ADIOI_Count_contiguous_blocks

Rajeev Thakur thakur at mcs.anl.gov
Thu May 29 10:23:01 CDT 2008


Ingo,
     ROMIO doesn't yet support datatypes created with
MPI_Type_create_resized. As Rob suggested, you can create a struct type with
an lb/ub instead.

Rajeev 

> -----Original Message-----
> From: owner-mpich-discuss at mcs.anl.gov 
> [mailto:owner-mpich-discuss at mcs.anl.gov] On Behalf Of Rob Ross
> Sent: Thursday, May 29, 2008 9:08 AM
> To: mpich-discuss at mcs.anl.gov
> Subject: Re: [mpich-discuss] MPI_File_set_view Error: 
> ADIOI_Count_contiguous_blocks
> 
> Hi Ingo,
> 
> You've hit a problem in the combination of ROMIO and MPI 
> implementation. Can you tell us what MPI version you are using?
> 
> In the mean time you may want to instead use a struct with an 
> MPI_LB/ MPI_UB pair to extend your type, rather than using resize.
> 
> Otherwise I think that you're on the right track.
> 
> Rob
> 
> On May 29, 2008, at 8:59 AM, Ingo Bojak wrote:
> 
> > I've been having trouble setting a file view which has blocks of 
> > different lengths of doubles, with gaps in between, and potentially 
> > gaps in the beginning and end. Since this is the first time using 
> > MPI*2*-IO, I thought the errors were from mistakes in 
> resizing to get 
> > holes at the beginning/end. But it seems that the resizing 
> per se is 
> > the problem. Somewhat edited code snippet follows:
> >
> > ---
> > // lb: lower bound, ext: extend
> > MPI_Aint lb,ext;
> >
> > // noblo: number of blocks, disp: list of displacements, 
> blen: list of 
> > block lengths int noblo,*disp,*blen;
> >
> > // sdump: file handle, stat: file status MPI_File sdump; MPI_Status 
> > stat;
> >
> > // datatype used for filetype
> > MPI_Datatype loc_double;
> >
> > if (MPI_Type_indexed(noblo,blen,disp,MPI_DOUBLE,&loc_double)! 
> > =MPI_SUCCESS)
> > sstop("setview: typing loc_double",ERR60);
> >
> > if (MPI_Type_get_extent(loc_double,&lb,&ext)!=MPI_SUCCESS)
> >  sstop("setview: get extent double",ERR61);
> >
> > // *** the following lines to be commented out ***
> >
> > if (MPI_Type_create_resized(loc_double,lb,ext,&loc_double)! 
> > =MPI_SUCCESS)
> >  sstop("setview: resize loc_double",ERR62);
> >
> > // *** the previous lines to be commented out ***
> >
> > if (MPI_Type_commit(&loc_double)!=MPI_SUCCESS)
> >  sstop("setview: commit loc_double",ERR63);
> >
> > if (MPI_File_open(MPI_COMM_WORLD,sdname,MPI_MODE_CREATE | 
> > MPI_MODE_WRONLY, MPI_INFO_NULL,&sdump)!=MPI_SUCCESS)
> >  sstop("stdump: can't open file",ERR56);
> >
> > // error occurs in the line below, *if* lines above are *not* 
> > commented out if (MPI_File_set_view(sdump,
> > 0,MPI_DOUBLE,loc_double,"native",MPI_INFO_NULL)!=MPI_SUCCESS)
> >  sstop("stdump: can't set view",ERR57);
> > ---
> >
> > "sstop" is just my wrapper for MPI_Abort with some error output. If 
> > the indicated lines are commented out, the program runs 
> fine (although 
> > the output is wrong). If the indicated lines are in, I get the 
> > following error:
> >
> > Error: Unsupported datatype passed to 
> ADIOI_Count_contiguous_blocks, 
> > combiner = 18
> >
> > The program is the aborted since I trigger on lack of MPI_SUCCESS.  
> > Note that the resize leaves everything as it was before in 
> the above 
> > (not so in the original code, of course - but I was getting 
> the same 
> > error when I was actually resizing with intent). A simplified, but 
> > otherwise typical, version of what may be found in noblo, blen, and
> > disp:
> >
> > Intended writing pattern for ranks 0,1,2:
> > 0011010022122202
> >
> > rank 0
> > ------
> > noblo=4;
> > disp[4]={0, 4, 6,14};
> > blen[4]={2,1,2,1};
> >
> > rank 1
> > ------
> > noblo=3;
> > dis[3]={2,5,10};
> > blen[3]={2,1,1};
> >
> > rank 2
> > ------
> > noblo=2;
> > dis[2]={8,11};
> > blen[3]={2,3};
> >
> > I would have then tried to resize the index-datatype to
> > lb=0,ext=16*8 or perhaps lb=current_lb,ext=16*8-current_lb. I'm not 
> > sure which one of the two is correct so that multiple 
> writes advance 
> > all ranks such that they alway write in the same intended block 
> > pattern. But anyhow, I couldn't make progress on that 
> because of the 
> > above error which seems to be independent of the actual resize made.
> >
> > The whole thing runs usually currently under Cygwin on a WinXP box:
> > mpicc -Wall prog.c
> > mpiexec -n 16  ./a.exe
> > I use the single machine for rapid debugging. But I have 
> also started 
> > this on one of the target clusters (Linux, gcc) and I get 
> exactly  the 
> > same problem!
> >
> > Am I being stupid (likely...) or is there some problem with the MPI 
> > library function? Any ideas?
> >
> > Thanks,
> > Ingo
> >
> 
> 
> 




More information about the mpich-discuss mailing list