OpenMP 线程在同一 CPU 核心上执行
- 论坛
- OpenMP 线程在同一 CPU 核心上执行
12 浏览
OpenMP 线程在同一 CPU 核心上执行
配置:Windows 10,mingw-x64,Core 2(4个逻辑核心)
以下代码
#include#include #include int main() { #pragma omp parallel { std::printf("在线程:%d 上执行任务,位于核心 #%d\n", omp_get_thread_num(),\ GetCurrentProcessorNumber()); } return 0; }
有时输出结果为:
在线程:1 上执行任务,位于核心 #1 在线程:0 上执行任务,位于核心 #2 在线程:2 上执行任务,位于核心 #2 在线程:3 上执行任务,位于核心 #2
虽然大多数情况下输出结果为:
在线程:2 上执行任务,位于核心 #1 在线程:1 上执行任务,位于核心 #3 在线程:0 上执行任务,位于核心 #2 在线程:3 上执行任务,位于核心 #0
这是预期的结果。
如何确保线程在不同的核心上具有亲和性?有没有一种方法可以强制调度程序这样做?