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/03 16:47]
koudai [ホストファイルによるジョブの投入]
自作クラスタ計算機:mpiによる並列計算 [2020/03/08 17:41]
koudai [概要]
Line 6: Line 6:
 $ sudo apt install openmpi-bin libopenmpi-dev $ sudo apt install openmpi-bin libopenmpi-dev
 </code> </code>
 +    * aptで導入する場合は、すべてのノードでパッケージのインストールを行ってください
   * **複数のMPIを一つのコンピュータに入れると、競合を起こしてMPIが動かなくなります**   * **複数のMPIを一つのコンピュータに入れると、競合を起こしてMPIが動かなくなります**
  
Line 74: Line 75:
  
 作業は全て管理ノードで行います 作業は全て管理ノードで行います
-  * 生成したプログラムは管理ノードのNFSサーバの機能により全ノードに配布されます+  * mpirunを実行するノード(管理ノード)とプログラムを動かすノード(計算ノード)が異なる場合、mpirunを実行したノードと同じ名前ディレクトリに移動してプログラムを動かす仕組みになっています 
 +  * 今回生成したクラスタマシンでは、NFSサーバの機能により、管理ノードにあるプログラムが全ノードに配布されます 
  
  
Line 81: Line 84:
 次のコードを使って説明します 次のコードを使って説明します
  
-<file hello.c>+<file hello.c>
 #include <stdio.h> #include <stdio.h>
 #include "mpi.h" #include "mpi.h"
Line 121: Line 124:
 指定した計算ノードにジョブを投げてみます。 指定した計算ノードにジョブを投げてみます。
  
-  * MPIで指定のホストに投げる場合は、オプション<nowiki>-host</nowiki>でホスト名を指定します+  * MPIで指定のホストに投げる場合は、オプション<nowiki>-hosts</nowiki>でホスト名を指定します
   * 計算ノードのkeisan11にジョブを投げる場合は次のようにします<code>   * 計算ノードのkeisan11にジョブを投げる場合は次のようにします<code>
-$ mpirun -host keisan11 -n 8 ./hello+$ mpirun -hosts keisan11 -n 8 ./hello
 Hello world: rank 0 of 8 running on keisan11 Hello world: rank 0 of 8 running on keisan11
 Hello world: rank 1 of 8 running on keisan11 Hello world: rank 1 of 8 running on keisan11
Line 143: Line 146:
  
   * 計算ノードkeisan11, keisan12, keisan13にジョブを投げる場合は次のようにします<code>   * 計算ノードkeisan11, keisan12, keisan13にジョブを投げる場合は次のようにします<code>
-$ mpirun -host keisan11,keisan12,keisan13 -n 8 -ppn 2 ./hello+$ mpirun -hosts keisan11,keisan12,keisan13 -n 8 -ppn 2 ./hello
 Hello world: rank 0 of 8 running on keisan11 Hello world: rank 0 of 8 running on keisan11
 Hello world: rank 1 of 8 running on keisan11 Hello world: rank 1 of 8 running on keisan11
Line 161: Line 164:
  
   * OpenMPIの場合   * OpenMPIの場合
-<file - my_hosts>+<file - hosts.txt>
 keisan11 slots=2 keisan11 slots=2
 keisan12 slots=4 keisan12 slots=4
 </file> </file>
   * MPICH, Intel MPIの場合   * MPICH, Intel MPIの場合
-<file - my_hosts>+<file - hosts.txt>
 keisan11:2 keisan11:2
 keisan12:4 keisan12:4
Line 173: Line 176:
 次のように実行します 次のように実行します
 <code> <code>
-$ mpirun -n 6 -f my_hosts ./hello+$ mpirun -n 6 -f hosts.txt ./hello
 Hello world: rank 0 of 6 running on keisan11 Hello world: rank 0 of 6 running on keisan11
 Hello world: rank 1 of 6 running on keisan11 Hello world: rank 1 of 6 running on keisan11
Line 182: Line 185:
 </code> </code>
     * プロセスは keisan11 -> keisan11 -> keisan12 -> keisan12 -> keisan12 -> keisan12 -> keisan11 -> keisan11 -> keisan12 -> keisan12 -> keisan12 -> keisan12 -> keisan11 -> ... の順に割り振られて行きます     * プロセスは keisan11 -> keisan11 -> keisan12 -> keisan12 -> keisan12 -> keisan12 -> keisan11 -> keisan11 -> keisan12 -> keisan12 -> keisan12 -> keisan12 -> keisan11 -> ... の順に割り振られて行きます
-    * Intel MPIの場合は<nowiki>-f</nowiki>の代わりに<nowiki>-machine</nowiki>を使用してください+    * Intel MPIの場合は<nowiki>-f</nowiki>の代わりに<nowiki>-machinefile</nowiki>を使用してください
       * https://software.intel.com/en-us/articles/controlling-process-placement-with-the-intel-mpi-library        * https://software.intel.com/en-us/articles/controlling-process-placement-with-the-intel-mpi-library 
  
自作クラスタ計算機/mpiによる並列計算.txt · Last modified: 2023/12/26 23:43 by koudai