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个子目录:include
和lib
,分别作为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失败,使用已购页面再试一次怎么弄
markdown 在macOS High Sierra上安装多个Java版本