This shows you the differences between two versions of the page.
数値計算ライブラリ:openmpi [2019/10/13 19:48] koudai [入手] |
数値計算ライブラリ:openmpi [2021/06/27 22:04] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== 概要 ====== | ||
- | * 共有メモリを使う並列計算ならばOpenMPが便利ですが、ワークステーションやスーパーコンピュータとなってくると分散メモリなのでMPIが必須になってきます。 | ||
- | * Intel Compilerとフリーで配布されているOpenMPIを組み合わせてMPI環境を作る方法を紹介します。 | ||
- | * 他にもフリーのMPI実装としてMPICHがありますが、どちらも性能はそんなに変わらないようです。 | ||
- | * OpenMPIとMPICHを同時に入れるとうまく動作しなくなるので、インストールはどちらか片方にしてください。 | ||
- | |||
- | ====== インストール ====== | ||
- | |||
- | ===== 検証環境 ===== | ||
- | |||
- | * Ubuntu 18.04 LTS | ||
- | |||
- | ===== 準備 ===== | ||
- | |||
- | 事前にmake, | ||
- | 入っていない場合は以下のようにして入手します。 | ||
- | < | ||
- | $ sudo apt install make build-essential gfortran | ||
- | </ | ||
- | |||
- | ===== 入手 ===== | ||
- | |||
- | 以下のサイトからダウンロードできます。 | ||
- | |||
- | * [[https:// | ||
- | |||
- | 記事執筆時点での最新版は4.0.2です。 | ||
- | |||
- | |||
- | ===== インストール ===== | ||
- | |||
- | ダウンロードしたファイルはホーム・ディレクトリにおいてください。 これを展開します。 | ||
- | < | ||
- | $ tar xzvf openmpi-4.0.2.tar.gz | ||
- | $ cd openmpi-4.0.2 | ||
- | </ | ||
- | |||
- | インストール前に、インストール先とコンパイラを指定します。 | ||
- | (注意!下にも書きましたが、2017年以降のIntel C/ | ||
- | < | ||
- | $ ./configure --prefix=/ | ||
- | </ | ||
- | 管理者権限を持っていない場合はprefix=/ | ||
- | < | ||
- | $ make all | ||
- | $ sudo su | ||
- | # source / | ||
- | # make install | ||
- | </ | ||
- | |||
- | ===== 環境設定 ===== | ||
- | |||
- | ~/ | ||
- | < | ||
- | MPIROOT=/ | ||
- | PATH=$MPIROOT/ | ||
- | LD_LIBRARY_PATH=$MPIROOT/ | ||
- | MANPATH=$MPIROOT/ | ||
- | export MPIROOT PATH LD_LIBRARY_PATH MANPATH | ||
- | </ | ||
- | できたら、コンピュータを再起動するか | ||
- | < | ||
- | $ source ~/.bashrc | ||
- | </ | ||
- | で再度読み込みます。 | ||
- | < | ||
- | $ mpif90 -v | ||
- | $ mpicc -v | ||
- | </ | ||
- | などで、インストールが成功したか確認できます。 | ||
- | |||
- | |||
- | ===== コンパイルと実行 ===== | ||
- | |||
- | コンパイルは、 | ||
- | *Fortranの場合< | ||
- | $ mpif90 -o test test.f90 | ||
- | </ | ||
- | * C++の場合< | ||
- | $ mpicc -o test test.cc | ||
- | </ | ||
- | でできます。 | ||
- | コンパイルオプションの付け方はインテルのコンパイラのときと同じです。 MPIで実行する場合は | ||
- | < | ||
- | $ mpirun -n 2 test | ||
- | </ | ||
- | ここで-nで指定してるのはプロセスの数(並列数)です。 | ||
- | |||
- | |||
- | ==== 注意 ==== | ||
- | |||
- | * OpenMPIの並列数は、最大でも物理コア数までにします。 | ||
- | * IntelのCPUだとハイパースレッディングにより論理コアが物理コアの2倍に見えますが、並列数を論理コア数にして計算すると実行速度が著しく低下することがあります。 | ||
- | * 最近のOpenMPIは並列数を物理コア数よりも大きくするとエラーが出るようになりました。 | ||
- | |||
- | |||
- | |||
- | ==== ホストファイルの使用 ==== | ||
- | |||
- | hostfile でホスト名とコア数を列挙したファイル。 | ||
- | < | ||
- | $ echo " | ||
- | </ | ||
- | などで作成する。 | ||
- | ユーザ全体に同じホストを利用させたい場合は %%$MPIROOT/ | ||
- | |||
- | 実行時は | ||
- | < | ||
- | $ mpirun --hostfile / | ||
- | </ | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | ===== Ubuntu 18.04のIntelコンパイラエラーが出る場合 ===== | ||
- | |||
- | Ubuntu18.04でIntel C/ | ||
- | < | ||
- | $ ./configure --prefix=/ | ||
- | |||
- | (中略) | ||
- | |||
- | ============================================================================ | ||
- | == Compiler and preprocessor tests | ||
- | ============================================================================ | ||
- | |||
- | *** C compiler and preprocessor | ||
- | checking for gcc... (cached) icc | ||
- | checking whether we are using the GNU C compiler... (cached) yes | ||
- | checking whether icc accepts -g... (cached) yes | ||
- | checking for icc option to accept ISO C89... (cached) none needed | ||
- | checking whether icc understands -c and -o together... (cached) yes | ||
- | checking for icc option to accept ISO C99... unsupported | ||
- | configure: WARNING: Open MPI requires a C99 compiler | ||
- | configure: error: Aborting. | ||
- | </ | ||
- | |||
- | |||
- | |||
- | |||
- | ====== 参考資料 ====== | ||
- | |||
- | * [[http:// |