OpenMPを使用してC++で並列プログラムを記述したいので、OpenMPを使い始めました。言い換えれば、私は初心者であり、そのインストール方法を説明する優れたOpenMPガイドが必要です。誰かがWindowsにOpenMPをインストールし、プログラムをコンパイルして実行する方法を知っていますか?
OpenMPはインストールするものではありません。コンパイラに付属しています。 OpenMPをサポートする適切なコンパイラが必要であり、通常はデフォルトで無効になっているため、OpenMPサポートを有効にする方法を知る必要があります。
Windowsの標準コンパイラはMicrosoftが提供し、Visual StudioのMicrosoft Visual C/C++コンパイラです。残念ながら、そのOpenMPサポートは少し時代遅れです-最新で最高のVisual Studioでさえ、OpenMP 2.0(2002年の古い標準バージョン)しかサポートしていません。 Visual StudioでOpenMPを使用する方法の詳細については、 こちら を参照してください。他にも利用可能なコンパイラがあります-インテルC/C++コンパイラ(商用ライセンスが必要)とGCC(無料で利用可能)の両方が新しいOpenMPバージョンをサポートし、他のコンパイラも利用できます。
OpenMP Webサイト こちら にアクセスして、OpenMPの学習を開始できます。また、Lawrence Livermore National LaboratoryのOpenMPに関する優れたチュートリアル here も利用できます。
OpenMPをWindows 10 PCで動作させるために私がやったことは次のとおりです。
g++ -v
を実行して、稼働していることを確認できますmingw-get upgrade --recursive "gcc<4.7.*" "gcc-g++<4.7.*"
これは「楽しい」部分です。現時点では、4.9。*バージョンでサポートされているlibgompライブラリがなかったため、gccは<omp.h>
を認識できませんでした。最後のサポートバージョンは4.7.2でした。これにより、ついにopenMPを実行できましたコンパイルするにはg++ -fopenmp myOpenMPFile.cpp -o myOpenMP
を実行し、そこからすべて動作します
gcc -fopenmp myOpenMPFile.cpp -o myOpenMP
はCコードでも機能します
OpenMPを私のWindows 10 PCで動作させるために私がしたことを共有したいと思います(2019年にはさらに簡単になりました)
MinGWディストリビューションをGCC 8.2.0コンパイラで here からインストールしました。ディストリビューションのメンテナはすでにwinpthreadsとOpenMPサポートをGCCに追加しています。
次のように-fopenmp
フラグを使用してコードをコンパイルしました:g++ -fopenmp main.cpp -o exec
注:MinGWディストリビューションは、多くの便利なライブラリ(Boost 1.69.0など)およびその他のユーティリティをサポートしています。とても便利だと思いました。