使用 clang-cl 用 openmp 编译 C 代码

Posted

技术标签:

【中文标题】使用 clang-cl 用 openmp 编译 C 代码【英文标题】:Compiling C code with openmp using clang-cl 【发布时间】:2016-05-13 22:08:59 【问题描述】:

我正在尝试使用 Clang-Cl(通过平台工具集中的 llvm-vs2014)和 openmp 代码在 Visual Studio 中编译 C 代码。当我使用 /openmp 启用 openmp 时,我在 clang-cl.exe 中收到一条警告,指出它在编译期间未使用,并且我的测试代码确认 openmp 无法正常工作。

此外,我已经使用 Microsoft CodeGen 尝试过 Clang 3.7,但它似乎还不支持 openmp(已通过代码验证)。

切换到 Visual Studio 2015 允许代码工作,但我的默认代码(没有任何 openmp)运行速度慢 50%。

有没有办法让 openmp 与 llvm-vs2014 平台工具集一起工作?我应该使用 Visual Studio 之外的东西来让它工作吗?

【问题讨论】:

你解决了吗? 我已经改用 mingw - w64 来处理我所有的 Windows C 代码 在什么 IDE 上? MinGW64 与 Clang? 只是一个文本编辑器和使用 gcc 的命令行 我在***.com/a/68378031/7268445 上发布的答案可能会对您/未来的读者有所帮助。 【参考方案1】:

你可以使用:

clang -Xclang -fopenmp -l .\libiomp5md.lib

(但请注意,这不是微软官方支持的)

显然,您必须拥有一份 OpenMP 运行时库。您可以从https://www.openmprtl.org/ 获取并构建它。

或者,您可以自己构建 clang 编译器以及 OpenMP RTL,来自 http://clang.llvm.org/。

【讨论】:

请提供预构建的运行时。 预构建的 OpenMP 运行时包含在 clang Windows/Linux/FreeBSD 二进制文件中:llvm.org/releases/download.html 确实如此。从 3.8 版开始就是这样。您能否在答案中添加它,然后我删除我的反对票。 他们在 5.0.2 中有它,但在 6.0.0 中停止了(其中不包括 OpenMP)。有没有办法通过clang-cl.exe 启用 OpenMP?

以上是关于使用 clang-cl 用 openmp 编译 C 代码的主要内容,如果未能解决你的问题,请参考以下文章

用 ISPC 编译器编译 OpenMP 程序

VS2019 中的 Clang 选项

使用带有 NMake 样式 Makefile 的 clang-cl 无法回显

如何用openmp编译c ++? (在Windows 10中使用g ++)

使用非线程安全随机数生成器在 C 中为 pi monte carlo 更正 OpenMP 编译指示

无法用 openmp 编译