Salut,
J'ai donc remplacé mes fonctions static inline void par void. Du coup mes résultats de sortis sont enfin des chiffres et non plus des "nan". 
Donc OpenMP n'aime pas les fonctions static inline !!!!
J'ai toujours le problème sur mes variables globales (fn_par[N], ft_par[N], fn_mur[N]) car elles ne sont pas partagées par les différents threads.
Donc la solution est de créer des variables locales fn_par'[N1], ft_par'[N1], fn_mur'[N1], avec N1 la taille du tableau qui est égale à:
N1=N*omp_get_num_threads().
Ensuite je ferai :
1 2 3 4 5 6 7 8
| #pragma omp for private(i,j)
for(i=0; i<N;++i)
for(j=0; j<omp_get_num_threads();++j)
{
fn_par[N] += fn_par'[i+N*j];
ft_par[N] += ft_par'[i+N*j];
fn_mur[N] += fn_mur'[i+N*j];
} |
Pas simple à comprendre, mais c'est la seule solution (enfin je pense !!!) pour que les threads n'écrivent pas en même temps dans les variables globales et pour que je puisse avoir la bonne valeur à la fin.
Pas sûre que je gagne tant de temps que cela, à voir !!! En tout cas, mille mercis à toi pour t'être plongé sur mon problème.
Jf
Partager