進捗報告 金田憲二 導入 • メッセージパッシングライブラリ – 動的に計算機が増減するなかで動作可能 – 複数サブネットにまたがる計算機を利用可能 • 各計算機に仮想ノードの集合を割り振り • 宛先を仮想ノードで指定して通信 発表の概要 • 通信アルゴリズム • 実験 • まとめと今後の課題 通信アルゴリズム 通信に必要な機能 • IPアドレスと仮想ノード集合とのマッピング • 通信路の迂回 – ファイアウォール、NATが存在 – TCP/IPでは全体全の通信ができない csc000 tuba csc001 beatrice 基本方針 • 生成可能なTCPコネクション全てを張りっ ぱなしにする • 張りっぱなしにしたコネクションを通してメッ セージを配送する – DSDV というアルゴリズムでルーティング表を 構築する • ルーティング表の大きさ=O(ノード数) 問題点 • 無駄なルーティング表の更新メッセージの 伝播 – 全体全の通信が可能なクラスタ内部 • 生成維持するコネクションの数が莫大 – 特にsshのコネクション 通信アルゴリズムの改良 (1/4) • 動的にgatewayを求める – 強連結グラフG=(V,E)において 以下の条件を満たす集合V’をgatewayとする ∀v ∈ V - V’, ∃v’∈V’, (v’ v) ∈E 通信アルゴリズムの改良 (2/4) • non-gatewayは – – – – gatewayのどれか一つとコネクションを維持 隣接ノード宛のメッセージは、隣接ノードに直接送信 それ以外宛てのメッセージは、gatewayに送信 (ルーティング表の更新メッセージを伝播させない) 通信アルゴリズムの改良 (3/4) • gatewayの求め方[Jie Wo02] – 強連結グラフG=(V,E)の元で {u∈V | ∃v,w ∈V, (v,u) ∈ E ∧ (u,w) ∈ E ∧ (v,w) ∈ E } はgatewayの集合 v w u uはgateway 通信アルゴリズムの改良 (4/4) • local subnet内にgatewayが存在しない場 合 – gatewayを一つ追加する – 例)その中で一番大きな仮想ノードをもつ計算 機 メッセージ配送の信頼性 • • ノードの脱退時にキューにたまっているメッセー ジをどうするか 現段階では脱退時に以下のように処理を行う 1. 自ノードにメッセージがこないようにする • 隣接ノードのルーティング表をいじる 3. なるべく他の計算機にキュー中のメッセージを委譲 する • • 100%他のノードにメッセージを委譲できるとは限らない 例)隣接ノードも脱退中 4. ある程度時間がたったらディスクに保存して、終了 実験 Ray-tracing • 動的負荷分散するRay-tracing – 各計算機が、仮想ノード空間を重複なく担当 – 各計算機は、randomに選んだ仮想ノードからtaskを steal – 動的に計算機が増減しても、steal requestの送信先 が常に存在 実験結果 (1/2) 1 subnet • CPU: Ultra Sparc 750MHz x 2 1400 • Network: 100Mbps Ethernet Time in seconds 1200 1000 800 600 400 約40倍のspeed up 200 0 1 2 4 8 16 32 Number of machines 64 122 160 実験結果 (2/2) SF15K 140 Time in seconds 3 subnets : Ultra Sparc 900MHz 言問、地下: Ultra Sparc 750MHz 120 100 80 60 40 20 0 言x4 , Sx4 , 地 x4 言x8 , Sx8 , 地 x8 言x1 5 , 言x1 5 , 言x1 5 , 言x1 5 , Sx1 6 , 地 Sx3 2 , 地 Sx3 2 , 地 Sx3 2 , 地 x1 6 x3 2 x6 4 x1 2 1 Number of machines Integer Sort 1. 個々の計算機がランダ ムに整数を保持 2. 整数の再配布 – どの計算機がどの整数 をソートするかは既知 3. ローカルソート 1 7 A 5 8 B 3 6 C 2 4 D 2 1 A 5 8 B 3 6 C 4 D 5 6 C 7 8 D 7 1 2 A 3 4 B 動的に計算機が増減する Integer Sort • オリジナルはMPI プログラム(from NPB2.3) – 計算機の台数は固定 – MPI 集団命令を使用 • MPI_Bcast 、MPI_Reduce、MPI_Allreduce, • MPI_Alltoall 、MPI_Alltoallv • MPI集団命令をPhoenixのsend/recvで置き換え – MPI_Alltoall、MPI_Alltoallvについて説明する MPI_Alltoall、MPI_Alltoallv • MPI_Alltoall(sbuf, c, rbuf, ...) – 計算機 i のrbuf[c*j, ... c*(j+1)-1] := 計算機 j のsbuf[c*i, .., c*(i+1)-1] • MPI_Alltoallv(sbuf, c[], rbuf, ...) – cの値が計算機ごとに可変 • IS内での使われ方 – 整数の再配布 – 実行時間の大部分 A1 A2 B1 B2 C1 C2 D1D2 A3 A4 B3 B4 C3 C4 D3D4 A B C D A1 B1 A2 B2 A3 B3 A4 B4 C1 D1 C2 D2 C3 D3 C4 D4 A B C D MPIからPhoenixへの変換 (1/4) • 変換方法1 (static IS) – MPI_AlltoAllをそのまま実装 • 一つの計算機に一つの仮想ノードを割り当て – 台数固定でのみ動作 – (性能測定用) MPIからPhoenixへの変換 (2/4) • 変換方法2 (dynamic IS) – 計算機の動的な増減を可能にする – 仮想ノード集合の大きさ=整数の個数 – 仮想ノード集合[a ... b]を担当する計算機は、 a番目からb番目の整数をローカルソート MPIからPhoenixへの変換 (3/4) • 変換方法2 (dynamic IS) – 以下の繰り返して、整数の 再配布を行う • 自分より範囲が下の整数を – 自分より値が下の仮想ノー ドのどれかに送信 • 自分より範囲が上の整数を – 自分より値が上の仮想ノー ドのどれかに送信 0...3 1 2 5 8 9 12 4...7 8...11 12...15 1 2 5 12 8 9 0...3 4...7 8...11 12...15 1 2 0...3 5 12 8 9 4...7 8...11 12...15 MPIからPhoenixへの変換 (4/4) • その他 – 個々の集団通信ごとに、送信メッセージに一意なtag をつける – tagの一致するメッセージしか受信しない ... ph_reduce(....) /* A */ ph_reduce(....) /* B */ ... Bで送信されたメッセージを Aで受信しないようにする 実験結果 (1/2) 350 static IS Time in Seconds 300 dynamic IS MPICH 250 200 150 仮想ノード集合は均 等に分割 • CPU: 1~16台:PIII 800MHz x 2 100 17~32台:PIII 1400MHz x 2 50 • Network: 100base Ethernet 0 • Class : C (134,217,728 keys) 4 8 16 32 Number of machines 実験結果 (2/2) Time in seconds • 通信時間 vs. 計算時間 (32台で実行時) 140 通信時間 120 計算時間 100 80 60 40 整数の再配布時の 通信時間が大部分 20 0 static IS dynamic IS MPICH 関連研究 • Highly Dynamic Destination-Sequenced Distance-Vector Routing (DSDV) for Mobile Computers – Charles Perkins – ACM SIGCOMM’94 Conference on Communications Architectures Protocols and Applications, 1994 • Extended dominating-set-based routing in ad hoc wireless networks with unidirectional links – Jie Wu – Parallel and Distributed Systems, IEEE Transactions on Sep, 2002 まとめ • Phoenixの通信アルゴリズムとその実験 今後の課題 • 実装が不十分な部分の完成 • 通信アルゴリズムの改良 • メッセージ配送の信頼性の保証 – TCPコネクションの切断、計算機のクラッシュ へ対処
© Copyright 2024 ExpyDoc