我写了一个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核心上运行。
感谢您的帮助。