You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenMP并行块输出异常:线程数不符合预期问题咨询

OpenMP在VS中并行块执行异常的问题

我编写了以下OpenMP代码,预期是创建最多10个线程来执行并行块:

#include <iostream>
#include <omp.h>
using namespace std;

int main()
{
    omp_set_num_threads(10);
#pragma omp parallel
    {
        int id = omp_get_thread_num();

        printf("%d %d %d\n", id, omp_get_num_threads(), omp_get_max_threads());
    }
    return 0;
}

但在VS中编译运行后,输出完全不符合预期:并行块执行了12次,所有线程的omp_get_num_threads()值均为1,且除第一个线程外,omp_get_max_threads()值为12,具体输出如下:

0 1 10
0 1 12
0 1 12
0 1 12
0 1 12
0 1 12
0 1 12
0 1 12
0 1 12
0 1 12
0 1 12
0 1 12

而在VS Code终端使用g++ -fopenmp .\openMp.c -o prog命令编译同一代码时,输出符合预期:

1 10 10
2 10 10
3 10 10
4 10 10
0 10 10
5 10 10
6 10 10
7 10 10
8 10 10
9 10 10

我已在VS中进行了如下配置:

  • 向「配置属性 > 链接器 > 输入 > 附加依赖项」中添加libomp.lib
  • 向「C/C++ > 附加选项」中添加-fopenmp -Xclang编译选项
  • 开启「C/C++ > 所有选项 > Open MP支持」为“是”

但我在MSVC安装目录中找不到libomp.dll。我的CPU为6核12逻辑处理器,请问为何会出现该异常,该如何解决?

内容的提问来源于stack exchange,提问作者maths soso

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 18:05:17