Я использую OpenMP для повышения эффективности своей работы на циклах.
Но недавно я обнаружил, что на небольших циклах использование этой библиотеки уменьшило производительность и что использование обычного способа было лучше.
На самом деле, я бы хотел использовать openMP только в том случае, если условие выполнено, мой код
#pragma omp parallel for
for (unsigned i = 0; i < size; ++i)
do_some_stuff ();
Но я хочу отключить #pragma, если размер достаточно мал i.e.:
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 ();
}
Каков лучший способ сделать это?