Je développe la version 3D d'un code utilisant la bibliothèque MPI (Message Passing Interface). Dans ce code, j'échange des tableaux 2D entre différents processus grâce à la fonction "MPI_Sendrecv".
Pour cela, mon tableau 3D doit être dynamiquement alloué et contigu en mémoire selon les dimensions x[size_tot_y][size_tot_x][size_tot_z]. Voici ce que j'ai essayé :
Malheureusement, j'ai des segmentations fault à l'exécution.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 x = malloc(size_tot_y * sizeof(*x)); for (i = 0; i < size_tot_y; i++) { x[i] = malloc(size_tot_x * sizeof(**x)); for (j = 0; j < size_tot_x; j++) { x[i][j] = malloc(size_tot_z * sizeof(***x)); } }
Dans la version 2D de ce code, j'alloue dynamiquement des tableaux 2D contigus de la manière suivante :
quel est selon vous la version 3D de cette allocation ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 x0 = malloc(size_tot_y*sizeof(double*)); x0_vals = malloc(size_tot_x*size_tot_y*sizeof(double)); for(j=0;j<=size_tot_y-1;j++) { x0[j] = &x0_vals[j*size_tot_x]; }
Partager