Estoy experimentando con OpenMP. Escribí un código para verificar su rendimiento. En una CPU Intel de 4 núcleos única con Kubuntu 11.04, el siguiente programa compilado con OpenMP es alrededor de 20 veces más lento que el programa compilado sin OpenMP. ¿Por qué?¿Por qué la versión OpenMP es más lenta?
He compilado por g ++ -g -O2 -funroll-bucles -march -fomit-frame-pointer = -fopenmp nativa
#include <math.h>
#include <iostream>
using namespace std;
int main()
{
long double i=0;
long double k=0.7;
#pragma omp parallel for reduction(+:i)
for(int t=1; t<300000000; t++){
for(int n=1; n<16; n++){
i=i+pow(k,n);
}
}
cout << i<<"\t";
return 0;
}
** Nunca he usado openMP ** pero me parece que la sobrecarga de crear múltiples hilos y sincronizar el acceso a los datos compartidos a través de esos hilos supera (mucho) la ganancia de distribuir el procesamiento en 4 núcleos diferentes. –
Pero 20 veces parece demasiado extremo. –
Si está tratando de verificar el rendimiento de OpenMP, sería una buena idea utilizar un código en paralelo mejor diseñado. –