全体ミーティング (4/25)

34
全全全全全全 (4/25) 全全全全

Upload: malina

Post on 08-Feb-2016

44 views

Category:

Documents


0 download

DESCRIPTION

全体ミーティング (4/25). 村田 雅之. 今日の内容. 修士研究の進捗について. テーマ. Deterministic Parallel Copying Garbage Collection 結果の決定性が保証された並列コピー GC. 動機. GC を並列化したい 高速化が期待できる 並列化すると特有の問題がある 結果が実行ごとに変わることがある 実行順序が不定である. 並列プログラムの検証に関する研究. Deterministic Parallel Java (DPJ) Bocchino Jr. et al., OOPSLA 2009 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 全体ミーティング  (4/25)

全体ミーティング (4/25)

村田雅之

Page 2: 全体ミーティング  (4/25)

今日の内容• 修士研究の進捗について

Page 3: 全体ミーティング  (4/25)

テーマ• Deterministic Parallel Copying Garbage

Collection– 結果の決定性が保証された並列コピー GC

Page 4: 全体ミーティング  (4/25)

動機• GC を並列化したい– 高速化が期待できる

• 並列化すると特有の問題がある– 結果が実行ごとに変わることがある• 実行順序が不定である

Page 5: 全体ミーティング  (4/25)

• Deterministic Parallel Java (DPJ)– Bocchino Jr. et al., OOPSLA 2009– 型検査でメモリ領域へのアクセスを把握する– 実行結果の決定性を検証する

• これを用いる

並列プログラムの検証に関する研究

Page 6: 全体ミーティング  (4/25)

本研究のアプローチ• 並列 GC のアルゴリズムの決定性を DPJ の

型システムを応用して検証する

– 並列 GC の正しさを検証するための第一歩• 結果の決定性が保証されれば

逐次実行環境での正しさを検証するだけで済む

Page 7: 全体ミーティング  (4/25)

まずやろうとしたこと• 単純な並列 GC のアルゴリズムを実装して

みる

Page 8: 全体ミーティング  (4/25)

本研究でのヒープのモデル化• 単純な整数の配列として表現する– 配列のインデックスがアドレスを表す

1 4 4 1 3 7 4 5

0 1 2 3 4 5 6 7

Page 9: 全体ミーティング  (4/25)

単純な並列 GC アルゴリズム• ヒープを分割してそれぞれの領域について

並列にコピー GC を実行しそれを統合する

Page 10: 全体ミーティング  (4/25)

単純な並列 GC アルゴリズム1. 分割フェイズ

• ヒープを複数の区間に分割• 区間内にある root から到達可能なデータを

コピーする• 区間外へのポインタが現れたら一時停止

Page 11: 全体ミーティング  (4/25)

分割フェイズの例

1 4 4 1 3 7 4 5

0 1 2 3 4 5 6 7

0 1 2 3 4 5 6 7

region From

region To

Page 12: 全体ミーティング  (4/25)

分割フェイズの例

1 4 4 1 3 7 4 5

0 1 2 3 4 5 6 7

0 1 2 3 4 5 6 7

region From0 region From1

region To1region To0

Page 13: 全体ミーティング  (4/25)

分割フェイズの例

1 4 4 1 3 7 4 5

0 1 2 3 4 5 6 7

? ?

0 1 2 3 4 5 6 7

Page 14: 全体ミーティング  (4/25)

分割フェイズの例

1 4 4 1 3 7 4 5

0 1 2 3 4 5 6 7

1 ? 5 ?

0 1 2 3 4 5 6 7

Page 15: 全体ミーティング  (4/25)

分割フェイズの例

1 4 4 1 3 7 4 5

0 1 2 3 4 5 6 7

1 ? 5 4

0 1 2 3 4 5 6 7

Page 16: 全体ミーティング  (4/25)

分割フェイズの例

1 4 4 1 3 7 4 5

0 1 2 3 4 5 6 7

1 ? 5 4

0 1 2 3 4 5 6 7

範囲外へのポインタは

後回しにする

Page 17: 全体ミーティング  (4/25)

単純な並列 GC のアルゴリズム2. 統合フェイズ

• 隣り合う領域をひとつの領域として扱う• その範囲内でコピーを続ける

