Openmp线程关联:在程序中设置2个线程,运行多少个核心?

时间:2017-01-05 13:17:27

标签: c++ multithreading scheduled-tasks openmp affinity

我写了一个Openmp程序,在一台双核机器上运行它。

当我将线程编号从1更改为2而从2更改为4时,我无法将速度提高2倍。

2个线程到4个线程,这就是超线程。由于资源限制,超线程通常无法加速2倍。

然而,1个线程到2个线程,仍然无法获得2倍速,我对此感到困惑。我搜索并发现了CPU亲和概念,但我无法弄清楚Openmp是如何工作的。

当我使用2个线程时,Openmp静态计划是否将2个线程安排为1个核心或2个核心?

omp_get_thread_num()函数无法告诉我答案,因为返回值为0或1,但我不知道它们是在1核心还是2核心上运行。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

可以使用与 proc_bind

的线程关联

关闭 enter image description here

传播 enter image description here

enter image description here

我希望这会帮助您选择合适的选项。