アーキテクチャパラメータを利用した並列 gc の性能予測

22
アアアアアアアアアアアアアアアアアアア GC アアア アア アアアア アアアアア アア アア / アア アアア / アア アア

Upload: kimn

Post on 30-Jan-2016

37 views

Category:

Documents


0 download

DESCRIPTION

アーキテクチャパラメータを利用した並列 GC の性能予測. 東京大学 米澤研究室 遠藤 敏夫/田浦 健次朗/米澤 明憲. 様々な並列アーキテクチャ. 分散メモリマシン MPP クラスタ 共有メモリマシン(本研究の対象) SMP (symmetric multiprocessor) DSM (distributed shared memory) ソフトウェア DSM プログラムの記述移植性があっても性能移植性があるとは限らない. プログラム性能予測の必要性. 同一プログラムの速度がマシン毎に違うことも 理由はレイテンシの違い?メモリ構造の違い? - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: アーキテクチャパラメータを利用した並列 GC の性能予測

アーキテクチャパラメータを利用した並列 GC の性能予測

東京大学 米澤研究室遠藤 敏夫 / 田浦 健次朗 / 米澤 明

Page 2: アーキテクチャパラメータを利用した並列 GC の性能予測

様々な並列アーキテクチャ

分散メモリマシン MPP クラスタ

共有メモリマシン ( 本研究の対象 ) SMP (symmetric multiprocessor) DSM (distributed shared memory) ソフトウェア DSM

プログラムの記述移植性があっても性能移植性があるとは限らない

Page 3: アーキテクチャパラメータを利用した並列 GC の性能予測

プログラム性能予測の必要性

同一プログラムの速度がマシン毎に違うことも 理由はレイテンシの違い?メモリ構造の違い?

未知の計算機での速度を知りたい 今よりプロセッサ数が増えたら?通信が速くなったら?

性能の理由を定量的に議論できるモデルが欲しい

1マシン 2マシン

プロセッサ数

実行速度

Page 4: アーキテクチャパラメータを利用した並列 GC の性能予測

性能予測研究の動向 ( 非常にいい加減 )

本研究の対象 : 共有メモリマシン (SMP, DSM) 不規則的プログラム ( 並列 GC)

不規則的プログラムの研究

分散メモリの研究 > 共有メモリの研究

マイクロベンチマークの研究規則的プログラムの研究 >

明示的な通信 キャッシュミスによる通信

Page 5: アーキテクチャパラメータを利用した並列 GC の性能予測

本研究の対象ハードウェア (1):Sun Enterprise 10000

64PE SMP ・・・ メモリレイテンシは場所によらない レイテンシ : 約 600ns(contention なしの時 ) メモリ配置は自動的に均等に

一つの大きなメモリモジュールと考えて問題ない アクセス時のメモリ占有は約 20ns ( 一つの大きなメモリモ

ジュールと仮定した場合の計算上の値 )

CPU

cache

CPU

cache

CPU

cache

memory memory memory

CPU

cache

memory実際はメモリモジュールは16個

Page 6: アーキテクチャパラメータを利用した並列 GC の性能予測

本研究の対象ハードウェア (2):SGI Origin 2000

DSM ・・・ ローカル / リモートでレイテンシに差 レイテンシ : ローカル約 400ns, リモート 600ns 以上 メモリの配置は、最初にアクセスした CPU により決定

メモリモジュール毎の使用メモリの差がアクセス不均衡をひきおこし、メモリコンテンションをひきおこす

アクセス時のメモリ占有は約 200ns

CPU

cache

memory

CPU

cache

memory

CPU

cache

memory

CPU

cache

memory 実際は CPU2 個 + メモリモジュール1 個で 1 ノード

Page 7: アーキテクチャパラメータを利用した並列 GC の性能予測

本研究の対象ソフトウェア :並列マークスイープ GC[ 遠藤 et al. 97]

ユーザプログラムを止め、全プロセッサが協調してマーク・スイープ ( 以下、マークフェーズに話を絞る )

