だから、Ubuntuマシンからリモートホスト(Ubuntuも)にジョブを送信して並列c ++プログラムを実行しています。ターミナルで使用するコマンドラインは次のようなものです。
mpirun -np 4 --Host host1,Host2 program.exe
そして、端末の次の行が両方のホストのパスワードを同時に要求します:
noob@Host1's password: noob@Host2's password:
そして、これはいくつかの問題を引き起こしています。端末にパスワードを1つずつ要求させる方法はありますか?
端末に順番に確認する方法があるかどうかはわかりませんが、いずれにしても、ssh
を介して接続していると仮定すると、パスワードなしのアクセスを設定する方がよいでしょう。
マシンに公開sshキーを作成します。
ssh-keygen -t rsa
パスフレーズの入力を求められます。パスフレーズは、各ログイン後にsshコマンドを実行するfirstの時間を入力するように求められます。これは、複数のssh
またはscp
コマンドの場合、入力する必要があるのは1回だけです(ホストごとに1回、ログインセッションごとに1回)。それでも、完全にパスワードなしでアクセスするには、空のままにしておくことができます。
公開キーを生成したら、それをリモートコンピューターにコピーします。
ssh-copy-id -i ~/.ssh/id_rsa.pub noob@Host1
ssh-copy-id -i ~/.ssh/id_rsa.pub noob@Host2
多くのホストでこれを行う必要がある場合は、ホスト名またはIP(1行に1つ)のファイルを作成し、シェルループを使用してそれらをすべてコピーして実行します。
while read ip; do
ssh-copy-id -i ~/.ssh/id_rsa.pub noob@$ip
done < IPlistfile.txt
この手順では、各IPのパスワードを手動で入力する必要がありますが、一度実行すると、パスワードを要求せずにジョブを起動できるはずです。
それでもうまくいかない場合は、このプログラムがリモートホストに正確に接続する方法に関する詳細が必要になります。
MPICH1を使用している場合、この方法からヘルプを取得できます。
-np 4の後にHost1、Host2と記述する代わりに、この宛先の "machines.linux"ファイルにホストを追加できます。
home/user/mpich1/share
*ホームディレクトリにmpichをインストールしていない場合は、mpichをインストールした場所を参照してください
「machines.linux」ファイルを開きます。ファイルの内容をクリアし、必要なコア数のホストの情報を入力します。
Host1:4
Host2:2
Host3:2
次に、mpirunを単純に使用します。
mpirun -np 4 program.exe