我有 4 核计算机和 OMP 应用程序,有 2 个繁重的任务。
int main()
{
#pragma omp parallel sections
{
#pragma omp section
WeightyTask1();
#pragma omp section
WeightyTask2();
}
return 0;
}
每项任务都有这样重要的部分:
#omp pragma parallel for
for (int i = 0; i < N; i++)
{
...
}
我用编译程序-fopenmp
参数,制作export OMP_NUM_THREADS=4
.
The problem就是它仅加载两个核心。如何在我的任务中使用所有核心?
我最初的反应是:你必须声明更多的并行性。
您定义了两个可以并行运行的任务。 OpenMP 在两个以上内核上运行它的任何尝试都会减慢您的速度(因为缓存局部性和可能的错误共享)。
Edit如果并行 for 循环的数量很大(例如,迭代次数不低于 8 次),并且您没有看到使用超过 2 个核心,请查看
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)