annotate paper/datasegment.ind @ 8:e62c3a665813

fix
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Thu, 11 Aug 2011 00:11:16 +0900
parents f5982d0deab5
children 504aea3b42be
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
f5982d0deab5 裕さんが送信した形に修正、裕さんが送信した内容はabstract_yutaka.txt内に保存
Daichi TOMA <e085740@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
1 -title: Cerium における DataSegment API の設計
2
81939cb9da14 add .ind
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2
81939cb9da14 add .ind
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 --abstract:
81939cb9da14 add .ind
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4
81939cb9da14 add .ind
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 --Cell用Task Manager Cerium
81939cb9da14 add .ind
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6
81939cb9da14 add .ind
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 本研究室では、Cell 用の並列TaskManager Ceriumを作成し、Rendering Engine を含む
81939cb9da14 add .ind
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 ゲームや並列計算の例題の作成と評価を行ってきた。TaskManager と Rendering Engine はシューティングゲーム
81939cb9da14 add .ind
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 やレーシングゲームを記述するのに十分な性能を持っており、台数効果も満足いくものと
81939cb9da14 add .ind
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 なっている。しかし、この開発により Ceirum の問題点も明らかになってきている。
81939cb9da14 add .ind
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 本論文では、今まので Cerium の構成と問題点を記述し、新しい TaskManager の設計
81939cb9da14 add .ind
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 方針を述べる。
81939cb9da14 add .ind
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13
8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
14 --Ceriumでの並列プログラミングの問題点
2
81939cb9da14 add .ind
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15
8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
16 Cerium では、ゲームプログラミング及び、sort や word count などの例題を書いたが、いくつかの問題点が明らかになっている。
2
81939cb9da14 add .ind
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17
8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
18 Task の取り扱うデータ型が示されない
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
19 Task 自体は簡単だが Task を構成する方法が繁雑
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
20 Open CL に比べても構文的に複雑
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
21 Task の種類が複雑
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
22 Task の依存関係の記述がデータの依存関係と無関係
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
23 Task Scheduler が大きくメモリを圧迫
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
24
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
25 などである。実装方法的にもいくつか問題がある。
2
81939cb9da14 add .ind
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26
8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
27 C++ と Task 記述の相性が良くない
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
28 Task Manager が複雑になりすぎ
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
29
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
30 Task Scheduler は Queue からTaskを取り出して一つ一つパイプライン実行を行うインタプリタ的な構造を持っている。これが、Task Manager 自体を複雑にする原因になっている。
2
81939cb9da14 add .ind
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31
81939cb9da14 add .ind
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 --Continuation based C との相性
81939cb9da14 add .ind
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33
8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
34 当研究室で開発している Continuation based C は、並列処理の基本単位である Task に対応した code segment を持っている。これを Cerium に対応させようとすると以下のような問題がある。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
35
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
36 Inteface の型が整合しないとTask同士を接続できない
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
37 Scheduler への接続が特定のInterfaceを要求する
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
38
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
39 どちらも、Code segment の interface (入力と出力) は、決まった形であるべきだと言うことを示している。しかし、Task 自体は様々なデータを取り扱う必要がある。ここに矛盾がある。この矛盾を解決するためには、データ側も基本単位を導入するべきだいうことになる。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
40
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
41 Data Segment は、Code segment の双対概念であり、C の構造体に相当する。CbC の Code segment は、
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
42
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
43 input interface (関数の引数の型)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
44 output interface (goto 文の引数の型)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
45
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
46 を持っているが、これらを
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
47
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
48 input datasegments
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
49 output datasegments
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
50
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
51 に置き換える。つまり、Code segment は、複数の動的に割り当てられた Data segment を持っている。これらは、標準的な構造を持っているので、Interface の型の不整合を避けることができる。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
52
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
53 Data segment は型を持っていて、その型は実行時に一致している必要がある。分散通信を考えて、Data segment の型は MessagePack \cite{MessagePack} を用いる。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
54
2
81939cb9da14 add .ind
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 --C++ との相性
81939cb9da14 add .ind
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
56
8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
57 Cerium の Task は、Cell のspuとppuで共通であり、同じ Task ID で管理されている。これは C++ のオブジェクトとは関係ない。Cerium の開発でわかったのは、Cerium のデータは、Actor の become 的\cite{Act3} に書き換えられるということである。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
58
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
59
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
60
2
81939cb9da14 add .ind
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 --Data Segment を用いた Cerium の再設計
81939cb9da14 add .ind
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
62
81939cb9da14 add .ind
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 ---Data Segment の型
81939cb9da14 add .ind
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
64
81939cb9da14 add .ind
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 ---Data Segment のAPI
81939cb9da14 add .ind
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
66
81939cb9da14 add .ind
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 ---Task Dependendcy
81939cb9da14 add .ind
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
68
81939cb9da14 add .ind
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 ---Data Segment Storage Type
81939cb9da14 add .ind
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
70
81939cb9da14 add .ind
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 ---Data Segment の処理の記述
81939cb9da14 add .ind
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
72
81939cb9da14 add .ind
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
73 --期待される効果
81939cb9da14 add .ind
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
74