JAVAアプレットによる 分散処理の実現 福盛 秀雄, 浜中 征志郎, 菅原 健一, 吉川 潤, 中山 周平 早稲田大学 村岡研究室 発表の概要 • • • • • はじめに システムの概要 実行例 今後の展開 まとめ はじめに ―本作品の動機と目標― 目標:世界中に存在する計算機を使った 並列分散処理 動機: • ネットワーク接続されているPCの増加 • これらPCの計算能力が生かされているかは疑問 JAVA(アプレット)の特徴である – アーキテクチャ非依存性 – ネットワーク適用性 を生かして大規模な問題を分散計算させることがで きないか システムの概要 • サーバはJAVA Program、クライアントはJAVA Appletで 実装 • Crowd Computingに基づく計算 依存のない小さな 計算単位の集合 クライアント クライアント クライアント サーバ 計算の実行 resultcode = is.readByte(); os.writeByte(resultcode); 3. ソケット接続を確保し、 = is.readInt(); os.writeInt(mctrl.startline); 1.startline Httpによる endline = is.readInt(); os.writeInt(mctrl.endline); public class Mserv { public 計算クライアントになる Mclient extends Applet minfo.ix =class is.readDouble(); 該当ページへのアクセス ……... == 1) { implements Runnable { if (resultcode ....... minfo.iy = is.readDouble(); reqtype = is.readInt(); while (listening) ..... send_msarea(msarea, MSubArea msarea {= minfo.size = is.readDouble(); os); switch (reqtype) { Socket clientSocket = null; public void run() { new MSubArea(startline, endline); ....... mctrl.startline = is.readInt(); 2.サーバから try {case 1: while (execflag == true) { if (recv_msarea(msarea, is) == 0) { is.close(); mctrl.endline = is.readInt(); ..... clientSocket = serverSocket.accept(); try { Applet送信 for (int i = 0; i < endline - startline; i++) { os.close(); } …….. String hostname = os.writeDouble(minfo.ix); marea.area[i + startline] = ...... // Mandelblot calculation new MservThread(clientSocket, minfo, getCodeBase().getHost(); os.writeDouble(minfo.iy); msarea.subarea[i]; marea, mctrl).start(); clientSocket = ..... os.writeDouble(minfo.size); } new Socket(hostname, PORT); mctrl.Dflag[i + startline] = 1; os.writeInt(startline); 4. サーバから ...... } ……. 5.担当部分の os.writeInt(endline); class MservThread extends Thread { } 初期データを送信 } 計算を実行 .... run() { public void ........ ...... } } Client(s) } } Server 6. 計算結果を受け取る マンデルブロー集合の計算例における 実行の流れ • 計算対象を小領域に分割 – マンデルブロー集合の計算の場合、縦5ライン 単位での分割を行なう クライアントへの計算の分配 • 複数のクライアントの同時処理が前提 • クライアント数は常に変動 計算済 計算中 次の計算予定部 計算実行中にクライアント終了、その他コネクションの切断 現在はネットワークの例外処理で対処 実行例 1. マンデルブロー集合の計算 2. ナップザック問題 今後の展開 • 各計算機の能力に合わせた負荷分散 • 安定性の強化 • 適用アプリケーションの拡大 – レイトレーシングなどに対しては比較的容易 に対応が可能 – 探索問題について可能性を探る まとめ • ネットワーク上に存在する不特定多数の計算機 を対象とした分散計算処理の可能性について述 べた • これによりJAVAとJAVA appletの持つ特徴を生か した、世界中の計算機を利用する並列分散処理 の可能性がひらけるものと考える 負荷分散の問題(その2) • 本格的な解決 – 計算機ごとにパフォーマンスを計測、それに基 づいて負荷分配を実施 • 計算時間の計測 • ネットワークパフォーマンスの計測 今後の展開 ―― 計算機資源の確保 • 一般の関心を引くページ/プロジェクトとの組み合 わせ – 例: NASAの“Mars Pathfinder”ページ • 一日あたりで数百万単位のアクセス • 観測データのレンダリング処理などは関心を引く? • 他のアプリケーションとの並立 – 例:「JAVA将棋」(早稲田大学村岡研究室) • 一日あたり2000件のアクセス • 一回の接続時間は20分程度 • アイドル時間が長いアプリケーション • その他 – 何らかの対価を払う? 計算機資源の確保 • 理論上は全世界のネットワーク接続された 計算機を利用することが可能 • 一方で極端な場合計算機資源が確保でき ない場合すら存在する 計算機資源をどう確保するか→当面の課題 ネットワークの問題 • HTTPアクセスの可能なすべての計算機を対象 とすることを前提とする • 現在ネットワークの性能には大きなばらつきが認 められる • 適用可能なアプリケーションは現状では限定 • 将来的にはネットワーク状況の改善により適用 可能なアプリケーションは増加
© Copyright 2024 ExpyDoc