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