This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
自作クラスタ計算機:mpiによる並列計算 [2020/03/02 18:01] koudai [サンプルプログラム] |
自作クラスタ計算機:mpiによる並列計算 [2020/03/02 18:30] koudai [ノード間並列計算] |
||
---|---|---|---|
Line 2: | Line 2: | ||
* 実際にMPIを用いたノード内およびノード間の並列計算を行います | * 実際にMPIを用いたノード内およびノード間の並列計算を行います | ||
- | * 事前にOpenMPIやMPICH2などのMPIライブラリを管理ノードにインストールしてください | + | * 事前にOpenMPI, MPICH2, Intel MPIなどのMPIライブラリを管理ノードにインストールしてください |
* 例えばOpenMPIであれば次のようにインストールできます< | * 例えばOpenMPIであれば次のようにインストールできます< | ||
$ sudo apt install openmpi-bin libopenmpi-dev | $ sudo apt install openmpi-bin libopenmpi-dev | ||
</ | </ | ||
+ | * **同じコンピュータに複数のMPIを入れると競合を起こしてMPIが動かなくなることがあります** | ||
====== 準備 ====== | ====== 準備 ====== | ||
Line 107: | Line 107: | ||
$ mpiicc -o hello hello.c | $ mpiicc -o hello hello.c | ||
</ | </ | ||
- | * 試しに管理ノード(4スレッド)で走らせてみます< | + | * 試しに管理ノードで走らせてみます< |
$ 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 137: | Line 137: | ||
* オプション< | * オプション< | ||
- | * 計算ノードkeisan11とkeisan12にジョブを投げる場合は次のようにします< | + | * 計算ノードkeisan11, keisan12, keisan13にジョブを投げる場合は次のようにします< |
- | $ mpirun -n 4 --host keisan11, | + | $ mpirun -n 72 --host keisan11, |
- | Hello World! I am 0 of 4 from keisan11. | + | Hello World! I am 0 of 72 from keisan11. |
- | Hello World! I am 1 of 4 from keisan11. | + | Hello World! I am 1 of 72 from keisan12. |
- | Hello World! I am 2 of 4 from keisan12. | + | Hello World! I am 2 of 72 from keisan13. |
- | Hello World! I am 3 of 4 from keisan12. | + | Hello World! I am 3 of 72 from keisan11. |
+ | Hello World! I am 4 of 72 from keisan12. | ||
+ | Hello World! I am 5 of 72 from keisan13. | ||
+ | (以下略) | ||
</ | </ | ||
- | * MPIがプロセス数に応じて各ノードにスレッドを割り振ります | + | * MPIが各ノードにプロセスを割り振ります |
+ | * keisan11 -> keisan12 -> keisan13 -> keisan11 -> ... の順に割り振られて行きます | ||
====== 参考 ====== | ====== 参考 ====== |