計算機クラスタ構築 第3回
進捗
2台で実行できるようになりました。
実行に必要な環境
プログラムを置く場所
すべてのノードに、同じ場所にプログラムを置く必要があるようです。例えば実行したいプログラムが、操作端末1において、
/home/mpiuser/src/a.out
にあるとします。この場合、他の計算ノードにおいても同じように
/home/mpiuser/src/a.out
にプログラムが存在する必要があります。よって、各ノードに並列プログラム実行用のユーザを追加するほうが良さそうです。一般的にはNFSで同じディレクトリをマウントするようです。しかし今回は計算ノードがArchLinuxだったり、LinuxMintだったり、さらにはハードにラズパイを追加する予定だったりするので、各種環境に合わせてコンパイルする必要があるため、scpで送ってコンパイルしてから実行するという面倒なやり方をします。
公開鍵認証SSH
各ノードにアクセスするときパスワードを要求されると実行できないらしいので、公開鍵を相互交換しておきます。
$ ssh-keygen -t rsa $ ssh-copy-id -i ~/.ssh/id_rsa.pub mpiuser@LinuxMint_nobuta
上記をすべての計算ノードで、相互にやります。
計算ノードの明記
実際にコマンドを打ったり操作する端末の適当な場所に、計算ノードを明記したファイルを作成します。~/.hostsに以下を記述しました。
ArchLinux_nobuta slots=4 linuxMint_nobuta slots=4
slotsはCPU数を記載するらしいです。恐らく生成可能な最大プロセス数だと思いますが、正確には確認してません。 実行時には、
mpirun -np 8 -hostfile ~/.hosts a.out
等と書きます。ここではプロセスが8個生成されるようです。
気をつけること
インストールされているのが、openMPIなのか、MPICHなのか確認すること。