This shows you the differences between two versions of the page.
数値計算ライブラリ:openmpi [2020/03/28 19:19] koudai [インストール] |
数値計算ライブラリ:openmpi [2021/06/27 22:04] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== 概要 ====== | ||
- | * 共有メモリを使う並列計算ならばOpenMPが便利ですが、ワークステーションやスーパーコンピュータとなってくると分散メモリなのでMPIが必須になってきます。 | ||
- | * Intel Compilerとフリーで配布されているOpenMPIを組み合わせてMPI環境を作る方法を紹介します。 | ||
- | * 他にもフリーのMPI実装としてMPICHがありますが、どちらも性能はそんなに変わらないようです。 | ||
- | * OpenMPIとMPICH (Intel Parallel Studio XE に含まれる Intel MPI も同様) を同時に入れるとうまく動作しなくなるので、インストールはどちらか片方にしてください。 | ||
- | |||
- | ====== インストール ====== | ||
- | |||
- | ===== 検証環境 ===== | ||
- | |||
- | * Ubuntu 18.04 LTS | ||
- | |||
- | ===== 準備 ===== | ||
- | |||
- | 以下のパッケージのインストールが必要です。 | ||
- | < | ||
- | $ sudo apt install build-essential gfortran | ||
- | </ | ||
- | |||
- | ===== 入手 ===== | ||
- | |||
- | 以下のサイトからダウンロードできます。 | ||
- | |||
- | * [[https:// | ||
- | |||
- | 記事執筆時点での最新版は4.0.2です。 | ||
- | |||
- | |||
- | ===== インストール ===== | ||
- | |||
- | ダウンロードしたファイルはホーム・ディレクトリにおいてください。 これを展開します。 | ||
- | < | ||
- | $ tar xzvf openmpi-4.0.2.tar.gz | ||
- | $ cd openmpi-4.0.2 | ||
- | </ | ||
- | |||
- | インストール前に、インストール先とコンパイラを指定します。 | ||
- | < | ||
- | $ ./configure --prefix=/ | ||
- | </ | ||
- | 管理者権限を持っていない場合は --prefix=/ | ||
- | < | ||
- | $ make all | ||
- | $ sudo 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 | ||
- | </ | ||
- | でできます。 | ||
- | コンパイルオプションの付け方はgfortranやgcc, | ||
- | < | ||
- | $ mpirun -n 2 test | ||
- | </ | ||
- | ここで-nで指定してるのはプロセスの数(並列数)です。 | ||
- | |||
- | |||
- | ==== 注意 ==== | ||
- | |||
- | * OpenMPIの並列数は、最大でも物理コア数までにします。 | ||
- | * IntelのCPUだとハイパースレッディングにより論理コアが物理コアの2倍に見えますが、並列数を論理コア数にして計算すると実行速度が著しく低下することがあります。 | ||
- | * 最近のOpenMPIは並列数を物理コア数よりも大きくするとエラーが出るようになりました。 | ||
- | |||
- | |||
- | ====== 参考資料 ====== | ||
- | |||
- | * [[http:// |