ユーザプログラムのオブジェクトグラフ= 並列 GC のタスクグラフ オブジェクトグラフの幅 = GC の並列度

動的負荷分散によるスケーラビリティの達成

sweep

PEsTime

ユーザプログラム

GC

Page 8: アーキテクチャパラメータを利用した並列 GC の性能予測

並列マークフェーズの詳細

処理概要 各 CPU は自分のルートからオブジェクトを再帰的にマーク ( マーク

ビット ON) マークスタックによる仕事管理 仕事のなくなった CPU は、他の CPU のマークスタックから仕事を

盗む

メモリアクセス内容 オブジェクト read キャッシュミスが性能に大き

く影響 マークビット test&set モデルに入れる ( 後述 ) 自分のマークスタック read/write ほとんどキャッシュにのる 他人のマークスタック read 回数は少ない

Page 9: アーキテクチャパラメータを利用した並列 GC の性能予測

研究方針

簡単な性能予測モデルを提案( 特に不規則的プログラムでは ) 正確な予測精度を達成するのは難しい。精度を上げることよりも、以下の項目を重視する。

アーキテクチャの差異による性能差をとらえる 性能頭打ちの原因をとらえる

プログラムの性質が原因?ハードウェアが原因?最近のハードでは、メモリコンテンションに注目すべ

きLoPC モデルと、 Cilk 性能モデルを合わせたモデルを提案

モデルによる予測値と実測値を比較

Page 10: アーキテクチャパラメータを利用した並列 GC の性能予測

LoPC モデル [M. Frank et al. 97]

LoPC: 分散メモリマシンの性能モデルの一つ LogP モデル - バンド幅 + message

contention contention のコストを待ち行列理論により議論

本研究では共有メモリ (DSM/SMP) 用にモデルを変更 共有メモリのキャッシュミス = 分散メモリの通信

Page 11: アーキテクチャパラメータを利用した並列 GC の性能予測

Cilk の性能モデル (1)[Blumofe et al. 94]

Cilk: 並列プログラム言語 細粒度スレッド、動的負荷分散により、不規

則的で効率的なプログラムを容易に記述可能 仕事量とクリティカルパスに基づいた性能モ

デルにより平均実行時間を保証しかし、アーキテクチャの差異を考慮に入れてい

ない

Page 12: アーキテクチャパラメータを利用した並列 GC の性能予測

Cilk の性能モデル (2)

T1: 全タスク量 (1プロセッサでの実行時間 )T∞: クリティカルパス長 のとき、Pプロセッサでの平均実行時間 TP = O(T1/P + T∞)ただし実用上は、 TP = T1/P + c∞T∞(c∞は負荷分散のコストなどに依存する定数 )

タスク

クリティカルパス中のタスク

依存関係

Page 13: アーキテクチャパラメータを利用した並列 GC の性能予測

本研究のモデルの概念図 (1)

仕事量 T1

C.P.長 T∞

CPU 数 P

定数 c∞

予測実行時間 (1)

メモリアクセスパターン

キャッシュ構造

( オブジェクト、マークビットに対する ) 予測キャッシュミス数

キャッシュミスコストを含まない値

プログラムの挙動からのデータ

アーキテクチャパラメータ

定数

Cilk モデル

DSM の場合、メモリモジュールごとのミスの統計をとる

Page 14: アーキテクチャパラメータを利用した並列 GC の性能予測

本研究のモデルの概念図 (2)

予測実行時間 (1)

予測キャッシュミス数

メモリレイテンシ

予測実行時間 (2)

キャッシュミスを含むが、contention なしと仮定した値

メモリ占有時間

LoPC モデル

予測実行時間 (3)

Contention も含む最終結果

注 : 現在のモデルは LoPC モデルと同様、バンド幅を含まない

Page 15: アーキテクチャパラメータを利用した並列 GC の性能予測

実験に使用したユーザプログラム

N-Body(Barnes-Hut N 体問題プログラム ) オブジェクトグラフは木構造 (GC の C.P.短し ) 現在の実装ではメモリ配置の偏りが大きい

