自作クラスタ計算機:mpiによる並列計算
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| 自作クラスタ計算機:mpiによる並列計算 [2020/03/03 17:06] – [ホストファイルによるジョブの投入] koudai | 自作クラスタ計算機:mpiによる並列計算 [2026/06/15 18:22] (current) – [SSHの導入] koudai | ||
|---|---|---|---|
| Line 2: | Line 2: | ||
| * 実際にMPIを用いたノード内およびノード間の並列計算を行います | * 実際にMPIを用いたノード内およびノード間の並列計算を行います | ||
| - | * 事前にOpenMPI, | + | * 事前にOpenMPI, |
| - | * Ubuntuではaptを使えばOpenMPIを簡単にインストールできるので、特にこだわりがなければお勧めです< | + | * / |
| - | $ sudo apt install openmpi-bin libopenmpi-dev | + | |
| - | </ | + | |
| - | * **複数のMPIを一つのコンピュータに入れると、競合を起こしてMPIが動かなくなります** | + | |
| ====== 準備 ====== | ====== 準備 ====== | ||
| Line 19: | Line 16: | ||
| * 出てきた数字がCPUあたりのコア数になります | * 出てきた数字がCPUあたりのコア数になります | ||
| * スレッド数< | * スレッド数< | ||
| - | * 表示される行数が スレッド数 = CPU数 × CPUあたりのコア数 に対応します。通常は論理コア数と物理コア数は等しいですが、Hyper-Threadingが有効の場合は論理コア数が物理コア数の2倍になります。 | + | * 表示される行数が スレッド数 = CPU数 × CPUあたりのコア数 に対応します。通常は論理コア数と物理コア数は等しいですが、Intel Hyper-Threadingが有効の場合は論理コア数が物理コア数の2倍になります。 |
| - | * Hyper-Threadingは見かけ上のコア数が2倍になる技術であり、並列計算プログラムで並列化効率が良い場合は逆に計算速度が著しく低下します。これは1つの物理コアに2つのジョブが投入されてしまうために発生します。 | + | * Hyper-Threadingは見かけ上のコア数が2倍になる技術です。2つのプロセスを1つのCPU物理コアで実行するときに、効率よくリソースを割り振ります |
| - | * スレッドごとの計算の重さのバランスが著しく悪く、1つのスレッドの計算が終わっているのに別のスレッドの計算は続いている、というような場合にのみ有効です。 | + | * OpenMPやMPIを使った並列計算をするときに物理コア数以上のプロセス数を割り当てても、トータルの計算速度にほとんどご利益がない(遅くなることもある)ことが多いです |
| - | * よくわからない場合は、BIOSを使ってHyper-Threadingをオフにするか、MPIでのジョブ投入時に並列数を物理コア数以下にすることが望ましいです。 | + | * BIOSからHyper-Threadingをオフにすることもできます |
| - | ===== SSHの導入 ===== | ||
| - | 管理ノードと計算ノードの間の通信はSSHで行います。 | ||
| - | * 現状のままだと管理ノードから計算ノードへ入る際にパスワードの入力が必要ですが、ジョブ投入のたびにパスワードを入力するのは現実的ではありません。 | ||
| - | * そこでパスフレーズなしのSSH鍵を作成することで、パスワードの入力を回避します | ||
| - | |||
| - | - 管理ノードのジョブを投げるユーザーのアカウント(以下ではsugimotoとします)にログインし、SSH鍵を作成します。パスフレーズを聞かれるところでは**なにも入力せずに**エンターを押します< | ||
| - | $ ssh-keygen -t rsa | ||
| - | Generating public/ | ||
| - | Enter file in which to save the key (/ | ||
| - | Created directory '/ | ||
| - | Enter passphrase (empty for no passphrase): | ||
| - | Enter same passphrase again: | ||
| - | Your identification has been saved in / | ||
| - | Your public key has been saved in / | ||
| - | The key fingerprint is: | ||
| - | SHA256: | ||
| - | The key's randomart image is: | ||
| - | +---[RSA 2048]----+ | ||
| - | | | | ||
| - | | . . .| | ||
| - | | + . . ..| | ||
| - | | o o . .. .| | ||
| - | | S . + .o.| | ||
| - | | .E B .+| | ||
| - | | ooo@ B.o| | ||
| - | | .++%oX.=o| | ||
| - | | . +o@B*..| | ||
| - | +----[SHA256]-----+ | ||
| - | </ | ||
| - | - 公開鍵を設置します< | ||
| - | $ cat ~/ | ||
| - | </ | ||
| - | * NFSサーバを設置しているので、管理ノードにおいてある鍵は計算ノードでも見えます | ||
| - | - 初回接続時に表示されるメッセージを抑制させます< | ||
| - | $ echo " | ||
| - | </ | ||
| - | - 権限を変更します< | ||
| - | $ chmod 600 ~/ | ||
| - | $ chmod 600 ~/ | ||
| - | $ chmod 700 ~/.ssh/ | ||
| - | </ | ||
| - | - 実際にパスワード無しで計算ノードにログインできるか確かめます< | ||
| - | $ ssh keisan11 | ||
| - | </ | ||
| ====== 並列計算 ====== | ====== 並列計算 ====== | ||
| Line 83: | Line 36: | ||
| 次のコードを使って説明します | 次のコードを使って説明します | ||
| - | < | + | < |
| #include < | #include < | ||
| #include " | #include " | ||
自作クラスタ計算機/mpiによる並列計算.1583222774.txt.gz · Last modified: 2021/06/27 21:58 (external edit)
