OpenMP 在 High Sierra LLVM 中可用吗?

Posted

技术标签:

【中文标题】OpenMP 在 High Sierra LLVM 中可用吗?【英文标题】:Is OpenMP available in High Sierra LLVM? 【发布时间】:2017-11-06 21:45:49 【问题描述】:

在苹果在 macOS 10.13 中提供的默认 LLVM High Sierra 中,OpenMP 终于可用了吗?它已经在主 LLVM 中可用一年多了。

(问这个问题的另一种方式可能是新的 Apple LLVM 是基于哪个版本的 LLVM)

【问题讨论】:

【参考方案1】:

标准 Apple 的 clang 支持 OpenMP。他们只是禁用了驱动程序选项。但是您可以通过这种方式使用前端选项:clang -Xclang -fopenmp <you_program> -I <path to omp.h> -L <path to libomp.dylib> -lomp

另外,您需要设置 DYLD_LIBRARY_PATH 环境变量:export DYLD_LIBRARY_PATH=<path to libomp.dylib>

如何获取/构建 libomp。

$ cd
$ svn co http://llvm.org/svn/llvm-project/openmp/trunk libomp
$ cd libomp
$ mkdir build && cd build
$ cmake -DCMAKE_INSTALL_PREFIX=~/libomp/openmp
$ make && make install

这个目录~/libomp/openmp之后会有2个子目录:includelib,分别作为omp.h的路径和libomp.dylib的路径。

另见我对Is C++ compilable with OpenMP and boost on MacOS?的回复

【讨论】:

有两件事会极大地帮助这个答案:另一个线程的链接,以及一个人应该获得 libomp.a 的方式的提及(或链接)。我之前尝试过按照您的建议进行操作,但是缺少其中一个步骤(或者使用了不正确的 libomp)。编辑:链接:***.com/questions/47081991/… 添加了如何获取/构建libomp 如果答案相同,则投票关闭重复项。通常不赞成对多个问题发布相同的答案(不是线程,*** 上没有线程)。 我相信另一种放置标志的方式是-Xpreprocessor -fopenmp,因为-Xclang 似乎没有记录。我根据您的建议在这里添加了一个自制公式 PR:github.com/Homebrew/homebrew-core/pull/20589。 Valadimir F,我的问题比那个问题早 5 个月,他要求任何方法让 OpenMP 在 macOS 上与 Boost 一起工作,而不是我关于如何在系统默认 Apple 中获取 OpenMP 的具体问题Clang,所以我认为它们足够不同,可以有不同的正确答案。【参考方案2】:

不,它不是(官方)。 Apple LLVM 大致基于 4.0,但省略了 OpenMP 模块。您甚至可以在设置卸载目标的帮助中看到剩余的 OpenMP 选项,但它不支持 OpenMP。

$ clang++ --help | grep openmp
  -fopenmp-targets=<value>

Apple,添加 OpenMP 将是科学研究人员的一大福音!

注意:Brew 支持构建 OpenMP 库!使用:

brew install libomp

CMake 已接受一个补丁,如果用户使用目标系统,该补丁将允许用户在 CMake 3.12 中获得正确的编译和链接行 OpenMP。

【讨论】:

+1 这比从源代码构建更好(对我来说)。 Brew 还包含有关编译器标志的详细说明,以使其工作。

以上是关于OpenMP 在 High Sierra LLVM 中可用吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式在 macOS Sierra/High Sierra 上创建 PPTP *** 连接?

下载macOS high sierra失败,使用已购页面再试一次怎么弄

macos high sierra怎么安装

markdown 在macOS High Sierra上安装多个Java版本

markdown 在macOS High Sierra上安装多个Java版本

如何制作macos high sierra安装u盘