[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