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