OpenMPをMac OSX 10.11で実行するには、どうすればスクリプトを実行できますかvia via?
OpenMPをインストールしました:brew install clang-omp
。
たとえば、実行するとgcc -fopenmp -o Parallel.b Parallel.c
次の式が返されます:fatal error: 'omp.h' file not found
私も試してみました:brew install gcc --without-multilib
ですが、残念ながらこれは最終的に(最初にいくつかの依存関係をインストールした後)を返しました:
The requested URL returned error: 404 Not Found
Error: Failed to download resource "mpfr--patch"
推奨される回避策はありますか?
Macでは、コマンドgccはClangへのシンボリックリンクです。したがって、gcc -fopenmp -o your_program your_program.c
を呼び出すことで、実際にはClangを使用していることになります。これは、これまでOpenMPの組み込みサポートがありませんでした。
Clangの新しいバージョンは、 this post(セットアップ方法の説明もあります)に従ってOpenMPをサポートしています。
一方、まだgccを使用したい場合は、私のために働いたステップをガイドできます。
Brewでgccをインストールします。使用したコマンドは動作するはずです:brew install gcc --without-multilib
または、brewにgccがすでにインストールされていると表示されている場合は、brew reinstall gcc --without-multilib
を試すことができます
お気付きかもしれませんが、--without-multilib
を指定しない場合、brewはOpenMPが機能しない可能性があることを警告します。
新しくインストールされたgccの場所を見つけます。 Brewは、コマンドラインツールによってインストールされたバージョンと競合しないように、gccにバージョン番号を追加します。シンボリックリンクはusr/local/bin
にあります。私の場合、usr/local/bin/gcc-5
です。右クリックして「オリジナルを表示」を選択すると、gcc-5実行可能ファイルが/usr/local/Cellar/gcc/5.3.0/bin/gcc-5
に表示されます(バージョン番号は異なる場合があります)。
次に、システムにそのことを伝える必要があります。コンパイラを呼び出すとき、bashは/usr/bin
ではなくデフォルトで/usr/local/bin
を調べます。このディレクトリを$ PATHに追加する必要があります。これは次のコマンドで簡単に実行できます。
PATH=/usr/local/bin:$PATH
これで、OpenMPを有効にしてコンパイルできるようになります:
gcc-5 -fopenmp -o your_program your_program.c
注:gcc-5は私がインストールしたバージョンであり、異なる場合があります。
clang-ompをインストール
brew install clang-omp
必ずコマンドラインツールをXcodeしてください
xcode-select --install
サンプルのopenmpコードの実行中に実際に1つのエラーが発生しました
/usr/local/opt/libiomp/include/libiomp/omp.h:139:21: error: expected ';' after top level declarator extern void __ KAI_KMPC_CONVENTION kmp_set_stacksize_s (size_t);
__からKAIの間にある1つのスペースをファイルから削除するだけです
次のコマンドを使用します
clang-omp -fopenmp helloopenmp.c
次のコードを実行します
#include <omp.h>
#include <stdio.h>
int main() {
#pragma omp parallel
printf("Hello from thread %d, nthreads %d\n", omp_get_thread_num(), omp_get_num_threads());
}
次のような出力が得られるはずです
Hello from thread 3, nthreads 4
Hello from thread 2, nthreads 4
Hello from thread 0, nthreads 4
Hello from thread 1, nthreads 4
OS X 10.11.3で動作し、2016年2月18日に作成されたbrewアップデートで
brew reinstall gcc --without-multilib
gcc-8 -Wall -fopenmp your-parallel-program.c
gcc-8に注意してくださいバージョンbrew installs、あなたのものかもしれませんgcc- 7またはgcc-9
==> Pouring gcc-8.2.0.high_sierra.bottle.1.tar.gz ???? /usr/local/Cellar/gcc/8.2.0: 1,495 files, 344.8MB
それでおしまい!
Brewを使用してgccをインストールします。
brew install gcc
Gccがインストールされていることを確認してください。
$which g++-7
/usr/local/bin/g++-7
Cmake cxxコンパイラを変更します。
cmake -DCMAKE_CXX_COMPILER=g++-7
make
たぶんこれはあなたを助けるでしょう。
brew install cmake
brew install gcc --without-multilib
cmake -DCMAKE_CXX_COMPILER=g++-6 ..
make -j
Gccのインストール後:
brew install gcc --without-multilib
エクスポートパス:
export PATH=/usr/local/bin:$PATH
CCをエクスポートする必要があるかもしれません。
export CC=/usr/local/bin/gcc
これはおそらくgcc-7などです。