Problème allocation dynamique UPC Threads
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:
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:
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 .