Невозможно получить скорость для простой параллели OpenMP для цикла - PullRequest
0 голосов
/ 01 ноября 2011

Это моя первая попытка использования OpenMP, но я не могу его ускорить.Машина является Linux amd_64.Я кодировал следующий код:

printf ("nt = %d\n", nt);
omp_set_num_threads(nt);

int i, j, s;
#pragma omp parallel for private(j,s)
for (i=0; i<10000; i++)
{
   for (j=0; j<100000; j++)
   {
      s++;
   }
}


And the compile with
g++ tempomp.cpp -o tomp -lgomp

And run it with different nthreads, no speedup:

nt = 1
elapsed time =2.670000

nt = 2
elapsed time =2.670000

nt = 12
elapsed time =2.670000

Есть идеи?

1 Ответ

4 голосов
/ 01 ноября 2011

Я думаю, вам нужно добавить флаг -fopenmp в ваш компилятор:

 g++ tempomp.cpp -o tomp -lgomp -fopenmp

Когда используется -fopenmp, компилятор будет генерировать параллельный код на основе встреченных директив OpenMP.-lgomp загружает библиотеки проекта OpenMP Gnu.

Сколько ядер у вашей машины?

...