[mpich-discuss] Create derived data type structure with C++bindings syntax

Marc levesqm at emt.inrs.ca
Thu Apr 30 09:55:38 CDT 2009


Thanks, it worked.

Marc

On Wed, 2009-04-29 at 19:08 -0500, Rajeev Thakur wrote:
> You need to write it as 
> inputDataType = inputDataType.Create_struct(2,blockcounts,offsets,oldTypes);
> 
> 
> Rajeev
> 
> > -----Original Message-----
> > From: mpich-discuss-bounces at mcs.anl.gov 
> > [mailto:mpich-discuss-bounces at mcs.anl.gov] On Behalf Of Marc
> > Sent: Wednesday, April 29, 2009 10:47 AM
> > To: mpich-discuss at mcs.anl.gov
> > Subject: [mpich-discuss] Create derived data type structure 
> > with C++bindings syntax
> > 
> > Hi,
> > 
> > I'm trying to make a derived data type which consists of 4 
> > integers and
> > 9 doubles. I'm using the C++ bindings and I got the following 
> > error while running mpirun:
> > 
> > 0 - MPI_TYPE_COMMIT : Datatype is MPI_TYPE_NULL
> > 
> > The commit don't seem to work... Here is an excerpt of the code:
> > 
> > int main(int argc, char *argv[])
> > {
> >   MPI::Datatype inputDataType;
> >   MPI::Datatype oldTypes[2];
> >   MPI::Aint offsets[2];
> >   MPI::Aint intExtent;
> >   MPI::Aint lb;
> >   int blockcounts[2];
> > 
> >   MPI::Init(argc, argv);
> > 
> >   MPI::INT.Get_extent(lb,intExtent);
> > 		
> >   offsets[0] = 0;
> >   oldTypes[0] = MPI::INT;
> >   blockcounts[0] = 4;
> > 
> >   offsets[1] = blockcounts[0] * intExtent;
> >   oldTypes[1] = MPI::DOUBLE;
> >   blockcounts[1] = 9;
> > 
> >   inputDataType.Create_struct(2,blockcounts,offsets,oldTypes);
> >   inputDataType.Commit();
> > 
> >   //Lot of computation and communications here
> > 
> >   inputDataType.Free();
> >   MPI::Finalize();
> > 
> >   return 0;
> > }
> > 
> > Why I'm getting that error? I'm using Mpich version 1.2.7-9ubuntu1.
> > Also, could you explain me what is the lower bound lb nature 
> > and what is it for?
> > 
> > Thanks,
> > 
> > Marc
> > 
> > 



More information about the mpich-discuss mailing list