OpenMP: условное использование #pragma

Я использую OpenMP для повышения эффективности моей программы в циклах.

Но недавно я обнаружил, что на малых циклах использование этой библиотеки снижает производительность и что использование обычного способа лучше.

На самом деле, я бы хотел использовать openMP только при выполнении условия, мой код

#pragma omp parallel for
 for (unsigned i = 0; i < size; ++i)
   do_some_stuff ();

Но я хочу отключить #pragma, если size достаточно мал, т.е. :

if (size > OMP_MIN_VALUE)
  #pragma omp parallel for
for (unsigned i = 0; i < size; ++i)
do_some_stuff ();

Но не работает, лучше написать цикл дважды, но я не хочу этого делать ...

if (size > OMP_MIN_VALUE)
{
  #pragma omp parallel for
  for (unsigned i = 0; i < size; ++i)
    do_some_stuff ();
}
else
{
  for (unsigned i = 0; i < size; ++i)
    do_some_stuff ();
}

Как лучше это сделать?

12
задан Flexo 14 September 2011 в 08:46
поделиться