数値計算ライブラリ:openmpi
This is an old revision of the document!
概要
- 共有メモリを使う並列計算ならば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
入手
インストール
ダウンロードしたファイルはホーム・ディレクトリにおいてください。 これを展開します。
$ tar xzvf openmpi-4.0.2.tar.gz $ cd openmpi-4.0.2
インストール前に、インストール先とコンパイラを指定します。
$ ./configure --prefix=/usr/local/openmpi CC=gcc CXX=g++ FC=gfortran
管理者権限を持っていない場合は prefix=/home/username/openmpi などとすればよいでしょう。 そしてコンパイルします。
$ make all $ sudo make install
環境設定
~/.bashrcを開いて、ファイルの最後に次の文を付け加えます。
MPIROOT=/usr/local/openmpi PATH=$MPIROOT/bin:$PATH LD_LIBRARY_PATH=$MPIROOT/lib:$LD_LIBRARY_PATH MANPATH=$MPIROOT/share/man:$MANPATH 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, g++のときと同じです。 MPIで実行する場合は
$ mpirun -n 2 test
ここで-nで指定してるのはプロセスの数(並列数)です。
注意
- OpenMPIの並列数は、最大でも物理コア数までにします。
- IntelのCPUだとハイパースレッディングにより論理コアが物理コアの2倍に見えますが、並列数を論理コア数にして計算すると実行速度が著しく低下することがあります。
- 最近のOpenMPIは並列数を物理コア数よりも大きくするとエラーが出るようになりました。
参考資料
数値計算ライブラリ/openmpi.1583908941.txt.gz · Last modified: 2021/06/27 21:57 (external edit)