[mpich-discuss] Problem with ADIOI_Info_get (MPI_Info_get) from the ADIO layer
Matthieu Dorier
matthieu.dorier at irisa.fr
Wed Jun 26 13:10:29 CDT 2013
----- Mail original -----
> De: "Rob Latham" <robl at mcs.anl.gov>
> À: discuss at mpich.org
> Envoyé: Mercredi 26 Juin 2013 10:21:36
> Objet: Re: [mpich-discuss] Problem with ADIOI_Info_get (MPI_Info_get) from the ADIO layer
>
> On Tue, Jun 25, 2013 at 05:10:48PM +0200, Matthieu Dorier wrote:
> > Hi,
> >
> > I found the solution by investigating the code so I'll post it here
> > in case it can be useful to someone else:
> >
> > When opening a file, ADIOI_xxx_SetInfo is called to copy the info
> > structure. Unless overwritten by the ADIO backend, it's
> > ADIO_GEN_SetInfo (in src/mpi/romio/adio/common/ad_hints.c) that
> > ends up being called and this function only copies the hints that
> > it knows (e.g. cb_buffer_size). So the solution consists in
> > changing ADIO_GEN_SetInfo or (more appropriately) provide an
> > implementation of ADIOI_xxx_SetInfo that copies custom parameters
> > and the called ADIO_GEN_SetInfo.
>
> Yeah, consider the way ad_pvfs2 deals with this:
> the function pointers in ad_pvfs2.c point to ADIOI_PVFS2_SetInfo
>
> In src/mpi/romio/adio/ad_pvfs2/ad_pvfs2_hints.c , all the
> PVFS2-specific hints are processed, then it calls ADIOI_GEN_SetInfo
>
> (Now that I look at this, maybe the order should be reversed)
Yes it should, otherwise ADIOI_GEN_SetInfo erases what has been set by ADIOI_PVFS2_SetInfo :-)
Matthieu
>
> ==rob
>
> > Matthieu
> >
> > ----- Mail original -----
> >
> > > De: "Matthieu Dorier" <matthieu.dorier at irisa.fr>
> > > À: discuss at mpich.org
> > > Envoyé: Lundi 24 Juin 2013 15:46:21
> > > Objet: [mpich-discuss] Problem with ADIOI_Info_get (MPI_Info_get)
> > > from the ADIO layer
> >
> > > Hi,
> >
> > > I'm implementing an ADIO backend and I'm having problems
> > > retrieving
> > > values from the MPI_Info attached to the file.
> > > On the application side, I have something like this:
> >
> > > MPI_Info_create(&info);
> > > MPI_Info_set(info,"cb_buffer_size","64");
> > > MPI_Info_set(info,"xyz","3");
> > > MPI_File_open(comm, "file",
> > > MPI_MODE_WRONLY | MPI_MODE_CREATE, info, &fh);
> >
> > > then a call to a MPI_File_write, which ends up calling my
> > > implementation of ADIOI_xxx_WriteContig. In this function, I try
> > > to
> > > read back these info:
> >
> > > int info_flag;
> > > char* value = (char *)
> > > ADIOI_Malloc((MPI_MAX_INFO_VAL+1)*sizeof(char));
> > > ADIOI_Info_get(fd->info, "xyz", MPI_MAX_INFO_VAL,
> > > value,&info_flag);
> > > if(info_flag) fprintf(stderr,"xyz = %d\n",atoi(value));
> > > ADIOI_Info_get(fd->info, "cb_buffer_size", MPI_MAX_INFO_VAL,
> > > value,&info_flag);
> > > if(info_flag) fprintf(stderr,"cb_buffer_size =
> > > %d\n",atoi(value));
> >
> > > I can get the 64 associated to the cb_buffer_size key (which is a
> > > reserved hint), but I don't get the second value.
> > > Where does the problem come from?
> > > I tried everything: re-ordering the calls, changing the name of
> > > the
> > > key, calling MPI_Info_get in the application to check that the
> > > values are properly set (they are)...
> >
> > > Thanks
> >
> > > Matthieu Dorier
> > > PhD student at ENS Cachan Brittany and IRISA
> > > http://people.irisa.fr/Matthieu.Dorier
> >
> > > _______________________________________________
> > > discuss mailing list discuss at mpich.org
> > > To manage subscription options or unsubscribe:
> > > https://lists.mpich.org/mailman/listinfo/discuss
>
> > _______________________________________________
> > discuss mailing list discuss at mpich.org
> > To manage subscription options or unsubscribe:
> > https://lists.mpich.org/mailman/listinfo/discuss
>
>
> --
> Rob Latham
> Mathematics and Computer Science Division
> Argonne National Lab, IL USA
> _______________________________________________
> discuss mailing list discuss at mpich.org
> To manage subscription options or unsubscribe:
> https://lists.mpich.org/mailman/listinfo/discuss
>
More information about the discuss
mailing list