Le concept de base du traitement de donnée que nous allons faire.
#pragma omp parallel
{
const int NB_THREAD = OmpTools::getNbThread();
const int TID = OmpTools::getTid();
int s = TID;
while(s < WH)
{
work(s);
s += NB_THREAD;
}
} // Barrière de synchronisation impliciteOMP permet de faire du traitement parallèle très facilement, on peut typiquement transformer un comportement séquentiel for en comportement parallèle :
for (int i = 1; i <= n; i++)
{
double xi = i*DX;
sum += fpi(xi);
}
return sum*DX;devient
#pragma omp parallel for reduction(+:sum)
for (int i = 1; i <= n; i++)
{
double xi = i*DX;
sum += fpi(xi);
}
return sum*DX;En une seule ligne le traitement devient parallèle et la réduction est faite automatiquement.