如何让OpenMP线程或任务运行在某个核心上

问题描述 投票:0回答:1

有没有办法让OMP线程或任务在某个核心上运行?
我找到了this,点击了链接,但我找不到源代码来测试它。这也是英特尔的解决方案(我认为)。 OMP 本身支持这个吗?

multithreading openmp cpu-cores
1个回答
5
投票

据我所知,从 OpemMP 3.0 开始,它们都是供应商特定的扩展。

例如,GOMP(GCC 的实现)遵循环境变量

GOMP_CPU_AFFINITY
来设置线程关联性。

在他们的文档中,他们给出了示例:

GOMP_CPU_AFFINITY="0 3 1-2 4-15:2"

他们说:

将第一个线程绑定到 CPU 0,第二个线程绑定到 CPU 3,第三个线程绑定到 CPU 0。 到 CPU 1,第四个到 CPU 2,第五个到 CPU 4,第六个到 CPU 第十个分别到CPU 6、8、10、12和14,然后启动 从列表的开头分配回来。 GOMP_CPU_AFFINITY=0 将所有线程绑定到 CPU 0

© www.soinside.com 2019 - 2024. All rights reserved.