User Tools

Site Tools


自作クラスタ計算機:mpiによる並列計算

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
Next revision Both sides next revision
自作クラスタ計算機:mpiによる並列計算 [2020/03/02 17:29]
koudai [SSHの導入]
自作クラスタ計算機:mpiによる並列計算 [2020/03/02 18:11]
koudai [概要]
Line 2: Line 2:
  
   * 実際にMPIを用いたノード内およびノード間の並列計算を行います   * 実際にMPIを用いたノード内およびノード間の並列計算を行います
-  * 事前にOpenMPIMPICH2などのMPIライブラリを管理ノードにインストールしてください+  * 事前にOpenMPIMPICH2, Intel MPIなどのMPIライブラリを管理ノードにインストールしてください
   * 例えばOpenMPIであれば次のようにインストールできます<code>   * 例えばOpenMPIであれば次のようにインストールできます<code>
 $ sudo apt install openmpi-bin libopenmpi-dev $ sudo apt install openmpi-bin libopenmpi-dev
 </code> </code>
 +  * **同じコンピュータに複数のMPIを入れると競合を起こしてMPIが動かなくなることがあります**
  
 ====== 準備 ====== ====== 準備 ======
Line 70: Line 70:
 $ ssh keisan11 $ ssh keisan11
 </code> </code>
 +
 ====== 並列計算 ====== ====== 並列計算 ======
  
Line 106: Line 107:
 $ mpiicc -o hello hello.c   # Intel MPIを使用する場合 $ mpiicc -o hello hello.c   # Intel MPIを使用する場合
 </code> </code>
-  * 管理ノード(4スレッド)で走らせてみます<code>+  * 試しに管理ノードで走らせてみます<code>
 $ mpirun -n 4 hello $ mpirun -n 4 hello
 Hello World! I am 0 of 4 from kanri. Hello World! I am 0 of 4 from kanri.
Line 114: Line 115:
 </code> </code>
  
 +
 +
 +===== ノード内並列計算 =====
 +
 +指定した計算ノードにジョブを投げてみます。
 +
 +  * MPIで指定のホストに投げる場合は、オプション<nowiki>--host</nowiki>でホスト名を指定します
 +  * 計算ノードのkeisan11にジョブを投げる場合は次のようにします<code>
 +$ mpirun -n 24 --host keisan11 hello
 +Hello World! I am 0 of 24 from keisan11.
 +Hello World! I am 1 of 24 from keisan11.
 +Hello World! I am 2 of 24 from keisan11.
 +Hello World! I am 3 of 24 from keisan11.
 +(以下略)
 +</code>
 +
 +
 +===== ノード間並列計算 =====
 +
 +複数の計算ノードにわたるジョブを投げてみます。
 +
 +  * オプション<nowiki>--host</nowiki>で複数のホスト名を指定します
 +  * 計算ノードkeisan11とkeisan12にジョブを投げる場合は次のようにします<code>
 +$ mpirun -n 4 --host keisan11,keisan12 hello
 +Hello World! I am 0 of 4 from keisan11.
 +Hello World! I am 1 of 4 from keisan11.
 +Hello World! I am 2 of 4 from keisan12.
 +Hello World! I am 3 of 4 from keisan12.
 +</code>
 +    * MPIが各ノードに均等にプロセスを割り振ります
 +    * 並列計算におけるスレッド間の通信を考えたとき、ノード間の通信はノード内の通信に比べて非常に遅いです。できるだけ通信をしないようなプログラムが要求されます。
  
 ====== 参考 ====== ====== 参考 ======
自作クラスタ計算機/mpiによる並列計算.txt · Last modified: 2023/12/26 23:43 by koudai