Page 18: 全体ミーティング  (4/25)

統合フェイズの例

1 4 4 1 3 7 4 5

0 1 2 3 4 5 6 7

1 ? 5 4

0 1 2 3 4 5 6 7

Page 19: 全体ミーティング  (4/25)

統合フェイズの例

1 4 4 1 3 7 4 5

0 1 2 3 4 5 6 7

1 2 ? 5 4

0 1 2 3 4 5 6 7

Page 20: 全体ミーティング  (4/25)

統合フェイズの例

1 4 4 1 3 7 4 5

0 1 2 3 4 5 6 7

1 2 3 1 5 4

0 1 2 3 4 5 6 7

Page 21: 全体ミーティング  (4/25)

単純なアルゴリズムを実装• まずはこのアルゴリズムを実装した ( つも

りだった )

• 実は 2 分割の場合しか考えられていなかった– 4 分割以上すると不都合なことが起こる

Page 22: 全体ミーティング  (4/25)

見落としていた例

1 4 4 2 12 7 4 2

0 1 2 3 4 5 6 7 ・・・

Page 23: 全体ミーティング  (4/25)

見落としていた例

1 4 4 2 12 7 4 2

0 1 2 3 4 5 6 7

1 ? 5 ?

0 1 2 3 4 5 6 7

・・・

・・・

Page 24: 全体ミーティング  (4/25)

見落としていた例

1 4 4 2 12 7 4 2

0 1 2 3 4 5 6 7

1 2 ? 5 ?

0 1 2 3 4 5 6 7

・・・

・・・

さらに範囲外へのポイ

ンタ

Page 25: 全体ミーティング  (4/25)

見落としていた例

1 4 4 2 12 7 4 2

0 1 2 3 4 5 6 7

1 2 ? 2 5 3

0 1 2 3 4 5 6 7

・・・

・・・

データは前からつめていく方針

Page 26: 全体ミーティング  (4/25)

見落としていた例

1 4 4 2 12 7 4 2

0 1 2 3 4 5 6 7

1 2 ? 2 5 3

0 1 2 3 4 5 6 7

・・・

・・・

終わっていないのに無視されてしま

うここから前は終わっ

たことにしていた

Page 27: 全体ミーティング  (4/25)

修正の方針• 統合する過程では複数個の処理されて

いないポインタが存在• まだコピーされていないデータのイン

デックスを入れるキューを用意してそれを利用する– など

Page 28: 全体ミーティング  (4/25)

性能について• 未完成ではあるが実行時間を計測してみ

た– おおまかには評価できそう?– 正確な実装ではさらに計算量が増えそう

• CPU : Intel Core i7 2.2GHz (4 コア )• メモリ : 4GB• OS : Mac OS X 10.6.7• Java 1.6.0_24

Page 29: 全体ミーティング  (4/25)

分割サイズを変えてみる• 長さ 65536 の配列について実行– ランダムにポインタを設定

• 配列を分割する最小サイズを変えてみる• 5 回実行したときの最速値を計測

Page 30: 全体ミーティング  (4/25)

結果

• 横軸は分割のサイズ• 縦軸は実行時間 (μs)• 128 から落ち着いている

16 32 64 128 256 512 10240

2000

4000

6000

8000

10000

12000

14000

16000

18000

Page 31: 全体ミーティング  (4/25)

逐次アルゴリズムとの比較• 分割・並列化によるコストが大きい– 予想はしていたが

実行時間 (μs)

128 まで分割 6265

逐次アルゴリズム 215

Page 32: 全体ミーティング  (4/25)

ワーカースレッドの数を変える• 1 から 4 で変えてみた– DPJ のオプション

• 長さ 65536 の配列• 分割サイズは 128

Page 33: 全体ミーティング  (4/25)

結果

• 1 スレッドの場合と比較した速さ• 4 スレッドで約 1.3 倍– 逐次部分が多いため?

1 2 3 41

1.5

2

2.5

3

3.5

4

4.5

Page 34: 全体ミーティング  (4/25)

次にすること• 単純なアルゴリズムの実装の修正• 性能向上を考える– アルゴリズムの工夫– 既存アルゴリズムを参考にするなど