annotate presentation/datasegment.ind @ 15:55787a891c8a

fix
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 27 Sep 2011 13:28:35 +0900
parents 4b0a368cc858
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
14
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 -title: Cerium における DataSegment API の設計
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2
15
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
3 -author: 金城裕 河野真治
14
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 --affiliation: 琉球大学
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 --Cell用TaskManager Cerium
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8
15
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
9 Cellの6 SPUのTask をパイプラインで管理する
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
10 Open CL と似たフレームワーク。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
11
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
12 並列プログラムの例題や、ゲームプログラムを作成してきた。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
13
14
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 もう、Linux が PS3 で動かないのでやっても意味がない。
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 --Cerium, Open/CLでの並列プログラミングの問題点
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 Task の取り扱うデータ型が示されない
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 Task 自体は簡単だが Task を構成する方法が繁雑
15
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
21 Open CL に比べても構文的に複雑
14
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 Task の種類が複雑
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 Task の依存関係の記述がデータの依存関係と無関係
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 Task Scheduler が大きくメモリを圧迫
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 C++ と Task 記述の相性が良くない
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 Task Manager が複雑になりすぎ
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27
15
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
28 --Task の取り扱うデータ型が示されない
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
29
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
30
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
31 static int
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
32 run(SchedTask *s, void* rbuff, void* wbuff) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
33
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
34 int end = s->get_inputSize(0)/sizeof(Data);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
35 DataPtr r_data = (DataPtr)s->get_input(0);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
36
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
37 void* で受けてしまうので型チェックができない。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
38
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
39 -- Task 自体は簡単だが Task を構成する方法が繁雑
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
40
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
41 int i = s->split_num-1;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
42
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
43 s->fsort[i] = manager->create_task(QUICK_SORT,
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
44 (memaddr)&s->data[i*block_num], sizeof(Data)*last_block_num,
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
45 (memaddr)&s->data[i*block_num], sizeof(Data)*last_block_num);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
46 if (i>0 && s->bsort[i-1]) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
47 s->fsort[i]->wait_for(s->bsort[i-1]);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
48 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
49 s->fsort[i]->set_cpu(SPE_ANY);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
50
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
51 Open CL に比べても構文的に複雑
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
52
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
53 -- Task の種類が複雑
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
54
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
55 SimpleTask read と write が一つ
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
56 Task read と write が8個まで
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
57 ArrayTask read と write が任意個、ひと続きで実行される
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
58 MainTask ppe で動作、Task生成が可能
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
59
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
60 --Task の依存関係の記述がデータの依存関係と無関係
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
61
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
62 for (int i = 0; i < s->split_num-1; i++) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
63 s->fsort[i] = manager->create_task(QUICK_SORT,
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
64 (memaddr)&s->data[i*block_num], sizeof(Data)*block_num,
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
65 (memaddr)&s->data[i*block_num], sizeof(Data)*block_num);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
66 if (i>0 && s->bsort[i-1]) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
67 s->fsort[i]->wait_for(s->bsort[i-1]);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
68 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
69 if (i<s->split_num-2 && s->bsort[i]) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
70 s->fsort[i]->wait_for(s->bsort[i]);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
71 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
72 s->fsort[i]->set_cpu(SPE_ANY);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
73
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
74 --その他
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
75
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
76 Task Scheduler が大きくメモリを圧迫
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
77
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
78 C++ と Task 記述の相性が良くない
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
79
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
80 Task Manager が複雑になりすぎ
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
81
14
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
82 --Continuation based C
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
83
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
84 関数呼び出しの代わりに goto を持つ C
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
85
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
86 Input Interface, Output Interface
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
87
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
88 <pre>
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
89 __code f(struct input a) { goto g(struct input a) ; }
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
90 __code f(struct input a, __code (*g)()) { goto g(struct input b) ; }
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
91 </pre>
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
92 <img src="fig/code.jpg">
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
93
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
94 --Code Segment 単位での並列実行
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
95
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
96 First, make single process code segments.
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
97
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
98 <img src="fig/single.jpg" id="anim" alt=""/>
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
99
15
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
100 これを並列に実行する。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
101
14
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
102 <img src="fig/concurrent.jpg" id="anim" alt=""/>
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
103
15
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
104 code segment を並べ替えて、分散通信したりスケジューリングしたい
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
105
14
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
106
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
107 --再接続の問題
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
108
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
109 type miss match
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
110
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
111 fix argument type on applications
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
112
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
113 <img src="fig/cbc.jpg">
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
114
15
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
115 --再接続の問題
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
116
14
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
117 汎用の型でないと再接続できない。
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
118
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
119 <img src="fig/reconnection.jpg" class="incremental">
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
120
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
121 --Data segment
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
122
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
123 Code Segment の双対。型を持つメモリの切れ端。
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
124
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
125 Code Segment の Interface を置き換えるもの。
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
126
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
127 input datasegments
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
128 output datasegments
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
129
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
130 <img src="fig/datasegment.jpg">
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
131
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
132 --Data segmentを使ったパイプライン実行
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
133
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
134 <img src="fig/pipeline.jpg">
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
135
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
136 --Code segment の参照
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
137
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
138 Data segment を処理する Code Segment への参照
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
139
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
140 Pointer ではない
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
141 GPGPUやSPUで、実行コードは別空間なことが多い
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
142
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
143 GPGPUでも、通常のCPUでも両方で動かしたい。ポインタでは困る。
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
144
15
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
145 Code Segment は ID で指定する。番号。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
146 実行CPUも指定できる
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
147 分散フレームワークでは、Geo Addressing を使用。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
148
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
149 --get_segment, put_segment
14
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
150
15
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
151 Cell / SPU では、ローカルメモリ
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
152
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
153 read, write 以外に実行時に必要なデータもある。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
154
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
155 get_segment
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
156 wait_segment
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
157
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
158 で Cache / LRU 的に取得する。
14
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
159
15
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
160 smanager->wait_segment(span_put_ms);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
161
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
162 span_put_ms = span_get_ms;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
163 smanager->put_segment(span_put_ms);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
164
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
165 span_get_ms = smanager->get_segment((memaddr)spackList[index], span_ml);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
166 smanager->wait_segment(span_get_ms);
14
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
167
15
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
168 prev_index = index;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
169 spack = (SpanPackPtr)span_get_ms->data;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
170
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
171
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
172 --Data Segement
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
173
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
174 get_segment で全部実装した方が良い?
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
175
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
176 Data Segment として API を整理しよう。
14
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
177
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
178 Json で表す
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
179
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
180 分散計算でも使えるように
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
181
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
182 Protocol Buffer や MessagePack
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
183
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
184 ---Data Segment のAPI
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
185
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
186 Data Segment は以下のAPIを持っている
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
187
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
188 create
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
189 read
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
190 update
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
191 delete
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
192
15
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
193 KVS 的にアクセスする。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
194
14
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
195 --Data Segment 更新の Atomicity
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
196
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
197 Queuing
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
198 Update
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
199 Proority Queue
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
200
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
201 生成された Data segment は synchronized queue として使うことができる。
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
202
15
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
203 <img src="fig/DSCS.jpg">
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
204
14
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
205 ---Task Dependendcy
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
206
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
207 Cerium では、
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
208
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
209 task->wait_for(task1);
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
210
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
211 としていたが、繁雑。Data dependency が自然に依存関係を決めるので、それを
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
212 使うのが良い。
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
213
15
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
214 Data segment を Code segment に割り当てた時に、自動的に dependency が決まる。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
215
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
216 Data segment -> Code segment -> Datas segment
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
217
14
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
218 ---Data Segment Storage Type
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
219
15
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
220 Data segment は様々な場所に置ける。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
221
14
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
222 Main Memory
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
223 Local Memory
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
224 Cache Memory
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
225
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
226 Persitent Store
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
227
15
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
228 Code segment からは、指定された Data segment にしかアクセスできない。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
229
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
230 --まとめ
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
231
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
232 PS3 Cell 用のTaskMangaer Cerium の利点/欠点を考察し、
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
233
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
234 Data Segment と Code Segment を用いた新しいフレームワークを提案した。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
235
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
236 Continuation based C と組み合わせる
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
237
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
238 分散計算にも同様のAPIを用意し、並列環境でも分散環境でも共通に使える
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
239
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
240 フレームワークを作成したい。
14
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
241
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
242
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
243
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
244
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
245
4b0a368cc858 add presentation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
246
15
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
247