この記事では、Appleが提供しているClang(XcodeやCommand Line Toolsに含まれるもの)でOpenMPを使ったコードをコンパイル可能にする方法を述べる。
前提
macでOpenMPを使えるようにする方法を調べると、homebrewでgccかllvmかclang-ompをインストールしましょう、という情報がほとんどだ。理由としては、Apple ClangではOpenMPが使えないので別のコンパイラが必要だから、とされている。
しかし、実はそんなことはなかった。少なくとも、コンパイラを丸ごとインストールする必要はない。
方法
※ 以下、Henry Schreiner氏による詳しい記事 https://iscinumpy.gitlab.io/post/omp-on-high-sierra/ からの抜粋です。
libompを入手する
brew install libomp
OpenMPのランタイム ライブラリがないとどうしようもないので、これは必要。
オプションを付けてコンパイルする
普通に -fopenmp
だけ付けてもコンパイルが通らないので
clang -Xpreprocessor -fopenmp -lomp myfile.cxx
とする。肝心なのはOpenMPプラグマを処理させるための -Xpreprocessor
オプション。リンク時には -lomp
も必要になる。
まとめ
libompだけインストールすればいいので簡潔。
今までのようにhomebrewでllvmをインストールしたり、どっちのclangが使われているのか気にしたりする必要がなくなって、開発環境の構築がだいぶ楽になった。