OS X 10.8 "Mountain Lion" にアップグレードしたばかりですが、アップグレードしたことを後悔し始めています。
OpenMP を使用する (単純な) 並列コードをビルドできなくなりました。
あちらこちらを見て、Apple はもはや「gcc」ではなく「llvm」を使用していることを理解しました。これはおそらくライセンス関連の問題によるものです。残念ながら、'llvm' は (まだ?) OpenMP をサポートしていません。
OpenMP に基づく多くのプログラムが OS X で動作しなくなるとは信じられません。そこで私の質問は、Mountain Lion で OpenMP を有効にするにはどうすればよいですか?
Hristo Iliev の優れた回答を読んだ後、最初に思っていたよりも多くのことを見逃していると思います。
私はXCodeを使用していません。建物は CMake と make/gcc に基づいています。昨日、macports 経由で gcc 4.2 をインストールしましたが、今日の時点では、私のコードはまだソース形式のままです。これは、いくつかの奇妙な理由により、コンパイルを gcc に切り替えることができないためです (OpenMP に関連する同じエラー)。
現在の問題は、CMake が llvm コンパイラを使用し続けることです。ルート CMakeLists.txt に、次の 2 行を追加しました。
set(CMAKE_C_COMPILER "/opt/local/bin/gcc-apple-4.2")
set(CMAKE_CXX_COMPILER "/opt/local/bin/gcc-apple-4.2")
また、2 つの環境変数も追加しました。
export CXX=/opt/local/bin/gcc-apple-4.2
export CC=/opt/local/bin/gcc-apple-4.2
CMake が OpenMP ( FIND_PACKAGE(OpenMP) ) を見つけようとすると、次の出力が得られます。
-- The compiler is /opt/local/bin/gcc-apple-4.2
-- Try OpenMP C flag = [-fopenmp]
-- Performing Test OpenMP_FLAG_DETECTED
-- Performing Test OpenMP_FLAG_DETECTED - Failed
[...]
CMake Error at /opt/local/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:97 (message):
Could NOT find OpenMP (missing: OpenMP_C_FLAGS OpenMP_CXX_FLAGS)
Call Stack (most recent call first):
/opt/local/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:291 (_FPHSA_FAILURE_MESSAGE)
/opt/local/share/cmake-2.8/Modules/FindOpenMP.cmake:159 (find_package_handle_standard_args)
demo/CMakeLists.txt:8 (FIND_PACKAGE)
手動で実行しようとし/opt/local/bin/gcc-apple-4.2
ましたが、libgomp がないために失敗しました。
よろしく