comparison slide/pre.md @ 25:7fc1656c2819

revision
author Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
date Fri, 19 Feb 2016 12:52:10 +0900
parents
children
comparison
equal deleted inserted replaced
24:876d6c1bc7e6 25:7fc1656c2819
1 % ode Segment と Data Segment を持つ Gears OS の設計
2 % Shohei KOKUBO
3 % 22/Feb/2016
4
5 # 並列環境下におけるプログラミング
6 マルチコア CPU の性能を発揮するには、処理をできるだけ並列化しなければならない。
7 これはアムダールの法則により、並列化できない部分が並列化による性能向上を制限することから言える。
8 つまり、プログラムを並列処理に適した形で記述するためのフレームワークが必要になる。
9
10 # 並列環境下におけるプログラミング
11 マルチコア CPU 以外にも GPU や CPU と GPU を複合したヘテロジニアスなプロセッサが登場している。
12 並列処理をする上でこれらのリソースを無視することはできない。
13 しかし、これらのプロセッサで性能を引き出すためにはそれぞれのアーキテクチャに合わせた並列プログラミングが必要になる。
14 並列プログラミングフレームワークではこれらのプロセッサを抽象化し、CPU と同等に扱えるようにすることも求められる。
15
16 # Cerium の問題点
17 - Task 間の依存関係
18 - データの正しさを保証できない
19 - データの型情報
20 - 並列処理の組み合わせが型的に安全なのか保証できない
21 - メモリ確保
22 - ある Thread がメモリを確保しようとしている間、他の Thread はメモリを確保することができない。結果、処理速度の低下に繋がる
23 - オブジェクト指向と並列処理
24 - 一般的に参照透過な処理は並列化を行いやすい。一方、オブジェクト指向ではオブジェクトの状態によって振る舞いが変わるため並列処理との相性が悪い
25
26 # Gears OS
27 - Code Segment と Data Segment という単位で構成される
28 - Code Segment は並列処理の単位
29 - Data Segment はデータそのもので型情報を持つ
30 - Continuation based C(CbC) による実装
31 - 並列化、ループ制御、関数コールとスタックの操作を意識した最適化がソースコードレベルで行える
32 - Allocator
33 - Thread ごとに独立したメモリ空間を持つ
34 - TaskQueue
35 - Task の管理
36 - CAS 命令を利用して操作することでデータの一貫性を保証する
37 - Persistent Data Tree
38 - Data Segment の管理
39 - 非破壊木構造で構築するので平行して読み書き可能
40 - Red-Black Tree アルゴリズムを用いて平衡性を保ち、挿入・削除・検索における処理時間を保証する
41
42 # Gears OS
43 - Worker
44 - TaskQueue から Task を取得し、実行
45 - 並列に実行される Code Segment は通常の Code Segment と同等
46 - 依存関係のない Code Segment はすべて並列に動作させることが可能
47 - 1 CPU と 12 CPU で約11.8倍の性能向上を確認
48 - Gears OS の実装自体が Gears OS を用いて並列処理を記述する際の指針となっている