web-dev-qa-db-ja.com

OpenMPはHighSierra LLVMで利用できますか?

Apple、High Sierraで提供されるデフォルトのLLVMで、OpenMPがついに利用可能になりましたか?メインのLLVMで1年以上利用可能になりました。

(質問をする別の方法は、LLVMのどのバージョンが新しいApple LLVMに基づいているか)かもしれません)

9
Henry Schreiner

標準の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_へのパスとして使用する必要があります。

C++はOpenMPでコンパイル可能でMacOSでブーストできますか? に対する私の答えも参照してください。

8
Alexey Bataev

いいえ、そうではありません(公式には)。 Apple LLVMはおおよそ4.0に基づいていますが、OpenMPモジュールは省略されています。オフロードターゲットを設定するためのヘルプに残りのOpenMPオプションも表示されますが、OpenMPはサポートされていません。

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

Apple、OpenMPを追加することは、科学研究者にとって大きな恩恵になるでしょう!

注:BrewはOpenMPライブラリーの構築をサポートしています!使用する:

brew install libomp

ユーザーがターゲットシステムを使用している場合、CMake3.12で正しいコンパイルおよびリンクラインOpenMPを取得できるようにするパッチがCMakeに受け入れられました。

3
Henry Schreiner