CKY( 自然言語パーザ ) オブジェクトグラフは配列 +リスト (GC の C.P.長め ) メモリ配置は均等に近い

以上のプログラムを Enteprise 10000(E10K) Origin 2000(O2K)で走らせ、 GC のマークフェーズ速度の実測値と予測値を比較

Page 16: アーキテクチャパラメータを利用した並列 GC の性能予測

0

1000

2000

3000

4000

5000

6000

0 10 20 30 40 50 600

2000

4000

6000

8000

10000

0 10 20 30 40 50 60

実験結果 (1): 予測と実測の比較

1 ~ 48プロセッサの GC 速度の予測値と実測値を比較 クリティカルパス長定数 c∞=1として予測

0

1000

2000

3000

4000

5000

6000

0 10 20 30 40 50 600

2000

4000

6000

8000

10000

0 10 20 30 40 50 60

N-Body CKY

予測

実測E10K

O2K

CPU 数

GC 速度

Page 17: アーキテクチャパラメータを利用した並列 GC の性能予測

実験結果 (2): 予測結果の考察

N-Body O2K での性能頭打ちを予測できている。 モデル上の考察から、頭打ちの最大の原因はメモリア

クセス不均衡によるコンテンションのためと分かった。 ただし予測のずれは 1.3 倍程度ある ( 本発表では未解

決 ) 。CKY

頭打ちが予測できていない。 CKY での GC は C.P.長が長いので、定数 c∞の影響が大きいと考えられる。

Page 18: アーキテクチャパラメータを利用した並列 GC の性能予測

0

1000

2000

3000

4000

5000

6000

0 10 20 30 40 50 600

2000

4000

6000

8000

10000

0 10 20 30 40 50 60

実験結果 (3):クリティカルパス定数の影響

N-Body では C.P. が短いので c∞の影響はほとんどない CKY での実測値との比較から、 c∞は 4~8程度らしい

同時に、 CKY では C.P. の長さが頭打ちの最大の原因だと分かった

0

1000

2000

3000

4000

5000

6000

0 10 20 30 40 50 60

0

2000

4000

6000

8000

10000

0 10 20 30 40 50 60

N-Body CKY

E10K

O2K

C∞=1C∞=2C∞=4C∞=8C∞=16

実測

Page 19: アーキテクチャパラメータを利用した並列 GC の性能予測

0

1000

2000

3000

4000

5000

6000

7000

0 50 100 150 200 250 3000

2000

4000

6000

8000

10000

0 50 100 150 200 250 300

実験結果 (4):未知のプロセッサ台数での予測

32台時のオブジェクトグラフを基に、 256台までの性能を予測 c∞=8として予測

N-Body/E10K ですら、頭打ちになるだろうと予測された台数が多いと、 SMP でもコンテンションが問題になりそう

0

1000

2000

3000

4000

5000

6000

7000

0 50 100 150 200 250 3000

2000

4000

6000

8000

10000

0 50 100 150 200 250 300

N-Body CKY

E10K

O2K

Page 20: アーキテクチャパラメータを利用した並列 GC の性能予測

まとめ

共有メモリマシン上の不規則的プログラム ( 並列GC) の性能予測モデルを提案 アーキテクチャパラメータを考慮に入れるために LoPC

モデルを利用 不規則なタスクグラフをとらえるために Cilk モデルを利

用予測値と実測値との比較性能の頭打ちの原因を考察

N-Body (O2K) ではメモリコンテンションが最大の原因 CKY ではクリティカルパスの長さが最大の原因

Page 21: アーキテクチャパラメータを利用した並列 GC の性能予測

今後の課題

モデルの改良 予測精度の向上

バンド幅、 cache write back などの導入 定数 c∞の詳細な考察

動的負荷分散コストとの関連の調査

予測結果のアルゴリズム自動選択への利用モデルの適用範囲の拡張

ソフトウェア DSMへの拡張 一般の不規則的並列プログラムへの拡張

Page 22: アーキテクチャパラメータを利用した並列 GC の性能予測

コードネーム 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/