2

そこで、私はしばらくの間 Akka Actors で遊んでいて、クラスター内の複数のマシンに計算を分散できるコードをいくつか書きました。「メイン」コードを実行する前に、ActorSystem展開する各マシンで待機する必要があります。通常、これは、すべてのマシンに SSH で接続し、次のようにしてプロセスを開始する Python スクリプトを介して実行しcd /into/the/proper/folder/ますsbt 'run-main ActorSystemCode'

この Python スクリプトをいずれかのマシン (「マシン X」と呼びます) で実行すると、マシン X の SSH セッションで他のすべてのマシンに SSH 接続した結果が表示されます。スクリプトを実行するたびに、実際に実行する前にすべてのマシンがコード全体を再コンパイルしているように見えるため、何か有用な処理が行われるまで数分間座っている必要があります。

私の質問はこれです:

  1. なぜ彼らは再コンパイルする必要があるのですか? すべてのマシンで同じ JVM を使用できるので、すぐに実行するだけでよいのではないでしょうか?

  2. 各マシンが「独自のコピー」をコンパイルするというこの問題を回避するにはどうすればよいですか?

4

2 に答える 2

5

sbt はビルド ツールであり、アプリケーション ランナーではありません。sbt-assembly を使用してオールインワン jar を構築し、その jar を各マシンに配置してscalaorjavaコマンドで実行します。

于 2012-05-15T01:07:57.237 に答える
4

クラスターでは通常、すべてのノードに (NFS または samba を介して) 単一のパーティションがマウントされます。そのパーティションにアーティファクトをコピーするだけで、各ノードで直接アクセスできるようになります。そうでない場合は、システム管理者にインストールを依頼する必要があります。

次に、アプリケーションを起動する必要があります。繰り返しますが、ほとんどのクラスターには MPI が付属しています。ツールmpirun(またはmpiexec) は、実際の MPI アプリケーションに限定されず、複数のノードで必要なスクリプトを起動します。

于 2012-05-15T05:28:26.640 に答える