OpenMP无法看到所有CPU

OpenMP无法看到所有CPU,c,windows,mingw,openmp,libgomp,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("%

我在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个时才有效)