[mpich-discuss] Problem creating new MPI_DATATYPE
Sunshine Sunshine
sunshine1414 at hotmail.fr
Thu Apr 26 06:05:31 CDT 2012
Good morning,
I want to create a new MPI_DATATYPE for my structure FRAGMENT:
struct elt
{ long ind;
double val;
};
typedef struct elt elt;
struct Fragment
{
int num;
elt *elt;
};
typedef struct Fragment Fragment;
I tried the following code:
MPI_Datatype MPI_elt;
MPI_Datatype typeelt[3] = {MPI_LONG,MPI_DOUBLE};
int l_bloc[2]={1,1};
MPI_Aint dispo[2];
elt ELT;
MPI_Address(&ELT.ind, dispo);
MPI_Address(&ELT.val, dispo+1);
MPI_Aint base2 = dispo[0];
for (j=0; j <2; j++) dispo[j] -= base2;
MPI_Type_struct(2, l_bloc,dispo,typeelt,&MPI_elt);
MPI_Type_commit(&MPI_elt);
MPI_Datatype MPI_FRAGMENT
MPI_Datatype typeFRAGMENT[2] = {MPI_INT,MPI_AINT};
int l_bloc3[2]={1,1};
MPI_Aint disposition[2];
Fragment FN;
MPI_Address(&FN.num, disposition);
MPI_Address(&FN.elt, disposition+1);
MPI_Aint base3 = disposition[0];
for (j=0; j <2; j++) disposition[j] -= base3;
MPI_Type_struct(2, l_bloc3,disposition, typeFRAGMENT,&MPI_FRAGMENT);
MPI_Type_commit(&MPI_FRAGMENT);
And i used MPI_scatter to send data for all processor,
MPI_Scatter(F, count, MPI_FRAGMENT, &rbuf, count, MPI_FRAGMENT, 0, MPI_COMM_WORLD);
for(i=0;i<count;i++)
{printf("%d \n",rbuf[i].num);
for(j=0;j<rbuf[i].num;j++)
{printf("%f ",rbuf[i].elt[j].val);}
}
I get the right value of "rbuf[i].num", but i can't read all values of "elt":
19: 35.000000
16: 10.000000
17:
=====================================================================================
= BAD TERMINATION OF ONE OF YOUR APPLICATION PROCESSES
= EXIT CODE: 11
= CLEANING UP REMAINING PROCESSES
= YOU CAN IGNORE THE BELOW CLEANUP MESSAGES
=====================================================================================
APPLICATION TERMINATED WITH THE EXIT STRING: Segmentation fault (signal 11)
Any help please.
Thanks.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/mpich-discuss/attachments/20120426/c2606915/attachment.htm>
More information about the mpich-discuss
mailing list