我正在使用OpenMP来提高循环程序的效率。
但最近我发现,在小型循环中使用这个库会降低性能,而使用普通方法则更好。
实际上,我只想在满足条件时使用OpenMP,我的代码是
#pragma omp parallel for
for (unsigned i = 0; i < size; ++i)
do_some_stuff ();
但是我想要做的是,如果size太小,就禁用#pragma。
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 ();
}
有更好的方法吗?