全体ミーティング (4/25)
DESCRIPTION
全体ミーティング (4/25). 村田 雅之. 今日の内容. 修士研究の進捗について. テーマ. Deterministic Parallel Copying Garbage Collection 結果の決定性が保証された並列コピー GC. 動機. GC を並列化したい 高速化が期待できる 並列化すると特有の問題がある 結果が実行ごとに変わることがある 実行順序が不定である. 並列プログラムの検証に関する研究. Deterministic Parallel Java (DPJ) Bocchino Jr. et al., OOPSLA 2009 - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: 全体ミーティング (4/25)](https://reader035.vdocuments.site/reader035/viewer/2022062309/56815b3a550346895dc9133b/html5/thumbnails/1.jpg)
全体ミーティング (4/25)
村田雅之
![Page 2: 全体ミーティング (4/25)](https://reader035.vdocuments.site/reader035/viewer/2022062309/56815b3a550346895dc9133b/html5/thumbnails/2.jpg)
今日の内容• 修士研究の進捗について
![Page 3: 全体ミーティング (4/25)](https://reader035.vdocuments.site/reader035/viewer/2022062309/56815b3a550346895dc9133b/html5/thumbnails/3.jpg)
テーマ• Deterministic Parallel Copying Garbage
Collection– 結果の決定性が保証された並列コピー GC
![Page 4: 全体ミーティング (4/25)](https://reader035.vdocuments.site/reader035/viewer/2022062309/56815b3a550346895dc9133b/html5/thumbnails/4.jpg)
動機• GC を並列化したい– 高速化が期待できる
• 並列化すると特有の問題がある– 結果が実行ごとに変わることがある• 実行順序が不定である
![Page 5: 全体ミーティング (4/25)](https://reader035.vdocuments.site/reader035/viewer/2022062309/56815b3a550346895dc9133b/html5/thumbnails/5.jpg)
• Deterministic Parallel Java (DPJ)– Bocchino Jr. et al., OOPSLA 2009– 型検査でメモリ領域へのアクセスを把握する– 実行結果の決定性を検証する
• これを用いる
並列プログラムの検証に関する研究
![Page 6: 全体ミーティング (4/25)](https://reader035.vdocuments.site/reader035/viewer/2022062309/56815b3a550346895dc9133b/html5/thumbnails/6.jpg)
本研究のアプローチ• 並列 GC のアルゴリズムの決定性を DPJ の
型システムを応用して検証する
– 並列 GC の正しさを検証するための第一歩• 結果の決定性が保証されれば
逐次実行環境での正しさを検証するだけで済む
![Page 7: 全体ミーティング (4/25)](https://reader035.vdocuments.site/reader035/viewer/2022062309/56815b3a550346895dc9133b/html5/thumbnails/7.jpg)
まずやろうとしたこと• 単純な並列 GC のアルゴリズムを実装して
みる
![Page 8: 全体ミーティング (4/25)](https://reader035.vdocuments.site/reader035/viewer/2022062309/56815b3a550346895dc9133b/html5/thumbnails/8.jpg)
本研究でのヒープのモデル化• 単純な整数の配列として表現する– 配列のインデックスがアドレスを表す
1 4 4 1 3 7 4 5
0 1 2 3 4 5 6 7
![Page 9: 全体ミーティング (4/25)](https://reader035.vdocuments.site/reader035/viewer/2022062309/56815b3a550346895dc9133b/html5/thumbnails/9.jpg)
単純な並列 GC アルゴリズム• ヒープを分割してそれぞれの領域について
並列にコピー GC を実行しそれを統合する
![Page 10: 全体ミーティング (4/25)](https://reader035.vdocuments.site/reader035/viewer/2022062309/56815b3a550346895dc9133b/html5/thumbnails/10.jpg)
単純な並列 GC アルゴリズム1. 分割フェイズ
• ヒープを複数の区間に分割• 区間内にある root から到達可能なデータを
コピーする• 区間外へのポインタが現れたら一時停止
![Page 11: 全体ミーティング (4/25)](https://reader035.vdocuments.site/reader035/viewer/2022062309/56815b3a550346895dc9133b/html5/thumbnails/11.jpg)
分割フェイズの例
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)](https://reader035.vdocuments.site/reader035/viewer/2022062309/56815b3a550346895dc9133b/html5/thumbnails/12.jpg)
分割フェイズの例
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)](https://reader035.vdocuments.site/reader035/viewer/2022062309/56815b3a550346895dc9133b/html5/thumbnails/13.jpg)
分割フェイズの例
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)](https://reader035.vdocuments.site/reader035/viewer/2022062309/56815b3a550346895dc9133b/html5/thumbnails/14.jpg)
分割フェイズの例
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)](https://reader035.vdocuments.site/reader035/viewer/2022062309/56815b3a550346895dc9133b/html5/thumbnails/15.jpg)
分割フェイズの例
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)](https://reader035.vdocuments.site/reader035/viewer/2022062309/56815b3a550346895dc9133b/html5/thumbnails/16.jpg)
分割フェイズの例
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)](https://reader035.vdocuments.site/reader035/viewer/2022062309/56815b3a550346895dc9133b/html5/thumbnails/17.jpg)
単純な並列 GC のアルゴリズム2. 統合フェイズ
• 隣り合う領域をひとつの領域として扱う• その範囲内でコピーを続ける
![Page 18: 全体ミーティング (4/25)](https://reader035.vdocuments.site/reader035/viewer/2022062309/56815b3a550346895dc9133b/html5/thumbnails/18.jpg)
統合フェイズの例
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)](https://reader035.vdocuments.site/reader035/viewer/2022062309/56815b3a550346895dc9133b/html5/thumbnails/19.jpg)
統合フェイズの例
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)](https://reader035.vdocuments.site/reader035/viewer/2022062309/56815b3a550346895dc9133b/html5/thumbnails/20.jpg)
統合フェイズの例
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)](https://reader035.vdocuments.site/reader035/viewer/2022062309/56815b3a550346895dc9133b/html5/thumbnails/21.jpg)
単純なアルゴリズムを実装• まずはこのアルゴリズムを実装した ( つも
りだった )
• 実は 2 分割の場合しか考えられていなかった– 4 分割以上すると不都合なことが起こる
![Page 22: 全体ミーティング (4/25)](https://reader035.vdocuments.site/reader035/viewer/2022062309/56815b3a550346895dc9133b/html5/thumbnails/22.jpg)
見落としていた例
1 4 4 2 12 7 4 2
0 1 2 3 4 5 6 7 ・・・
![Page 23: 全体ミーティング (4/25)](https://reader035.vdocuments.site/reader035/viewer/2022062309/56815b3a550346895dc9133b/html5/thumbnails/23.jpg)
見落としていた例
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)](https://reader035.vdocuments.site/reader035/viewer/2022062309/56815b3a550346895dc9133b/html5/thumbnails/24.jpg)
見落としていた例
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)](https://reader035.vdocuments.site/reader035/viewer/2022062309/56815b3a550346895dc9133b/html5/thumbnails/25.jpg)
見落としていた例
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)](https://reader035.vdocuments.site/reader035/viewer/2022062309/56815b3a550346895dc9133b/html5/thumbnails/26.jpg)
見落としていた例
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)](https://reader035.vdocuments.site/reader035/viewer/2022062309/56815b3a550346895dc9133b/html5/thumbnails/27.jpg)
修正の方針• 統合する過程では複数個の処理されて
いないポインタが存在• まだコピーされていないデータのイン
デックスを入れるキューを用意してそれを利用する– など
![Page 28: 全体ミーティング (4/25)](https://reader035.vdocuments.site/reader035/viewer/2022062309/56815b3a550346895dc9133b/html5/thumbnails/28.jpg)
性能について• 未完成ではあるが実行時間を計測してみ
た– おおまかには評価できそう?– 正確な実装ではさらに計算量が増えそう
• CPU : Intel Core i7 2.2GHz (4 コア )• メモリ : 4GB• OS : Mac OS X 10.6.7• Java 1.6.0_24
![Page 29: 全体ミーティング (4/25)](https://reader035.vdocuments.site/reader035/viewer/2022062309/56815b3a550346895dc9133b/html5/thumbnails/29.jpg)
分割サイズを変えてみる• 長さ 65536 の配列について実行– ランダムにポインタを設定
• 配列を分割する最小サイズを変えてみる• 5 回実行したときの最速値を計測
![Page 30: 全体ミーティング (4/25)](https://reader035.vdocuments.site/reader035/viewer/2022062309/56815b3a550346895dc9133b/html5/thumbnails/30.jpg)
結果
• 横軸は分割のサイズ• 縦軸は実行時間 (μs)• 128 から落ち着いている
16 32 64 128 256 512 10240
2000
4000
6000
8000
10000
12000
14000
16000
18000
![Page 31: 全体ミーティング (4/25)](https://reader035.vdocuments.site/reader035/viewer/2022062309/56815b3a550346895dc9133b/html5/thumbnails/31.jpg)
逐次アルゴリズムとの比較• 分割・並列化によるコストが大きい– 予想はしていたが
実行時間 (μs)
128 まで分割 6265
逐次アルゴリズム 215
![Page 32: 全体ミーティング (4/25)](https://reader035.vdocuments.site/reader035/viewer/2022062309/56815b3a550346895dc9133b/html5/thumbnails/32.jpg)
ワーカースレッドの数を変える• 1 から 4 で変えてみた– DPJ のオプション
• 長さ 65536 の配列• 分割サイズは 128
![Page 33: 全体ミーティング (4/25)](https://reader035.vdocuments.site/reader035/viewer/2022062309/56815b3a550346895dc9133b/html5/thumbnails/33.jpg)
結果
• 1 スレッドの場合と比較した速さ• 4 スレッドで約 1.3 倍– 逐次部分が多いため?
1 2 3 41
1.5
2
2.5
3
3.5
4
4.5
![Page 34: 全体ミーティング (4/25)](https://reader035.vdocuments.site/reader035/viewer/2022062309/56815b3a550346895dc9133b/html5/thumbnails/34.jpg)
次にすること• 単純なアルゴリズムの実装の修正• 性能向上を考える– アルゴリズムの工夫– 既存アルゴリズムを参考にするなど