Bonjour,
je suis en train de développer une petite application // et rencontre un petit problème.
Je souhaite envoyer une structure en utilisant MPI_Datatype.
Voici la structure :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 typedef struct { float x,y,z,t; int n,m; } new; new vect[N];J'initialise un tableau de cette structure avec le rang 0 et l'envoi via le type newtype.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 MPI_Datatype newtype,oldtypes[2]; int blockcounts[2]; MPI_Aint extent, offsets[2]; MPI_Init(&argc, &argv); ierr = MPI_Comm_rank(MPI_COMM_WORLD, &rank); ierr = MPI_Comm_size(MPI_COMM_WORLD, &size); offsets[0] = 0; oldtypes[0] = MPI_FLOAT; blockcounts[0] = 4; MPI_Type_extent(MPI_FLOAT,&extent); offsets[1] = blockcounts[0]*extent; oldtypes[1] = MPI_INT; blockcounts[0] = 2; ierr = MPI_Type_struct(2, blockcounts, offsets, oldtypes, &newtype); ierr = MPI_Type_commit(&newtype);
Je reçois bien la structure, mais seulement les 2 premiers float de la structure sont corrects, les autres valeurs sont nulles.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 MPI_Isend(&vect[j],1,newtype,(i+1)%size,1,MPI_COMM_WORLD,&req);
Quelqu'un a une idée ?
Partager