こんにちは
HPCでの一定期間、Javaで並列プログラムを書いている人を見たことはありません。 彼はCで何かを書き、Fortranを見ましたが、魂は常にJavaに引き寄せられました。 最後に、彼は座ってそれを理解しようとしました。
内容:
1)Java用MPIの実装。 これは何ですか 入手先
2)これをすべてインストールする方法は? 設定方法
3)最も簡単なプログラムを書きましょう。 実行方法
並列技術の概要については
、以前の投稿を参照し
てください。
1)Java用MPIの実装。 これは何ですか 入手先
Java MPI実装の場合、筆者がすでに知っている限りではmpiJavaと、mpiJavaと他の有能な開発者をチームに持っている
MPJ Expressの 2つがあります。 実装は、NIOとMyrinetの2つのテクノロジーをネイティブにサポートします。 Myrinetは手元になかったため、NIOでテストされました。 実装はMPICHのように機能します。相互に通信するデーモンプロセスは適切なノードで作成されます。
実装
サイト 。 かなり不十分で、十分な例ではありません。
2)これをすべてインストールする方法は? 設定方法
行こう プラットフォーム:4ノードのSuSe 10.3 64ビット。 Java HotSpot(TM)64ビットサーバーVM(ビルド1.5.0_16-b02、混合モード)。
// 0.35バージョンをダウンロードします。これは、0.36がまだ十分に動作しておらず、//開発者との3日間の通信が発生する不具合があるためです。 重要:同じバージョンのJVMをすべての//ノードにインストールする必要があります!
wget " sourceforge.net/projects/mpjexpress/files/releases/mpj-v0_35.tar.gz/download "
tar xvf mpj-v0_35.tar.gz
cd mpj-v0_35
ant(antがインストールされていない場合は、インストールする必要があります)
MPJ Expressフォルダーをすべてのノードで何らかの方法で共有し、同じパスに手動で配置する必要がないようにするのが最適です。
今、あなたは道を修正する必要があります。 ZSHを使用していますが、ファイル名のみがBashと異なります。
以下を/ etc / zshenvファイルに追加する必要があります。
エクスポートJAVA_HOME = java_path
export MPJ_HOME = path_to_MPJ
export PATH = $ PATH:$ MPJ_HOME / bin
/.zshrcでは機能しません。SSHコマンドの実行時にパスが発行される必要があります。
もちろん、これを行うには、すべてのノードで必要です。
便宜上、最も必要なライブラリ(/path_to_mpj/lib/mpj.jar)を/ ext / libに配置します。 すべてのノードで!
悪魔を実行しようとすることができます。 必要なノードを指定するマシンファイルを作成します。
ノード1
ノード-2
ノード-3
そして/ path_to_mpj / bin / mpjbootマシン-デーモンを実行します。 ここでパフォーマンスを確認できます-* .pidファイルが作成された場合(各デーモンに1つ)、すべてが正常です。 数秒後に作成して消えた場合は、JVMに問題があることを意味します。 作成されていません-JVMはまったくありません。 :-)コンソールキーを使用してmpjdaemon_linux_x86_64ビンにあるユーティリティを使用すると、すべての問題を診断できます。
できた
3)最も簡単なプログラムを書きましょう。 実行方法
プログラムは決して簡単ではありません。
import mpi.*; public class HelloWorld { public static void main(String args[]) throws Exception { MPI.Init(args); int me = MPI.COMM_WORLD.Rank(); int size = MPI.COMM_WORLD.Size(); System.out.println("Hello world from <"+me+"> from <"+size); MPI.Finalize(); } }
説明:
並列セクション(.Init)を初期化し、2つのプリミティブmeとサイズ(ノードの識別子とプール内のノードの数)を作成し、「Hello world!」を表示して、並列セクションを閉じます。
それだけです 成果があります-私は共有します。 それまでの間、この投稿は誰かに興味を持ち、より大きな成果を求めているかもしれません。