Je vois radicalement différentes exécutions quand je prends une boucle for dans g++ 4.7.0
et à l'aide de
std::vector<double> x;
std::vector<double> y;
std::vector<double> prod;
for (int i = 0; i < 5000000; i++)
{
double r1 = ((double)rand() / double(RAND_MAX)) * 5;
double r2 = ((double)rand() / double(RAND_MAX)) * 5;
x.push_back(r1);
y.push_back(r2);
}
int sz = x.size();
#pragma omp parallel for
for (int i = 0; i< sz; i++)
prod[i] = x[i] * y[i];
le code de série (pas de openmp
) se déroule en 79 ms.
le "parallèle" le code est exécuté dans 29 mme.
Si je omettre l' for
et l'utilisation #pragma omp parallel
, le moteur d'exécution pousses jusqu'à 179ms,
ce qui est plus lent que le code de série. (la machine a hw simultanéité de 8)
le code des liens vers d' libgomp