OpenMP没有看到所有CPU

时间:2018-06-13 09:26:20

标签: c windows mingw openmp libgomp

我在Windows上使用OpenMP和MinGW。 GCC版本7.2.0 x86-64-posix-sev-rev1,由MinGW-W64项目构建。 在运行Windows Server 2016的2 x Xeon E5-2699 V4的计算机上。我正在运行:

printf("%d ", omp_get_num_procs());
printf("%d ", omp_get_max_threads());
printf("%d ", omp_get_thread_limit());
printf("%d ", omp_get_proc_bind());

产生:

44, 44, 2147483647, 0

共有44个物理核心共有超线程。 OpenMP根本没有看到其中一个CPU。

编辑: 在确认相同的代码与CLang正确工作并查看libgomp的来源后,我发现它与libgomp的实现有关。他们使用旧的方式来计算Windows上的处理器(迭代GetProcessAffinityMask的输出,只有在系统上的逻辑核心少于64个时才有效)

0 个答案:

没有答案