Bonjour à tous,
J'ai une routine en C à paralléliser en utilisant OpenMP :
1 2 3 4 5 6 7 8 9 10 11 12 13
| void spmv(int n, int *rowptr, int *colind, double *val, double alpha, double *x, double beta, double *y){
int i, j;
for(i=0; i<n; i++){
y[i] = beta*y[i];
for(j=rowptr[i]; j<rowptr[i+1]; j++){
y[i] += alpha*val[j]*x[colind[j]];
}
}
return;
} |
J'ai déjà essayé de placer dans la seconde boucle un
#pragma omp parallel for reduction(+:y[i])
mais le langage n'accepte pas le type de y[i].
Au final, il n'y a pas d'interdépendances entre les y[i] dans la boucle principale, serait-il possible d'utiliser une parallélisation classique sur celle ci ?
Merci d'avance
Partager