为什么使用以下代码在执行时间方面有优势?
#pragma omp parallel for
for(i=0; i<size; i++)
{
#pragma omp critical
{
funcall1();
funcall2();
for(j=0;j<size2;j++)
{
funcall3();
}
}
}
它运行的是串行版本的两倍,但我不知道为什么
最佳答案
看起来第二个变量 j 可以进行范围优化,它有可能被展开。
关于c++ - OpenMP 临界区带来意想不到的性能提升,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7207373/