11
我使用OpenMP来提高循环中的程序效率。OpenMP:有条件地使用#pragma
但最近我发现,在小循环中使用这个库降低了性能,并且使用正常的方式更好。
其实,我想使用的OpenMP只有当条件满足时,我的代码是
#pragma omp parallel for
for (unsigned i = 0; i < size; ++i)
do_some_stuff();
但我想要做的是禁用的#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();
}
有什么更好的方法来做到这一点?
我用#pragma omp parallel for if(size> = OMP_MIN_VALUE) – Arthur