Ciao ragazzi, non riesco a capire perchè la parallelizzazione del ciclo for non fa variare le performances al variare del numero di threads:
-si tratta di un programma che fa la convoluzione 2d di una matrice, se può essere utile, e ripete la convoluzione per k terazioni-
for(int k=0;k<50;k++){
//export OMP_NUM_THREADS
sum =0;
#pragma omp for schedule(static)//nowait
for(int x=0;x<righe;++x){
for( y=0;y<colonne;++y){
for( i=0;i<righe_k;++i){
for(j=0;j<colonne_k;++j){
a = x+i-righe_k/2; if(a<0) a = righe+(x+i-righe_k/2); else if(a>=righe) a = a-righe;
b = y+j-colonne_k/2; if(b<0) b = colonne+(y+j-colonne_k/2); else if(b>=colonne) b = b-colonne;
sum = sum+matr[a]
*matr_k2[j];
}
}
temp_matr[x][y] = sum ;
sum=0;
}
}
#pragma omp barrier
#pragma omp for schedule(static)//nowait
for(int x=0;x<righe;++x){
for( z=0;z<colonne;++z){
matr[x][z]=temp_matr[x][z];
}
}
//#pragma omp barrier
}
}