Transcript ppt
P,Q比が変更可能なScaLAPACKの コスト見積もり関数の開発 修士2年 斉藤 宏樹 研究背景 • グリッド – ネットワークで遠隔地にある計算資源を接続 • グリッドコンピューティング – グリッドを利用して大規模計算 アプリケーションのスケジューリングが必要 スケジューリングの必要性 • 適切な計算資源を選択することが困難 – グリッドはCPUやネットワーク性能等が不均質 – 計算資源の状態が動的に変動 従来の均質環境と大きく異なる特徴を持つ スケジューリングへのアプローチ • Launch-time Scheduling – アプリケーション実行前のみ行う – 適切な計算資源を選択 • ReScheduling – アプリケーション実行中にも行う – 動的情報を考慮しながら計算資源を再選択 • Meta-Scheduling – 同時に同じ計算資源で実行するアプリケーション を考慮して順序などを決定 研究目標 • グリッドにおけるスケジューラの開発 – 分散アプリケーションを対象 – 有効な計算資源を選択したスケジュール生成 • ScaLAPACKのスケジューラ開発 – アプリケーション実行前に計算資源を選択 ScaLAPACKは計算と通信を頻繁に実行するため, スケジューリングの対象として有効 ScaLAPACKとは? • 分散メモリ用の線形計算ライブラリ – Scalable LAPACK • 共有メモリ用のLAPACKを並列用に拡張 • 通信しながら行列を分解(MPIなど使用) – LU分解,QR分解 • 計算資源に合わせてパラメータ調整可能 – 問題サイズ,ブロックサイズ,P,Q比など • 科学技術分野で使用される重要なライブラリ P,Q比とは?(2次元) • 行方向と列方向へのプロセスの割り当て方 – 6ノードに行列を分配する場合 コスト見積もり関数とは? スケジューラ 従来のコスト見積もり関数 • パラメータに制限 – Pが1に固定(1次元のみ) 開発したコスト見積もり関数 • P,Q比が変更可能 – 2次元の方が1次元よりも実行時間は短くなる P,Q比が変更可能なコスト見積もり関数の開発 • 密連立一次方程式を解くアルゴリズムを対象 – PDGESVルーチン – LU分解による行列演算時間を見積もる 1. 2. 3. 4. 5. 従来のコスト見積もり関数を調査 PDGESVルーチンのアルゴリズム解析 演算量と通信量の見積もり値・方法を決定 評価(見積もり値の正確さ) 修正 ブロックLU分解フェーズ(1) • 最大要素の探索(PDAMAX) ブロックLU分解フェーズ(2) • ブロック列において行交換(PDSWAP) ブロックLU分解フェーズ(3) • ブロック列(L)の計算(PDSCAL) ブロックLU分解フェーズ(4) • ブロックパネル(U)の更新(PDGER) 演算範囲の推移 • これまでの演算をNB-1回繰り返す ピボット情報の送信 • 列方向にBroadCast 各ブロック列において行交換 • 行方向でSendRecv ブロック行の更新フェーズ(1) • 分解済みブロックパネル(L)の送信 – BroadCast ブロック行の更新フェーズ(2) • ブロック行(U)の更新 未更新行列の更新フェーズ(1) • 分解済みブロック(L)の送信 – BroadCast 未更新行列の更新フェーズ(2) • 分解済みブロックの送信 – BroadCast 未更新行列の更新フェーズ(3) • 行列積の演算(PDGEMM) コスト見積もり関数の開発 • 演算量の見積もり – 計算時間の大部分を占めるルーチンを分析 • DGEMMルーチン – 行列更新の浮動小数点演算量を見積もる • 演算時間の算出 – DGEMMのピーク性能値(Flops)を用いる 演算量(Flops)/ピーク性能(Flops)=時間(sec) 通信時間の見積もり • SendRecv – 行交換の際に発生(P≧2) – 送受信にかかる時間を計算 • BroadCast – Split-ring方式を見積もる – 送信ステップは(n+1)/2 Split-ringの見積もり • プロセス番号0の送受信が終了するまで 数値実験(関数の評価) • ScaLAPACKをクラスタで実行 – NWSにより計算資源情報を収集し関数へ入力 • CPU利用可能率,バンド幅,レイテンシ収集 – ATLAS, High Performance BLASを使用 • 正確な演算性能で計算させる – コスト見積もり関数による見積もり値と比較 • ParadynによりScaLAPACKを実行 – Paradynにより演算時間や送受信量を計測 – 演算時間と送受信量を見積もり値と比較 実験環境 ・静的情報 Cluster クロック周波数(MHz) FLOPS/クロック周波数(Hz) DGEMMピーク性能(%) メモリ(MB) ノード数 Gregor 1000 1.0 60 512 30 Xenia 2400 2.0 87.5 512 48 ・動的情報(NWSより) CPU利用可能率(%) バンド幅(Mbps) レイテンシ(μsec) [0.0 – 1.0] - ScaLAPACKのパラメータ ・Gregor Problem Size(N) Block Size(NB) Process Grid(P,Q) 9600 80 (1×30),(2×15),(3×10),(5×6), (6×5),(10×3),(15×2),(30×1) ・Xenia Problem Size(N) Block Size(NB) Process Grid(P,Q) 11520 80 (1×48),(2×24),(3×16),(4×12), (6×8),(8×6),(12×4),(16×3), (24×2),(48×1) 実測値と見積もり値の比較 ・Gregor ・Xenia 最小実行時間をとるP,Qの値が異なる 見積もり値の誤差 ・Gregor ・Xenia GregorとXeniaで誤差に大きな差 演算時間・送受信量の比較(Gregor) 演算時間の誤差は小さい まとめ • P,Q比が変更可能な見積もり関数開発 – PDGESVルーチン解析 – 送受信の見積もりに行交換を新しく追加 – Pの増大による送受信量の減少を算出 • 実測値と見積もり値の比較 – クラスタにScaLAPACK,NWSをインストール – Paradynにより演算時間と送受信量を比較 誤差の原因を把握して修正する必要がある