OpenMPIを使用して4つのノード(すべてFedora 22を実行)で構成されたクラスタを設定しようとしています。
マスターノードでパスワードのないキー(~/.ssh/id_dsa)を作成し、~/.ssh/id_dsa.pubを3つのスレーブノードの~/.ssh/authorized_keysにコピーしました。したがって、マスターノードで、、、を実行しssh slave1
てssh slave2
パスワードssh slave3
を入力しなくても、そのノードに正常に入ることができます。にも適用されますssh master
。
ただし、.thisを使用しようとしたときにmpirun
実行するコマンドは次のとおりです。
/usr/lib64/openmpi/bin/mpirun -np 32 --hostfile .mpi_hostfile ./testprogram
これは出力の最初のビットです。
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
ORTE was unable to reliably start one or more daemons.
その後、を実行すると、ssh slave3
「最後にログインに成功した後、ログイン試行が2回失敗しました」というメッセージが表示されます。したがって、mpirun
試みたSSH認証が何らかの理由で失敗したようです。
を使用してパスワードなしのキーベース認証を実行できますが、ssh
使用しない理由についてのアイデアはありますかmpirun
?
参考までに次のようになります.mpi_hostfile
。
# Host file for OpenMPI
# Master node, slots = num cores
localhost slots=8
# Slaves
slave1 slots=8
slave2 slots=8
slave3 slots=8
答え1
これは、Open MPIがデフォルトでツリーベースのスタートアップスキームを使用するためです。たとえば、mpirunをスレーブ1として呼び出すマシンでsshを実行し、スレーブ1からスレーブ2にsshを呼び出すなどの操作を実行します。
バラよりhttp://blogs.cisco.com/performance/tree-based-launch-in-open-mpiそしてhttp://blogs.cisco.com/performance/tree-based-launch-in-open-mpi-part-2詳細については。