アーキテクチャパラメータを利用した 並列GCの性能予測 東京大学 米澤研究室 遠藤 敏夫/田浦 健次朗/米澤 明憲 様々な並列アーキテクチャ 分散メモリマシン MPP クラスタ 共有メモリマシン(本研究の対象) SMP (symmetric multiprocessor) DSM (distributed shared memory) ソフトウェアDSM プログラムの記述移植性があっても性能移植 性があるとは限らない プログラム性能予測の必要性 マシン1 マシン2 実行速度 プロセッサ数 同一プログラムの速度がマシン毎に違うことも 理由はレイテンシの違い?メモリ構造の違い? 未知の計算機での速度を知りたい 今よりプロセッサ数が増えたら?通信が速くなったら? 性能の理由を定量的に議論できるモデルが欲しい 性能予測研究の動向(非常にいい加減) 分散メモリの研究 > 共有メモリの研究 明示的な通信 キャッシュミスによる通信 マイクロベンチマークの研究 > 規則的プログラムの研究 不規則的プログラムの 研究 本研究の対象: 共有メモリマシン(SMP, DSM) 不規則的プログラム(並列GC) 本研究の対象ハードウェア(1): Sun Enterprise 10000 CPU CPU CPU CPU cache cache cache cache memory memory memory memory 実際はメモリモジュールは16個 64PE SMP・・・ メモリレイテンシは場所によらない レイテンシ: 約600ns(contentionなしの時) メモリ配置は自動的に均等に 一つの大きなメモリモジュールと考えて問題ない アクセス時のメモリ占有は約20ns (一つの大きなメモリモジュール と仮定した場合の計算上の値) 本研究の対象ハードウェア(2): SGI Origin 2000 CPU CPU CPU CPU cache cache cache cache memory memory memory memory 実際はCPU2個+メモリモジュール 1個で1ノード DSM・・・ ローカル/リモートでレイテンシに差 レイテンシ: ローカル約400ns, リモート600ns以上 メモリの配置は、最初にアクセスしたCPUにより決定 メモリモジュール毎の使用メモリの差がアクセス不均衡をひきおこし、 メモリコンテンションをひきおこす アクセス時のメモリ占有は約200ns 本研究の対象ソフトウェア: 並列マークスイープGC[遠藤 et al. 97] ユーザプログラム GC PEs Time sweep ユーザプログラムを止め、全プロセッサが協調してマーク・ス イープ(以下、マークフェーズに話を絞る) ユーザプログラムのオブジェクトグラフ = 並列GCのタスクグラフ オブジェクトグラフの幅 = GCの並列度 動的負荷分散によるスケーラビリティの達成 並列マークフェーズの詳細 処理概要 各CPUは自分のルートからオブジェクトを再帰的にマーク(マークビット ON) マークスタックによる仕事管理 仕事のなくなったCPUは、他のCPUのマークスタックから仕事を盗む メモリアクセス内容 オブジェクトread マークビットtest&set 自分のマークスタックread/write 他人のマークスタックread キャッシュミスが性能に大きく影響 モデルに入れる(後述) ほとんどキャッシュにのる 回数は少ない 研究方針 簡単な性能予測モデルを提案 (特に不規則的プログラムでは)正確な予測精度を達成するのは難しい。 精度を上げることよりも、以下の項目を重視する。 アーキテクチャの差異による性能差をとらえる 性能頭打ちの原因をとらえる プログラムの性質が原因?ハードウェアが原因? 最近のハードでは、メモリコンテンションに注目すべき LoPCモデルと、Cilk性能モデルを合わせたモデルを提案 モデルによる予測値と実測値を比較 LoPCモデル[M. Frank et al. 97] LoPC: 分散メモリマシンの性能モデルの一つ LogPモデル - バンド幅 + message contention contentionのコストを待ち行列理論により議論 本研究では共有メモリ(DSM/SMP)用にモデルを変更 共有メモリのキャッシュミス=分散メモリの通信 Cilkの性能モデル(1)[Blumofe et al. 94] Cilk: 並列プログラム言語 細粒度スレッド、動的負荷分散により、不規則的 で効率的なプログラムを容易に記述可能 仕事量とクリティカルパスに基づいた性能モデ ルにより平均実行時間を保証 しかし、アーキテクチャの差異を考慮に入れていない Cilkの性能モデル(2) タスク クリティカルパス中 のタスク 依存関係 T1: 全タスク量(1プロセッサでの実行時間) T∞: クリティカルパス長 のとき、 Pプロセッサでの平均実行時間 TP = O(T1/P + T∞) ただし実用上は、 TP = T1/P + c∞T∞ (c∞は負荷分散のコストなどに依存する定数) 本研究のモデルの概念図(1) 仕事量T1 C.P.長 T∞ Cilkモデル プログラムの挙動 からのデータ 予測実行時間(1) アーキテクチャ パラメータ CPU数 P 定数c∞ メモリアクセス パターン キャッシュ構造 キャッシュミスコストを 含まない値 定数 (オブジェクト、マーク ビットに対する)予測 キャッシュミス数 DSMの場合、メモリモジュール ごとのミスの統計をとる 本研究のモデルの概念図(2) 予測実行時間(1) 予測キャッ シュミス数 メモリレイテンシ メモリ占有時間 LoPCモデル 予測実行時間(2) キャッシュミスを含むが、 contentionなしと仮定した値 予測実行時間(3) Contentionも含む 最終結果 注: 現在のモデルはLoPCモデルと同様、バンド幅を含まない 実験に使用したユーザプログラム N-Body(Barnes-Hut N体問題プログラム) オブジェクトグラフは木構造(GCのC.P.短し) 現在の実装ではメモリ配置の偏りが大きい CKY(自然言語パーザ) オブジェクトグラフは配列+リスト(GCのC.P.長め) メモリ配置は均等に近い 以上のプログラムを Enteprise 10000(E10K) Origin 2000(O2K) で走らせ、GCのマークフェーズ速度の実測値と予測値を比較 実験結果(1): 予測と実測の比較 N-Body 6000 予測 5000 4000 E10K GC速度 8000 6000 3000 4000 2000 実測 1000 CPU数 2000 0 0 0 10 20 30 40 50 60 6000 10000 5000 8000 4000 O2K CKY 10000 0 10 20 30 40 50 60 0 10 20 30 40 50 60 6000 3000 4000 2000 2000 1000 0 0 0 10 20 30 40 50 60 1~48プロセッサのGC速度の予測値と実測値を比較 クリティカルパス長定数c∞=1として予測 実験結果(2): 予測結果の考察 N-Body O2Kでの性能頭打ちを予測できている。 モデル上の考察から、頭打ちの最大の原因はメモリアク セス不均衡によるコンテンションのためと分かった。 ただし予測のずれは1.3倍程度ある(本発表では未解決)。 CKY 頭打ちが予測できていない。CKYでのGCはC.P.長が長い ので、定数c∞の影響が大きいと考えられる。 実験結果(3): クリティカルパス定数の影響 N-Body 6000 5000 6000 3000 4000 2000 2000 1000 0 0 0 10 20 30 40 50 60 6000 10000 5000 8000 4000 O2K C∞=1 C∞=2 C∞=4 C∞=8 C∞=16 実測 8000 4000 E10K CKY 10000 0 10 20 30 40 50 60 0 10 20 30 40 50 60 6000 3000 4000 2000 2000 1000 0 0 0 10 20 30 40 50 60 N-BodyではC.P.が短いのでc∞の影響はほとんどない CKYでの実測値との比較から、 c∞は4~8程度らしい 同時に、CKYではC.P.の長さが頭打ちの最大の原因だと分かった 実験結果(4): 未知のプロセッサ台数での予測 N-Body 7000 6000 8000 5000 E10K 4000 6000 3000 4000 2000 2000 1000 0 0 7000 CKY 10000 0 50 100 150 200 250 300 0 50 100 150 200 250 300 0 50 100 150 200 250 300 10000 6000 O2K 5000 8000 4000 6000 3000 4000 2000 1000 2000 0 0 50 100 150 200 250 300 0 32台時のオブジェクトグラフを基に、256台までの性能を予測 c∞=8として予測 N-Body/E10Kですら、頭打ちになるだろうと予測された 台数が多いと、SMPでもコンテンションが問題になりそう まとめ 共有メモリマシン上の不規則的プログラム(並列 GC)の性能予測モデルを提案 アーキテクチャパラメータを考慮に入れるためにLoPCモ デルを利用 不規則なタスクグラフをとらえるためにCilkモデルを利用 予測値と実測値との比較 性能の頭打ちの原因を考察 N-Body (O2K)ではメモリコンテンションが最大の原因 CKYではクリティカルパスの長さが最大の原因 今後の課題 モデルの改良 予測精度の向上 バンド幅、cache write backなどの導入 定数c∞の詳細な考察 動的負荷分散コストとの関連の調査 予測結果のアルゴリズム自動選択への利用 モデルの適用範囲の拡張 ソフトウェアDSMへの拡張 一般の不規則的並列プログラムへの拡張 コードネームSGC C/C++プログラムのための並列マークスイープGC Boehm GC ベース Boehm GC APIとほぼcompatible 任意のC/C++コンパイラ使用可 多種のマルチプロセッサマシンで動作 Linux/Intel processor Solaris/SPARC processor, Solaris/Intel processor IRIX/MIPS processor http://www.yl.is.s.u-tokyo.ac.jp/gc/
© Copyright 2024 ExpyDoc