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

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

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

【问题讨论】:

    标签: macos openmp llvm-clang


    【解决方案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)。编辑:链接:stackoverflow.com/questions/47081991/…
    • 添加了如何获取/构建libomp
    • 如果答案相同,则投票关闭重复项。通常不赞成对多个问题发布相同的答案(不是线程,StackOverflow 上没有线程)。
    • 我相信另一种放置标志的方式是-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 还包含有关编译器标志的详细说明,以使其工作。
    猜你喜欢
    • 1970-01-01
    • 2018-03-10
    • 2023-03-21
    • 2019-01-09
    • 2017-11-07
    • 2018-07-10
    • 2018-06-21
    • 1970-01-01
    相关资源
    最近更新 更多