Bonjour ,
me voila de retour avec un nouveau problème auquel je ne trouve des solutions .
alors en résumé :
je fait une allocation dynamique en UPC ( parallelisme ) mais je constate en mettant un printf dans cette fonction que seul le THREAD 0 a une affinité avec la boucle upc_forall et aucun d'autre donc si comme si il a tout les éléments de la matrice et donc aucune parallélisation .
voici le code :
et le resultat est simplement
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
19
20
21
22
23
24
25 shared float** malloc_matrice_2d(int vsize,int hsize) { int i = 0; shared float **matrix; shared float *imptr; matrix=(shared float **)upc_all_alloc(THREADS,(vsize*hsize/THREADS)*upc_elemsizeof(**matrix)); if (matrix==NULL) printf("upc_all_alloc : probleme d'allocation memoire"); imptr=(shared float*)upc_all_alloc(THREADS,hsize*vsize*upc_elemsizeof(*imptr)); if (imptr==NULL) printf("upc_all_alloc : probleme d'allocation memoire"); upc_forall(i=0;i<vsize;i++ , imptr+=hsize ; &matrix[i][0] ) { printf("MYTHREAD : %d \n" , MYTHREAD ); matrix[i]=imptr; } return matrix; }
si vous avez des propositions ou des solutions je vous remercie d'avance .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 MYTHREAD : 0 MYTHREAD : 0 MYTHREAD : 0 MYTHREAD : 0 MYTHREAD : 0 .....
Partager