マイグレーションを支援する 分散集合オブジェクト 30388 高橋 慧 近山・田浦研究室 powered by Phoenix Library グリッド環境での計算 ▌ 特徴 ►インターネット上の計算機で並列処理 ►専用並列計算機に匹敵する潜在性能 ▌ 要請(1):プロセッサ数を増減させたい ►少しの時間でも使える資源を総動員したい ►故障への対応・家庭のPCも計算に参加 ▌ 要請(2):記述を楽に (オブジェクト指向など) ►通信を明示的に書きたくない ►データと仕事の関連が明確にしたい 背景・目的 [2] グリッド環境での計算 ▌ 現状 ►既存の分散オブジェクトでは無駄が多すぎる ►通信 + 手続きを記述するモデルが主流 ▌ 求められる記述モデル ►動的プロセッサ数の増減に対応 ►記述が容易(例えばオブジェクト指向) ►無駄な通信が発生しない これらを備えた記述モデル 「分散集合オブジェクト」を提案 背景・目的 [3] 本報告の構成 ▌ 背景・目的 (ここまで) ▌ 既存のモデル ►メッセージパッシング ►分散オブジェクト ▌ 分散集合オブジェクトの提案 ▌ 進捗・今後の計画 ここに現在位置が出ます 本報告の構成 [4] メッセージパッシング ►相手プロセッサを番号で指定して通信 [+]無駄の無いプログラムが書ける [-]手続き的・記述が難しい [-]プロセッサ数の増減に対応が難しい ipe = 12 /* ipe = 12 */ double d = 3.14; send(20, &d); 既存モデル ipe = 20 to: 20 data: 3.14 /* ipe = 20 */ double d; recv(&d); [5] Phoenixでのメッセージパッシング ►Phoenixモデルによる改良 ◘ 各プロセッサは番号の集合(例えば0-10)を持つ ◘ 実行中に番号の配分を変更可能 [+]プロセッサの増減に対応 (他の得失は同様) 17はこの範囲内 [0-10) to: 17 data: *** [10-20) [10-15) recv(&d); 17はこの範囲内 send(17, &d); … send(17, &d); 既存モデル [15-20) recv(&d); to: 17 data: *** [6] 分散オブジェクト ▌ オブジェクト指向を並列プログラムに導入 ►クラス定義と、それを用いるプログラムを記述 ►リモートのメソッドを呼び出せる(RMI) ►オブジェクトを他プロセッサに移送 (マイグレート) 参照 remote_x remote_x->m(); 既存モデル 参照も移動 Object x x->m()を実行 マイグレート Object x [7] 分散オブジェクトでの記述 ▌ 「プロセッサ間に分散する配列」を書いてみる ►「プロセッサは増減しても見え方が一定」が必要 ►全体オブジェクトが断片の配分を管理 ►メソッド呼び出しは全体オブジェクトを通じて行う プログラマが要素配分 を把握する必要が無い 全体オブジェクトに get(2) メッセージが集中 性能上ボトルネック 0 1 2 … 既存モデル whole->get(2); whole->get(200); whole get() 全体オブジェクト 100 … get(200) 200 … [8] 既存モデルのまとめ ▌ メッセージパッシング ►性能が良い ►プロセッサ増減に対応 (Phoenixモデル) ►記述は手続き的で難しい ▌ 分散オブジェクト ►プロセッサ増減に対応する場合、 性能と記述性のトレードオフ ◘ 記述性を重視すると、性能が悪い (先スライド) ◘ 性能を重視すると、記述が難しい (例省略) ⇒記述性と性能を併せ持つモデルを提案 既存モデル [9] 分散集合オブジェクトの提案 ▌ 集合の分割保持に特化 ►プログラマは「断片クラス」を定義 ►自動的に仮想的「全体オブジェクト」が出来る ►メソッドは全体オブジェクトから呼び出し ►断片は分割・併合・マイグレートできる Fraction 0 1 2 … Whole Array 100… 200… プロセッサ増減に対応 本研究の提案 [10] ユーザから見た動作 ▌ メソッド呼び出し ►外側からは、「全体オブジェクト」だけが見える ►インデックス集合を指定してメソッドを呼び出し プログラマが要素配分を把握する必要がない whole_array.calc([50,150)); whole_array calc([50-150)) Whole Array calc([50-100)) [0-100) 本研究の提案 calc([100-150)) [100-200) [200-… [11] 実際の動作 ►要素とプロセッサの対応はシステムが管理 ►呼び出し範囲の先頭要素にメッセージを送信 ►各断片がメッセージを中継 (将来はツリー利用) メッセージが特定のプロセッサに集中しない whole_array->calc(10-20); whole_array->calc(110-400); 10を持つ断片に 送信 calc([10-20)) [0-100) 本研究の提案 110を持つ断片に送信 calc([110-200)) [100-200) 残りの範囲 [200-400) に転送 [200-…) [12] 分散集合オブジェクトの特徴 ▌ プロセッサ数の増減に対応 ►断片のマイグレーション ▌ 記述しやすい ►オブジェクト指向 ►「全体オブジェクト」というビューを提供。 要素の配分を意識する必要がない ▌ メッセージパッシングに劣らない速度 ►メソッド呼び出しのボトルネックがない 本研究の提案 [13] 進捗と今後の計画 ▌ 分散配列クラスの作成中 ►Phoenixライブラリを使用 ►マイグレートに対応 ►FFTやSOR(偏微分方程式の解法)に使用 ▌ ライブラリの実装 ►メッセージの自動生成 ▌ これを用いたアプリケーションの記述 進捗と今後 [14]
© Copyright 2024 ExpyDoc