680 likes | 781 Views
広域計算環境における並列計算用の スケーラブルな高性能通信ライブラリの 設計と実装. 博士論文本審査 48-67404 斎藤秀雄 2009 年 1 月 28 日. クラスタの躍進. 過去 10 年でクラスタは並列計算に最も用いられるアーキテクチャになった 1998 年 11 月の TOP500 のクラスタの割合 < 1% 2008 年 11 月の TOP500 のクラスタの割合 > 80%. 広域計算環境の整備. 複数のクラスタを WAN で接続することによってさらに多くの資源を用いて計算が行える WAN のバンド幅のの増加( 〜40Gbps )
E N D
広域計算環境における並列計算用のスケーラブルな高性能通信ライブラリの設計と実装広域計算環境における並列計算用のスケーラブルな高性能通信ライブラリの設計と実装 博士論文本審査 48-67404 斎藤秀雄 2009年1月28日
クラスタの躍進 • 過去10年でクラスタは並列計算に最も用いられるアーキテクチャになった • 1998年11月のTOP500のクラスタの割合 < 1% • 2008年11月のTOP500のクラスタの割合 > 80% 1. はじめに
広域計算環境の整備 • 複数のクラスタをWANで接続することによってさらに多くの資源を用いて計算が行える • WANのバンド幅のの増加(〜40Gbps) • SINET3(日本)、SURFnet(オランダ)、etc. 広域環境の恩恵を受けられるアプリが増加 • メッセージパッシング(MPI) • データインテンシブアプリ(Hadoop) • 分散ファイルシステム(Gfarm) WAN 1. はじめに
広域環境における並列計算の難しさ • 広域計算環境は従来の単一クラスタ環境よりはるかに複雑 • 接続性が限られている • 高いスケーラビリティが求められる • 局所性を考慮する必要がある • 未知の環境に適応する必要がある • アプリがこれらに個別に対応するのは困難 代わりに対応してくれる広域環境用の通信ライブラリが必要とされている 1. はじめに
接続性 • 広域環境では直接通信できないノードがある • FWによって通信が遮断されているノード • NATをしていてPrivate IPしか持っていないノード FW 1. はじめに
スケーラビリティ • 「つなげるならつなぐ」手法の問題点 • 様々な資源の制限 • TCPのバッファメモリ(帯域遅延積) • NATの同時セッション数(〜65,000) • FWの同時セッション数(10,000〜1,000,000) • 通信性能の低下 • コンジェスチョンによるパケットロス • セキュリティのために落とされるパケット • 接続(特にWANの接続)の数を制御する必要がある 1. はじめに
局所性 • 接続性・スケーラビリティの要件より、一部のプロセス対でのみ直接通信をすることになる • 高い通信性能を保つために、それらのプロセス対を局所性を考慮して選択する必要がある • 遠いプロセス対より近いプロセス対を優先的に選択すべき • あまり通信しないプロセス対よりたくさん通信するプロセス対を優先的に選択すべき 疎 密 1. はじめに
適応性 • 環境やアプリに適応することによって、前述の要件を自動的に満たすべきである • 手動の設定に頼るべきではない • 煩雑 • スケーラビリティが低い • 様々なトラブルの原因 • 設定ミスのせいで性能が落ちたり、接続性が失われたりすることがある • 「未知の環境」への適応はクラウドコンピューティングではさらに重要になると予想される 1. はじめに
本研究の貢献 • 広域計算環境で煩雑な設定をすることなく大規模な並列計算を効率良くできるようにすること • 提案手法 • 環境の遅延とアプリの通信量を基にスケーラブルかつ高性能なオーバレイを構築 (接続管理) • 通信コストが低くなるようにオーバレイネットワーク上にプロセスを配置(ランク割当て) • 実装 • 広域計算環境用のMPIライブラリ(MC-MPI) • Socket APIを提供してMC-MPIをより汎用的にしたライブラリ(SSOCK) 1. はじめに
発表の流れ • はじめに • 関連研究 • MC-MPIの設計と実装 • MC-MPIの評価 • SSOCK • おわりに
FW/NAT越えの手法 • Virtual Private Network (VPN) • IP-VPN、ユーザレベルVPN • SOCKS (RFC 1928) • Application Level Gateway (ALG) (RFC 2663) • TCP splicing (Denis et al. ‘04) • UDP hole punching (RFC 3489) • 問題点 • 大規模な広域環境で全ノードが互いに通信できるようにするためには多くの設定が必要 • 多数の接続を確立することに起因するスケーラビリティの問題は解決しない 2. 関連研究
SmartSockets • Maassen et al. ‘07 • JavaのSocketクラスをFW/NAT越えできるように拡張 • アプリにはあたかもFW等がなくて直接コネクトできるかのように見える • ライブラリ内では直接コネクトできない場合は逆向きコネクトや中継を行う • cf. SSOCKは同様のインタフェースで、大規模な並列計算に必要なスケーラビリティと性能を提供することを目指す 2. 関連研究
P2Pオーバレイネットワーク • 各ノードは一部のノードとのみ通信 • 直接通信できない(しない)ノードのために中継 • 分散ハッシュテーブルを用いたルーティング • nノードがそれぞれO(logn)ノードについて情報を保持すれば、平均O(logn)ホップで通信できる • 問題点: • ルーティングをP2Pアドレス空間で行うため、物理ネットワークではメッセージが遠回りしてしまう 2. 関連研究
IP over P2P (IPOP) • Ganguly et al. ‘06 • P2Pオーバレイネットワークを用いてIPトンネリングを行う(IPの仮想化) • 頻繁に通信するノードの間にはショートカット接続を確立する • 問題点: • 多数のノードが頻繁に通信するアプリでは多数のショートカット接続が確立されてしまう • IPトンネリングを行うために用いる仮想インタフェースのオーバヘッドが並列アプリには大きすぎる 2. 関連研究
MPIライブラリの接続管理 • MPICH (Gropp et al. ‘96)、MPICH2 • 任意のプロセス対が接続できると仮定 • オンデマンドに接続を確立(遅延接続確立) • 問題点: • 通信するプロセス対が多いアプリ(e.g., IS, DiVinE)では多数の接続が確立されてしまう • GridMPI(Takano et al. ’08) • NAT間の通信のために中継プロセスを手動で設定 • 中継プロセスのトランキングによってクラスタ間のバンド幅利用率を向上 • 問題点: • クラスタ間で高い性能が得られる設定を手動で行うのは困難 2. 関連研究
よく用いられるランク割当て手法 • プロセスをホスト名(IPアドレス)順に並べ、その順にランクを割り当てる • 仮定 • 多くの通信はランクの近いプロセス間で行われる • ホスト名が近いプロセスの通信コストは低い • しかし、実際には • アプリの通信パターンには様々なものがある • ホスト名と通信コストに深い関係があるとは限らない 2. 関連研究
BTの通信行列とランク割当て • 通信行列 • ランク割当て 送信先 ホスト名に基づく割当て ランク より良い割当て ランク クラスタ1 クラスタ2 送 信 元 クラスタ3 クラスタ3 2. 関連研究
トポロジを考慮したランク割当て手法 • ランク割当て問題をグラフ分割問題として扱う • Hatazaki et al. ‘98、Traff’02 • 通信コストと通信量を手動で与える必要がある • Bhanot et al. ‘05 • トポロジがトーラスの場合に限定されている 2. 関連研究
他の分野の似た研究 • 無線ネットワークのアダプティブルーティング • Goff et al. (MobiComm ‘01)、Chin et al. (CCR ‘02)、Woo et al. (SenSys ‘03)、etc. • 似ている点 • 接続が限られていること • リンク性能を測定して環境に適応すること • 異なる点 • 無線ネットワークでは遠いノードと接続できない 「遠いノードとつなぎすぎ」という問題はそもそもない 2. 関連研究
発表の流れ • はじめに • 関連研究 • MC-MPIの設計と実装 • MC-MPIの評価 • SSOCK • おわりに
Multi-Cluster MPI (MC-MPI) • IEEE CCGrid 2007 • 局所性を考慮した接続管理 • オーバレイネットワークを構築 FW/NAT越え • 各プロセスがO(logn)接続を選択し、それらをオンデマンドに確立 高いスケーラビリティ • O(logn)接続を環境の遅延とアプリの通信量を基に選択 高い通信性能 • 局所性を考慮したランク割当て • 遅延と通信量を基に割当てを決定 低い通信オーバヘッド 3. MC-MPIの設計と実装
プロファイリング実行と本実行 短いプロファイリング実行 • 遅延行列 (D) • 通信行列 (T) 最適化された本実行 • 局所性を考慮した接続管理 • 局所性を考慮したランク割当て 3. MC-MPIの設計と実装
遅延行列 • D = {dij} • dij: プロセスiとプロセスjの間の遅延 • 各プロセスは自律的に自分と他のプロセスの間のRTTを測定する • 測定回数を削減するために三角不等式に基づいて遠いプロセスとのRTTを見積もる r if rttpr > αrttrq: rttpq ≈ rttpr (α:定数) rttpr rttrq p q rttpq 3. MC-MPIの設計と実装
通信行列 • T = {tij} • tij:ランクiとランクjの間の通信量 • 多くのアプリは実行を通して似た通信を繰り返す • 短い”お試し実行”で送信されるバイト数を数える • 反復法を用いるアプリ(e.g., NPB)ではメインループを1イテレーションだけ実行 • それ以外のアプリ(e.g., DiVinE)は5秒間だけ実行 3. MC-MPIの設計と実装
提案する接続管理の概要 バウンディンググラフ (確立する接続の上限) スパニングツリー (サイドチャネル) 遅延接続確立 [MPI_Init] [アプリ本体] 3. MC-MPIの設計と実装
遠い 近い バウンディンググラフの構築 • 各プロセスはDとTを基にO(logn)個の他のプロセスを選択する • β: 接続密度を制御するパラメータ • n:プロセス数 • 2j-1βプロセスのグループからβプロセスずつ選択する(j = 1, 2, …, log2(n/β)) qkを選択する確率∝tpqk 疎 ... p q1 q2 q3 q5 q6 q7 q4 密 /4 / /2 3. MC-MPIの設計と実装
遅延接続確立 DST FW FW FW 接続 要求 逆向き コネクト SRC スパニングツリー 3. MC-MPIの設計と実装
提案するランク割当て • 通信オーバヘッドを最小化するためにランク割当て問題を二次割当て問題として扱う • 二次割当て問題(QAP) • 二つのnxnコスト行列が与えられたときに、 を最小化する{0, 1, …, n-1}の並べ替えpを求めよ 3. MC-MPIの設計と実装
QAPの解法 • QAPはNP困難であるが、ヒューリスティクスで短時間で良い近似解を求めることができる • GRASP (*)に基づくライブラリ(Resende et al. ’96)を使用 • QAPLIB (Burkard et al.)で性能をテスト • 問題サイズnに対してnコアで並列に計算 • n <= 256の問題に対して5秒以内に既知の最良解の3%以内の近似解を得ることができた *GRASP = Greedy Randomized Adaptive Search Procedure 3. MC-MPIの設計と実装
発表の流れ • はじめに • 関連研究 • MC-MPIの設計と実装 • MC-MPIの評価 • SSOCK • おわりに
実験環境 • Core 2 Duo/Xeon MP/Xeon 5140 • Linux 2.6.18 (TCP BIC) • クラスタ内のRTT: 0.18-0.24ms • クラスタ内のBW: 930-940Mbps 6.2ms700Mbps Chiba (64コア) Suzuk(64コア) 1.7ms 880Mbps 6.1ms 740Mbps 1.5ms 900Mbps 6.4ms 750Mbps Istbs (64コア) Kototoi (64コア) 0.3ms 890Mbps Firewall 4. MC-MPIの評価
評価に用いたベンチマーク • NAS Parallel Benchmarks (NPB)(derWijngaart ‘02) • MPIライブラリの性能や並列計算環境の性能の評価に広く用いられているベンチマーク • 異なる通信パターンの複数のベンチマークからなる • BT、EP、IS、LU、MG、SP • Distributed Verification Environment (DiVinE)(Barnat et al. ‘06) • MPIで記述されたモデル検査ツール • 多くのメモリを要するので、複数のクラスタを用いることができると、より大規模な問題を扱うことができる 4. MC-MPIの評価
実験1 接続数と性能の関係 • 接続数を変化させたときの性能をNPBとDiVinEで測定 • Manual (GridMPI-like) • クラスタ内では全対全で接続を確立 • クラスタ間の通信のために手動で中継プロセスを1, 10, 20, …, 60個設定 • MC-MPI • βを変化させて接続数を10%, 20%, …, 100%に制限 • Random • ランダムに接続数を10%, 20%, …, 100%に制限 4. MC-MPIの評価
実験1 結果--Manual (1/3) Block Tridiagonal (BT) Embarrassingly Parallel (EP) 4. MC-MPIの評価
実験1 結果--Manual (2/3) Integer Sort (IS) Lower Upper (LU) 4. MC-MPIの評価
実験1 結果--Manual (3/3) Multi Grid (MG) Scalar Pentadiagonal (SP) 4. MC-MPIの評価
実験1 結果--NPB (1/5) Lower Upper (LU) Successive Over-Relaxation (SOR) 4. MC-MPIの評価
実験1 結果--NPB (2/5) Block Tridiagonal (BT) Multi Grid (MG) 4. MC-MPIの評価
実験1 結果--NPB (3/5) Scalar Pentadiagonal (SP) 4. MC-MPIの評価
実験1 結果--NPB (4/5) Embarrassingly Parallel (EP) EPはほとんど通信を行わない 4. MC-MPIの評価
実験1 結果--NPB (5/5) Integer Sort (IS) Allreduce-Alltoall-Alltoallv 4. MC-MPIの評価
実験1 結果--DiVinE Distributed Verification Environment (DiVinE) 4. MC-MPIの評価
実験2 遅延接続確立 • MC-MPIの遅延接続確立とMPICH-likeな遅延接続確立を比較 • MC-MPI • 接続数が30%に制限されるようにβを選択 • MPICH-like • 接続数に制限を設けずにオンデマンドに接続を確立 4. MC-MPIの評価
実験2 結果 確立された接続の数 性能 4. MC-MPIの評価
実験3 ランク割当て • 3つのランク割当てを比較 • Random(ベースライン) • Hostname(よく用いられる手法) • 実ホスト名(1パターン) • ホスト名が違っていたら?(23パターン) • MC-MPI (QAP) suzukXXX chibaXXX kototoiXXX istbsXXX 4. MC-MPIの評価
実験3 結果 (1/3) LU MG Random Hostname Hostname (Best) Hostname (Worst) MC-MPI (QAP) 4. MC-MPIの評価
実験3 結果 (2/3) BT SP Random Hostname Hostname (Best) Hostname (Worst) MC-MPI (QAP) 4. MC-MPIの評価
実験3 結果 (3/3) EP IS Random Hostname Hostname (Best) Hostname (Worst) MC-MPI (QAP) 4. MC-MPIの評価
MC-MPIのまとめ • 広域環境用の接続管理とランク割当てを提案 • それらを用いてMC-MPIを実装 • 4クラスタ256コアの実広域環境で提案手法の有効性を確認 • 接続管理 • 全対全/Random/Manual以上の性能 • 遅延接続確立 • MPICH-like以上の性能 • ランク割当て • Random/Hostname以上の性能 4. MC-MPIの評価
発表の流れ • はじめに • 関連研究 • MC-MPIの設計と実装 • MC-MPIの評価 • SSOCK • おわりに