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 :

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;
 
 }
et le resultat est simplement
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 
 
.....
si vous avez des propositions ou des solutions je vous remercie d'avance .