User Tools

Site Tools


数値計算ライブラリ:openmpi

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
数値計算ライブラリ:openmpi [2019/10/13 19:48]
koudai [検証環境]
数値計算ライブラリ:openmpi [2021/06/27 22:04] (current)
Line 2: Line 2:
  
   * 共有メモリを使う並列計算ならばOpenMPが便利ですが、ワークステーションやスーパーコンピュータとなってくると分散メモリなのでMPIが必須になってきます。   * 共有メモリを使う並列計算ならばOpenMPが便利ですが、ワークステーションやスーパーコンピュータとなってくると分散メモリなのでMPIが必須になってきます。
-  * Intel Compilerとフリーで配布されているOpenMPIを組み合わせてMPI環境を作る方法を紹介します。 +  * 他のオプンソースのMPI実装としてMPICHがありますが、どちらも性能はそんなに変わらないようです。 
-  * 他にもフリーのMPI実装としてMPICHがありますが、どちらも性能はそんなに変わらないようです。 +  * OpenMPIとMPICH (Intel Parallel Studio XE に含まれる Intel MPI も同様) を同時に入れるとうまく動作しなくなるので、インストールはどちらか片方にしてください。 
-  * OpenMPIとMPICHを同時に入れるとうまく動作しなくなるので、インストールはどちらか片方にしてください。+  * aptでも入手することができます<code> 
 +$ sudo apt install openmpi-bin libopenmpi-dev 
 +</code>
  
 ====== インストール ====== ====== インストール ======
Line 14: Line 16:
 ===== 準備 ===== ===== 準備 =====
  
-事前にmake, build-essential, gfortranのインストールが必要です。 +事前に[[数値計算ライブラリ:GCC]]のインストールを済ませください。
-入っていない場合は以下のようにして入手します +
-<code> +
-$ sudo apt install make build-essential gfortran +
-</code>+
  
 ===== 入手 ===== ===== 入手 =====
Line 26: Line 24:
   * [[https://www.open-mpi.org/|Open MPI: Open Source High Performance Computing]]   * [[https://www.open-mpi.org/|Open MPI: Open Source High Performance Computing]]
  
-記事執筆時点での最新版は1.6です。+記事執筆時点での最新版は4.0.2です。
  
  
Line 38: Line 36:
  
 インストール前に、インストール先とコンパイラを指定します。 インストール前に、インストール先とコンパイラを指定します。
-(注意!下にも書きましたが、2017年以降のIntel C/C++コンパイラではうまくコンパイルできません) 
 <code> <code>
-$ ./configure --prefix=/usr/local/openmpi CC=gcc CXX=g++ FC=gfortran+$ ./configure --prefix=/usr/local/openmpi-4.0.2 CC=gcc CXX=g++ FC=gfortran
 </code> </code>
-管理者権限を持っていない場合はprefix=/home/username/openmpiなどとすればよいでしょう。 そしてコンパイルします。+します。
 <code> <code>
 $ make all $ make all
-$ sudo su +$ sudo make install
-# source /home/username/.bashrc +
-make install+
 </code> </code>
  
Line 54: Line 49:
 ~/.bashrcを開いて、ファイルの最後に次の文を付け加えます。 ~/.bashrcを開いて、ファイルの最後に次の文を付け加えます。
 <file> <file>
-MPIROOT=/usr/local/openmpi+MPIROOT=/usr/local/openmpi-4.0.2
 PATH=$MPIROOT/bin:$PATH PATH=$MPIROOT/bin:$PATH
 LD_LIBRARY_PATH=$MPIROOT/lib:$LD_LIBRARY_PATH LD_LIBRARY_PATH=$MPIROOT/lib:$LD_LIBRARY_PATH
Line 60: Line 55:
 export MPIROOT PATH LD_LIBRARY_PATH MANPATH export MPIROOT PATH LD_LIBRARY_PATH MANPATH
 </file> </file>
-できたら、コンピュータを再起動するか+編集が終わったら
 <code> <code>
 $ source ~/.bashrc $ source ~/.bashrc
Line 82: Line 77:
 </code> </code>
 でできます。 でできます。
-コンパイルオプションの付け方はインテルのコンパイラのときと同じです。 MPIで実行する場合は+コンパイルオプションの付け方はgfortranやgcc, g++のときと同じです。 MPIで実行する場合は
 <code> <code>
 $ mpirun -n 2 test $ mpirun -n 2 test
Line 94: Line 89:
   * IntelのCPUだとハイパースレッディングにより論理コアが物理コアの2倍に見えますが、並列数を論理コア数にして計算すると実行速度が著しく低下することがあります。   * IntelのCPUだとハイパースレッディングにより論理コアが物理コアの2倍に見えますが、並列数を論理コア数にして計算すると実行速度が著しく低下することがあります。
   * 最近のOpenMPIは並列数を物理コア数よりも大きくするとエラーが出るようになりました。   * 最近のOpenMPIは並列数を物理コア数よりも大きくするとエラーが出るようになりました。
- 
- 
- 
-==== ホストファイルの使用 ==== 
- 
-hostfile でホスト名とコア数を列挙したファイル。 
-<code> 
-$ echo "localhost slots=$(grep processor /proc/cpuinfo | wc -l)" > hostfile 
-</code> 
-などで作成する。 
-ユーザ全体に同じホストを利用させたい場合は %%$MPIROOT/etc/openmpi-default-hostfile%% を編集する. 
- 
-実行時は 
-<code> 
-$ mpirun --hostfile /path/to/hostfile -n 2 test 
-</code> 
- 
- 
- 
- 
- 
- 
- 
- 
-===== Ubuntu 18.04のIntelコンパイラエラーが出る場合 ===== 
- 
-Ubuntu18.04でIntel C/C++コンパイラを使うと、configureで次のようなエラーが出てしまいます。 
-<code> 
-$ ./configure --prefix=/usr/local/openmpi CC=icc CXX=icpc F77=ifort FC=ifort 
- 
-(中略) 
- 
-============================================================================ 
-== 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. 
-</code> 
- 
- 
  
  
数値計算ライブラリ/openmpi.1570963683.txt.gz · Last modified: 2021/06/27 21:57 (external edit)