Я использую 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 ();
}
Как лучше это сделать?