グリッド環境に適したJava用階層型実行環境Jojoの設計と実装

Slides:



Advertisements
Similar presentations
オブジェクト指向 言語 論 第八回 知能情報学部 新田直也. 多相性(最も単純な例) class A { void m() { System.out.println( “ this is class A ” ); } } class A1 extends A { void m() { System.out.println(
Advertisements

1 プリミティブ Web サービスの 入出力データに関する一考察 2005 年 3 月 21 日 松江工業高等専門学校 情報工学科 奈良先端科学技術大学院大学 情報科学研究科 越田高志 電子情報通信学会 2005年総合 大会.
シーケンス図の生成のための実行履歴圧縮手法
モバイルエージェントシステムの実装 エージェント移動(状態とコードの一括移送) エージェント移動の特徴 システム構成 エージェントプログラム
6.4継承とメソッド 6.5継承とコンストラクタ 11月28日 時田 陽一
Remote Method Invocation
東京工科大学 コンピュータサイエンス学部 亀田弘之
創造工学設計I 電子情報工学科4年(前期) 8回目 (04/6/2015) 担当 古山彰一 ac
アルゴリズムとデータ構造 2013年6月18日
DNASシステム上のアプリケーション起動シーケンスのための基盤であるdsh部分の性能評価
アルゴリズムとデータ構造1 2007年6月12日
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
アルゴリズムとデータ構造 2012年6月14日
福盛 秀雄, 浜中 征志郎, 菅原 健一, 吉川 潤, 中山 周平 早稲田大学 村岡研究室
同期的にアドバイスを活性化できる分散動的アスペクト指向システム
メソッド名とその周辺の識別子の 相関ルールに基づくメソッド名変更支援手法
インタフェース プログラミング 第14回 インタフェース プログラミング第14回.
大岩 元 慶応大学環境情報学部 二分木 データ構造とプログラミング(10) 大岩 元 慶応大学環境情報学部
アルゴリズムとデータ構造 2011年6月14日
ユーザ毎にカスタマイズ可能な Web アプリケーション用のフレームワークの実装
CONCURRENT PROGRAMMING
動的スライスを用いたバグ修正前後の実行系列の差分検出手法の提案
RMI ソフトウェア特論 第6回 /
Flyingware : バイトコード変換による 安全なエージェントの実行
プログラミング演習3 第2回 GUIの復習.
コンパイラの解析 (2) GCJのデータ構造 - 1.
過負荷時の分散ソフトウェアの 性能劣化を改善する スケジューリングの提案
細かい粒度でコードの再利用を可能とするメソッド内メソッドのJava言語への導入
ソフトウェア工学 知能情報学部 新田直也.
プログラミング言語入門 手続き型言語としてのJava
アルゴリズムとプログラミング (Algorithms and Programming)
細かい粒度で コードの再利用を可能とする メソッド内メソッドと その効率の良い実装方法の提案
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
暗黙的に型付けされる構造体の Java言語への導入
蛋白質立体構造の進化的解析のための Ninf版並列MGGとその性能評価
マルチスレッド処理 マルチプロセス処理について
オーバレイ構築ツールキットOverlay Weaver
動的スライスを用いたバグ修正前後の実行系列の差分検出手法
ソケットプログラム(TCP,UDP) EasyChat開発2
Java Bytecode Modification and Applet Security
ユーザ毎にカスタマイズ可能な Webアプリケーションの 効率の良い実装方法
Javaプログラムの変更を支援する 影響波及解析システム
グリッド環境に適した並列組み合わせ最適化システムjPoPにおける分枝限定法の実装
Grid環境に適した並列組み合わせ最適化システムの提案
既存Javaプログラム向け 分散化支援システムの開発
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
グリッド向け実行環境Jojo を用いた遺伝的アルゴリズムによる蛋白質構造決定
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
Java における 先進的リフレクション技術
Peer-to-Peerシステムにおける動的な木構造の生成による検索の高速化
「マイグレーションを支援する分散集合オブジェクト」
マイグレーションを支援する分散集合オブジェクト
プログラミング言語論 第十三回 理工学部 情報システム工学科 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
同期処理のモジュール化を 可能にする アスペクト指向言語
C#プログラミング実習 第3回.
「マイグレーションを支援する分散集合オブジェクト」
ユビキタスコンピューティングの ための ハンドオーバー機能付きRMIの実装
ゲームのタスクシステム 導入編 レベル2くまー By keychan.
状況に応じて適切な 例外処理が行なえる アスペクト指向分散環境実験の 支援ツール
プログラム分散化のための アスペクト指向言語
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
動的スライスを用いたバグ修正前後の実行系列の差分検出手法の提案
動的スライスを用いたバグ修正前後の実行系列の差分検出手法の提案
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
計算機プログラミングI 第10回 2002年12月19日(木) メソッドの再定義と動的結合 クイズ メソッドの再定義 (オーバーライド)
Presentation transcript:

グリッド環境に適したJava用階層型実行環境Jojoの設計と実装 HPC研究会@奈良 2002年10月25日 グリッド環境に適したJava用階層型実行環境Jojoの設計と実装 中田秀基(産総研、東工大), 松岡聡(東工大、国情研), 関口智嗣(産総研)

背景 グリッドとクラスタの普及 問題点1: 各ノードはプライベートアドレス 問題点2:階層構造を意識したプログラミングが難しい HPC研究会@奈良 2002年10月25日 背景 クライアント ルータノード ルータノード グリッドとクラスタの普及 多くはGlobusベース グリッドノードとしてのクラスタ 複数のクラスタにまたがった実行の可能性 問題点1: 各ノードはプライベートアドレス 既存のツールでは十分な活用は難しい Ex. MPICH-G2 、C.f. NXProxy [Tanaka] 問題点2:階層構造を意識したプログラミングが難しい MPICH-G2ではすべてのノードがフラットに見える サイトB サイトA

Javaを用いたグリッド向けプログラミング環境 Jojo HPC研究会@奈良 2002年10月25日 目的 階層構造を持つグリッド環境に適したプログラミング環境を提供 クラスタノードがプライベートアドレスであっても活用可能 階層構造を積極的に活用できる、簡潔で柔軟なプログラミングインターフェイス インストールが容易 ユーザプログラムのステージング Javaを用いたグリッド向けプログラミング環境 Jojo

Jojoの特徴(1) ツリー状の通信を行うので、プライベートアドレスでも問題なく使用が可能 再帰的な起動 HPC研究会@奈良 2002年10月25日 Jojoの特徴(1) ツリー状の通信を行うので、プライベートアドレスでも問題なく使用が可能 再帰的な起動 起動プロトコル:Globus GRAM、ssh、rsh 混在可能 クライアント GRAM ssh ルータノード ルータノード rsh GRAM サイトB サイトA

Jojoの特徴(2) 階層構造を持つノードのそれぞれで実行されるプログラムを記述 HPC研究会@奈良 2002年10月25日 Jojoの特徴(2) 階層構造を持つノードのそれぞれで実行されるプログラムを記述 階層構造を意識したプログラミングが可能 各ノード上のプログラムは自分の近傍ノード(親、子、兄弟)と通信 Jojoのシステムプログラムやユーザのプログラムを動的にダウンロード システムのバージョン違いなどのトラブルを未然に防ぐ クラスタの各ノードにはJava VMが実行できる環境だけがあればよいのでインストールの必要がない

プログラミングモデルへの要請 簡潔で直感的 柔軟なメッセージパッシング 実行時のセットアップも考慮 HPC研究会@奈良 2002年10月25日 プログラミングモデルへの要請 簡潔で直感的 実行時のセットアップも考慮 柔軟なメッセージパッシング スレッドを利用した通信と計算のオーバラップによるレイテンシの隠蔽 ⇒複雑な非同期通信を容易に記述できることが不可欠

関連研究 JavaRMI (Sun)、Horb(ETL) JPVM,mpiJava etc. 分散オブジェクトに対する同期メソッド呼び出し HPC研究会@奈良 2002年10月25日 関連研究 JavaRMI (Sun)、Horb(ETL) 分散オブジェクトに対する同期メソッド呼び出し 並列実行はスレッドと組み合わせて実現 オブジェクトを別途起動、登録する必要 コード(オブジェクト)の配置が煩雑 JPVM,mpiJava etc. Send, recv によるメッセージパッシングモデル 簡潔なSPMDモデル Send,Recvだけで複雑な同期を記述するのは難しい

Jojoのプログラミングモデル 各ノードに1つの代表オブジェクトが起動 Codeがオブジェクト単位で送受信を行う HPC研究会@奈良 2002年10月25日 Jojoのプログラミングモデル 各ノードに1つの代表オブジェクトが起動 Codeクラスのサブクラスを実行 SPMD的 Codeがオブジェクト単位で送受信を行う 受信は基本的にハンドラメソッドで行う 送信に対する返信は頻出するので特別扱いしていくつかの通信モードを用意 ブロッキング呼び出し フューチャーオブジェクトやコールバックオブジェクトを指定するノンブロッキング呼び出し

API (1) Code abstract class Code{ Node [] siblings; /** 兄弟ノード */ HPC研究会@奈良 2002年10月25日 API (1) Code abstract class Code{ Node [] siblings; /** 兄弟ノード */ Node [] descendants; /** 子ノード */ Node parent; /** 親ノード */ int rank; /** 兄弟の中での順位 */ /** 初期化 */ public void init(Map arg); /** 本体の処理 */ public void start(); /** 送信されてきたオブジェクトの処理 */ public Object handle(Message mes); }

API (2) Node public interface Node { HPC研究会@奈良 2002年10月25日 API (2) Node public interface Node { /** non-blocking send; do not wait for reply */ void send(Message msg) ; /** blocking call; wait for reply */ Object call(Message msg) ; /** non-blocking call; do not wait for reply. * returns Future to synchronize the reply. */ Future callFuture(Message msg) ; /** non-blocking call; execute unnable */ void callWithContext(Message msg, Context context) ; }

API (3) Message public class Message implements Serializable{ HPC研究会@奈良 2002年10月25日 API (3) Message public class Message implements Serializable{ /** message id */ public int tag; /** message contents */ public Serializable contents; }

HPC研究会@奈良 2002年10月25日 通信モード(1) 送信のみ Sender Receiver send

HPC研究会@奈良 2002年10月25日 通信モード(2) ブロッキング呼び出し Sender Receiver call

通信モード(3) Future呼び出し Sender Receiver f=node.callFuture(o); HPC研究会@奈良 2002年10月25日 通信モード(3) Future呼び出し Sender Receiver f=node.callFuture(o); out = f.touch();

通信モード(4) Context付き呼び出し HPC研究会@奈良 2002年10月25日 通信モード(4) Context付き呼び出し Sender Receiver callwithContext 別スレッドで実行

Jojoの起動 クライアントから設定ファイルを指定して起動 起動にはGlobus,ssh,rshが使用可能 HPC研究会@奈良 2002年10月25日 Jojoの起動 クライアントから設定ファイルを指定して起動 プログラムへの引数はプロパティファイルで与える 起動にはGlobus,ssh,rshが使用可能 すべてのプログラムが動的にダウンロードされる ブートストラップサーバrjavaを使用

rjavaによるブートストラップ起動 段階的にシステムとユーザプログラムを自動転送 HPC研究会@奈良 2002年10月25日 rjavaによるブートストラップ起動 段階的にシステムとユーザプログラムを自動転送 CLIENT REMOTE Send Bootstrap Server Program SCP+SSH / GASS+GRAM User Prog. User Prog. Jojo system Send Jojo Send User Program JojoSystem JojoSystem rjava Server rjava Client rjava Server User Program

クラスファイルの動的ロード ブートストラップサーバがクラスローダを提供 loadClass loadClass Client HPC研究会@奈良 2002年10月25日 クラスファイルの動的ロード ブートストラップサーバがクラスローダを提供 リモートノード上ではすべてのクラスがこのローダでロードされる クライアントノード上のファイルローダと通信してクラスファイルを取得 2段目以降も同様に ファイルローダはCLASSPATHを参照してクラスファイルをロード。Jarファイルにも対応 loadClass loadClass Client Remote A Remote B Class Loader Class Loader File Loader クラスファイル を要求 クラスファイル を要求

コンフィギュレーションファイル XMLで記述 階層構造をそのまま表現 デフォルト値の設定で表記の長さを短縮 HPC研究会@奈良 2002年10月25日 コンフィギュレーションファイル XMLで記述 階層構造をそのまま表現 デフォルト値の設定で表記の長さを短縮 <!ELEMENT node (code?,invocation?,node*)> <!ATTLIST node host CDATA #REQUIRED> <!ELEMENT code (#PCDATA)> <!ELEMENT invocation EMPTY> <!ATTLIST invocation javaPath CDATA #IMPLIED rjavaProtocol CDATA #IMPLIED rjavaRsh CDATA #IMPLIED rjavaRcp CDATA #IMPLIED xtermDisplay CDATA #IMPLIED xtermPath CDATA #IMPLIED >

コンフィギュレーションファイル例 クライアント pad00 pad01 pad02 pad03 HPC研究会@奈良 2002年10月25日 コンフィギュレーションファイル例 <node host="root"> <code> PiMaster </code> <node host="default"> <code> PiWorker </code> <invocation javaPath="java" rjavaJarPath="/tmp/rjava.jar" rjavaProtocol="ssh" rjavaRsh="ssh" rjavaRcp="scp"/> </node> <node host="pad00"/> <node host="pad01"/> <node host="pad02"/> <node host="pad03"/> クライアント pad00 pad01 pad02 pad03

プログラムへの入力 起動時にプロパティファイルを指定 内部的にはMapを渡している プロパティがすべてのCodeのinitメソッドに渡される HPC研究会@奈良 2002年10月25日 プログラムへの入力 起動時にプロパティファイルを指定 プロパティがすべてのCodeのinitメソッドに渡される 内部的にはMapを渡している 文字列に限らず任意のシリアライズ可能なオブジェクトを渡すことができる > java silf.jojo.Jojo CONF_FILE PROP_FILE

サンプルプログラム 乱数で円周率を求める 正方形の中にランダムに点を打ち、円弧に入る確率からΠを逆算 マスタ・ワーカ 動的負荷分散 HPC研究会@奈良 2002年10月25日 サンプルプログラム 乱数で円周率を求める 正方形の中にランダムに点を打ち、円弧に入る確率からΠを逆算 マスタ・ワーカ 動的負荷分散 ワーカがマスタにアクセスしてタスクを取得 times=100000 divide=10

サンプルプログラム(マスタ) public class PiMaster2 extends Code{ 略 HPC研究会@奈良 2002年10月25日 サンプルプログラム(マスタ) public class PiMaster2 extends Code{ 略 synchronized public Object handle(Message msg) throws JojoException{ if (msg.tag == PiWorker.MSG_TRIAL_REQUEST){ long [] pair = (long[])(msg.contents); doneTrial += pair[0]; doneResult += pair[1]; if (doneTrial >= times){ synchronized (this) {done = true; notifyAll();} return new Long(0); } else return new Long(perNode); throw new JojoException("cannot handle the message: " + msg); }

サンプルプログラム(ワーカ) public class PiWorker2 extends Code{ HPC研究会@奈良 2002年10月25日 サンプルプログラム(ワーカ) public class PiWorker2 extends Code{ public static final int MSG_TRIAL_REQUEST = 1; Random random = new Random(); public void start() throws JojoException{ long trialTimes = 0, doneTimes = 0; while (true){ Message msg = new Message(MSG_TRIAL_REQUEST, new long[]{trialTimes, doneTimes}); trialTimes = ((Long)(parent.call(msg))).longValue(); if (trialTimes == 0) break; doneTimes = trial(trialTimes); } private long trial(long trialTimes){ long counter = 0; for (long i = 0; i < trialTimes; i++){ double x = random.nextDouble(); double y = random.nextDouble(); if (x * x + y * y < 1.0) counter++; } return counter;

予備実験 LAN環境とWAN環境でスループットを計測 それぞれ、GSIを使用したものとSSHを使用したもので比較 産総研と東工大 HPC研究会@奈良 2002年10月25日 予備実験 LAN環境とWAN環境でスループットを計測 産総研と東工大 それぞれ、GSIを使用したものとSSHを使用したもので比較 GSIのSSLはPure Java実装 SSHは外部コマンドを使用 Linux PC Pentium III 1.4GHz Server Throughput: 1.5 Mbyte/s Latency: 21ms Gigabit Ether Linux PC Athlon 1.2GHz Throughput: 54.3 Mbyte/s Latency: 0ms Client A Client B Linux PC Pentium III 1.4GHz 50 miles TITECH AIST

結果(WAN) 本来のスループットは1.5Mbyte/s 1/3 程度の性能 GSIのほうがよい成績 HPC研究会@奈良 2002年10月25日 結果(WAN) 本来のスループットは1.5Mbyte/s 1/3 程度の性能 GSIのほうがよい成績

結果(LAN) 本来のスループットは50Mbyte/s GSIの性能が低い(sshの1/3) 双方とも本来のスループットの1/10以下 HPC研究会@奈良 2002年10月25日 結果(LAN) 本来のスループットは50Mbyte/s GSIの性能が低い(sshの1/3) 双方とも本来のスループットの1/10以下

まとめ 階層的なグリッド環境に適した実行環境Jojoの設計と実装を述べた 簡単なサンプルプログラムを示した HPC研究会@奈良 2002年10月25日 まとめ 階層的なグリッド環境に適した実行環境Jojoの設計と実装を述べた 簡単なサンプルプログラムを示した 予備的性能評価を行いその結果を示した

今後の課題 スループット性能が低下している原因を追究し改善する HPC研究会@奈良 2002年10月25日 今後の課題 スループット性能が低下している原因を追究し改善する ストリームのマルチプレクスに伴うメモリコピーとスレッド切り替えが原因? 最適化問題システムであるjPoPにJojoを適用し Jojoのスケーラビリティを確認する GAによるNMR画像からのたんぱく質構造決定 システム的な改良を検討する Sibling間通信の直接通信化 ノードに対する参照の転送