0

Arch Linux ARM (より具体的には Raspberry Pi クラスター上) で mpi4py (1.3.1) と openmpi (1.8.6-1) を使用して MPI アプリケーションを構築しています。3 つのノード (4 つのプロセス) でプログラムを正常に実行しました。新しいノードを追加しようとすると、次のようになります。

Host key verification failed.
--------------------------------------------------------------------------
ORTE was unable to reliably start one or more daemons.
This usually is caused by:

* not finding the required libraries and/or binaries on
  one or more nodes. Please check your PATH and LD_LIBRARY_PATH
  settings, or configure OMPI with --enable-orterun-prefix-by-default

* lack of authority to execute on one or more specified nodes.
  Please verify your allocation and authorities.

* the inability to write startup files into /tmp (--tmpdir/orte_tmpdir_base).
Please check with your sys admin to determine the correct location to use.

*  compilation of the orted with dynamic libraries when static are required
  (e.g., on Cray). Please check your configure cmd line and consider using
  one of the contrib/platform definitions for your system type.

* an inability to create a connection back to mpirun due to a
  lack of common network interfaces and/or no route found between
  them. Please check network connectivity (including firewalls
  and network routing requirements).

面白いことに、同じノードを使用しているため、ssh キーは問題ありません (ホスト ファイルの任意のエントリを削除し、新しいノードを追加すると機能するので、問題はないと確信しています。 ssh の設定が間違っている (5 つのプロセスを使用している場合にのみ発生します)。

これは何らかのライブラリのバグでしょうか?

ここに私のホストファイルがあります

192.168.1.26 slots=2
192.168.1.188 slots=1
#192.168.1.202 slots=1 If uncommented and run with -np 5, it will raise the error
192.168.1.100 slots=1

前もって感謝します!

4

1 に答える 1

5

Fedora 22 と OpenMPI 1.8 を実行している Linux x86_64 ミニ クラスターでも同じ問題が発生していました。起動マシンから 5 台のマシンのいずれかに SSH で接続できましたが、3 つ以上のノードで MPI を起動しようとすると、認証エラーが発生しました。そして、あなたのように 3 は魔法の数のように見えましたが、実際にそうであることがわかりました。OpenMPI はツリーベースの起動を使用するため、2 つ以上のノードがある場合、1 つ以上の中間ノードが ssh を実行しています。私の場合、パスワードなしのセットアップを使用していませんでした。キーチェーンに追加した起動マシンに SSH ID がありました。最初の 2 つのノードを起動できたのは、キー チェーンにその認証済み ID があったためです。次に、それらの各ノードがさらに起動しようとしましたが、それらのノードにはそのキーが認証されていませんでした (それぞれに追加する必要がありました)。

そのため、ソリューションはパスワードのない SSH ID セットアップに移行しているように見えますが、その方法には明らかに注意が必要です。起動マシンで特定の ID (キー ペア) を作成しました。使用したいノードの承認済みキーにキーを追加しました (ノードはすべて NFS を使用しているので簡単ですが、必要に応じて手動でキーを配布することもできます)。次に、SSH 構成を変更して、ノード マシンにアクセスしようとするときに、そのパスワードなしの ID を使用するようにしました。私の ~/.ssh/config は次のようになります:

Host node0
    HostName node0
    IdentityFile ~/.ssh/passwordless_rsa
Host node1
    HostName node1
    IdentityFile ~/.ssh/passwordless_rsa
...

ワイルドカードを使用して N ノードに対してこれをスケーリングする方法があると確信しています。または、システム ssh 構成ファイルのシステム レベルでデフォルトの ID ファイルを変更することを検討することもできます (同様のオプションが利用できるはずです)。

そして、それはトリックをしました。これで、認証の問題なしに 5 つのノードすべてを起動できます。私の考えの欠点は、起動ノードが他のすべてのノードを起動するということでしたが、このツリーベースの起動は、ログインをチェーンする必要があることを意味します。これは、認証する機会がないため、パスフレーズ認証された ID では実行できません。

パスワードのないキーを持っていると、いまだに気が狂ってしまうので、オープン ネットワークに接続されたこれらのノードで物事をさらに安全に保つために、sshd 構成 (システム レベル) を変更して、起動ノードから来る私以外のユーザーへのログインを制限しました。

于 2015-08-03T21:37:47.900 に答える