Bonjour à tous,

J'ai une routine en C à paralléliser en utilisant OpenMP :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
#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