20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
3
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
4 <html xmlns="http://www.w3.org/1999/xhtml">
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
5
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
6 <head>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
7 <title>S5: An Introduction</title>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
8 <!-- metadata -->
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
9 <meta name="generator" content="S5" />
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
10 <meta name="version" content="S5 1.3" />
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
11 <meta name="author" content="Eric A. Meyer" />
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
12 <meta name="company" content="Complex Spiral Consulting" />
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
13 <!-- meta extensions -->
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
14 <meta name="subject" content="S5 1.3beta7" />
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
15 <meta name="creator" content="Christian Effenberger" />
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
16 <meta name="contributor" content="youcan[64]netzgesta[46]de" />
<meta name="publisher" content="s5.netzgesta.de" />
<meta name="description" content="S5 1.3 is a very flexible and lightweight slide show system available for anyone to use (including transitions and scalable fonts and images)" />
<meta name="keywords" content="S5, slide show, projection-mode, powerpoint-like, scala-like, keynote-like, incremental display, scalable fonts, scalable images, transitions, notes, osf, xoxo, css, javascript, xhtml, public domain" />
<meta name="robots" content="index, follow" />
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
17 <meta name="revisit-after" content="7 days" />
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
18 <!-- meta temporary -->
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
19 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
20 <meta http-equiv="Content-Script-Type" content="text/javascript" />
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
21 <meta http-equiv="Content-Style-Type" content="text/css" />
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
22 <!-- configuration parameters -->
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
23 <meta name="defaultView" content="slideshow" />
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
24 <meta name="controlVis" content="hidden" />
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
25 <!-- configuration extensions -->
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
26 <meta name="tranSitions" content="true" />
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
27 <meta name="fadeDuration" content="500" />
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
28 <meta name="incrDuration" content="250" />
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
29 <!-- configuration autoplay extension -->
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
30 <meta name="autoMatic" content="false" />
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
31 <meta name="playLoop" content="true" />
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
32 <meta name="playDelay" content="10000" />
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
33 <!-- configuration audio extension -->
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
34 <meta name="audioSupport" content="false" />
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
35 <meta name="audioVolume" content="100" />
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
36 <meta name="audioError" content="false" />
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
37 <!-- configuration audio debug -->
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
38 <meta name="audioDebug" content="false" />
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
39 <!-- style sheet links -->
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
40 <link rel="stylesheet" href="ui/default_utf/slides.css" type="text/css" media="projection" id="slideProj" />
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
41 <link rel="stylesheet" href="ui/default_utf/outline.css" type="text/css" media="screen" id="outlineStyle" />
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
42 <link rel="stylesheet" href="ui/default_utf/print.css" type="text/css" media="print" id="slidePrint" />
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
43 <link rel="stylesheet" href="ui/default_utf/opera.css" type="text/css" media="projection" id="operaFix" />
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
44 <!-- embedded styles -->
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
45 <style type="text/css" media="all">
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
46 .imgcon {width: 100%; margin: 0 auto; padding: 0; text-align: center;}
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
47 #anim {width: 33%; height: 320px; position: relative;}
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
48 #anim img {position: absolute; top: 0px; left: 0px;}
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
49
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
50 </style>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
51 <!-- S5 JS -->
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
52 <script src="ui/default_utf/slides.js" type="text/javascript"></script>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
53
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
54 </head>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
55 <body>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
56
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
57 <div class="layout">
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
58 <div id="controls"><!-- DO NOT EDIT --></div>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
59 <div id="currentSlide"><!-- DO NOT EDIT --></div>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
60 <div id="header"></div>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
61 <div id="footer">
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
62
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
63 <h1></h1>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
64 <h2></h2>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
65 </div>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
66 </div>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
67
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
68 <ol class="xoxo presentation">
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
69
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
70 <li class="slide">
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
71 <h1>並列プログラミングフレームワーク Cerium の改良</h1>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
72 <h3>金城 裕</h3>
|
25
|
73 <h4>並列信頼研究室</h4>
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
74 <div class="handout"></div>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
75 </li>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
76
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
77 <li class="slide">
|
25
|
78 <h1>研究概要</h1>
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
79 <font size="5">
|
24
|
80 <u>本研究では並列プログラムフレームワーク Cerium の改良を行い、並列処理の並列度向上とCell以外のマルチコアCPUへの対応に成功した。</u><br>
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
81
|
25
|
82 <img src="pix/amdahl1.png" style="display:block; width:50%; float: right; margin-top:0%">
|
24
|
83
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
84 <ul>
|
24
|
85 <li>アムダールの法則より、プログラム全体の並列化率が低ければマルチコアの性能を活かすことができない</li>
|
|
86 <li>現在の Cerium を用いたプログラムの開発では、高い並列度が保証されない</li>
|
|
87 <li>Cerium はPS3/Cell での並列処理を行えるが、当初はCell向けに作られた為、他の汎用マルチコアCPU に対応していない</li>
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
88 </ul><br>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
89
|
24
|
90 Cerium の他CPUへの対応と、自明な並列度があるレンダリングとゲーム処理を例題に、高い並列度の維持を目的とする
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
91
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
92 </font>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
93
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
94
|
23
|
95 <li class="slide">
|
|
96 <h1>発表構成</h1>
|
|
97 <ul>
|
|
98 <li>Cellの機能</li>
|
|
99 <li>Ceriumの構成</li>
|
25
|
100 <li>コアの待ち時間の削減</li>
|
23
|
101 <ul>
|
24
|
102 <li>TaskArray での改良と効果</li>
|
|
103 <li>MailQueue での改良と効果</li>
|
|
104 </ul>
|
25
|
105 <li>他のアーキテクチャへの対応</li>
|
24
|
106 <ul>
|
25
|
107 <li>MemorySegmentの導入</li>
|
23
|
108 </ul>
|
|
109 <li>まとめ</li>
|
24
|
110 <li>OpenGLとの比較</li>
|
23
|
111 <li>今後の課題</li>
|
|
112 </ul>
|
|
113
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
114 <li class="slide">
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
115 <h1>Cell Broadband Engine</h1>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
116 <font size="5">
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
117
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
118 研究、実験の題材となった Cell Broadband Engine とは、
|
24
|
119
|
|
120 <img src="pix/cell.png" style="display:block; width:50%; float: right; margin-top:0%">
|
|
121
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
122 <ul>
|
24
|
123 <li>1基のPPEと8基のSPEがリングバス(EIB)で構成されている。動作クロックは3.2GHz(実験で使えるSPEの数は6基)</li>
|
|
124 <li>リングバスのデータ帯域幅は1サイクルあたり最大96byte(3.2GHz駆動時には307.2GB/sec)</li>
|
|
125 <li>SPEは256KBのLocalStore(LS)を持つ</li>
|
25
|
126 <li>PPEとSPEはMFC(Memory Flow Controller)を持つ</li>
|
24
|
127 <li>SPEからメインメモリへは直接アクセスできない</li>
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
128 <ul>
|
25
|
129 <li>SPEが持つMFCへDMA命令を送り、データの転送を行う</li>
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
130 </ul>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
131 </ul>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
132
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
133 </font>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
134
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
135 <li class="slide">
|
24
|
136 <h1>Cellの機能</h1>
|
23
|
137 <font size="6">
|
24
|
138
|
|
139 <u>Mailbox</u>
|
22
|
140
|
|
141 <ul>
|
24
|
142 <li>SPEのMFC内にあるFIFOキュー</li>
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
143 <li>PPE と SPE 間で32ビットメッセージの交換ができる</li>
|
24
|
144 <li>Mail の Queue の種類</li>
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
145 <ul>
|
24
|
146 <li>SPU inbound Mailbox: PPE -> SPE (キューのサイズは4)</li>
|
|
147 <li>SPU Outbound Mailbox: SPE -> PPE (キューのサイズは1)</li>
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
148 </ul>
|
23
|
149 </ul><br>
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
150
|
24
|
151 Outbound Mailbox へ Mail を書き込む際、キューがいっぱいの時は、PPE 側から読み込まれるまで待つ。
|
23
|
152
|
|
153 </font>
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
154 <li class="slide">
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
155 <h1>Cerium</h1>
|
24
|
156 <font size="5">
|
|
157 Cerium の構成
|
|
158
|
|
159 <img src="pix/cerium.png" style="display:block; width:50%; float: right; margin-top:0%">
|
23
|
160
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
161 <ul>
|
24
|
162 <li>TaskManager</li>
|
|
163 <ul>
|
|
164 <li><font size="5">ユーザが定義したTaskを管理し、各コアに割り当てる</font></li>
|
|
165 </ul>
|
|
166
|
|
167 <li>RenderingEngine</li>
|
|
168 <ul>
|
|
169 <li><font size="5">オブジェクトを画面に描画する</font></li>
|
|
170 <li><font size="5">3種類のTaskから構成される</font></li>
|
|
171 </ul>
|
|
172
|
|
173 <li>SceneGraph</li>
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
174 <ul>
|
24
|
175 <li><font size="5">ゲームのシーンを作成し、それを切り替えながらゲームを進行する</font></li>
|
|
176 <li><font size="5">OpenSceneGraphのようなもの</font></li>
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
177 </ul>
|
24
|
178
|
|
179 </ul><br>
|
|
180
|
|
181 </font>
|
|
182
|
|
183 <li class="slide">
|
|
184 <h1>TaskManager</h1>
|
|
185 <font size="5">
|
|
186 TaskManager は、Taskと呼ばれる分割された各プログラムを管理する。Task の単位
|
|
187 はサブルーチンである。Task 同士の依存関係を考慮しながら実行していく。</p>
|
|
188 <p>Task を生成する際に、以下のような要素が設定可能である</p>
|
|
189
|
|
190 <ul>
|
|
191 <li><b>input data, output data, parameter</b><br>
|
|
192 これらは関数でいうところの引数に価する</li>
|
|
193 <li><b>cpu type</b><br>
|
|
194 Task を PPE または SPE のどちらで実行するのかを示している</li>
|
|
195 <li><b>dependency</b></li>
|
|
196 他の Task との依存関係を示している
|
|
197 </li>
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
198 </ul>
|
24
|
199
|
23
|
200 </font>
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
201
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
202 <li class="slide">
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
203 <h1>TaskManager</h1>
|
24
|
204 <font size="5">
|
|
205
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
206 <ul>
|
24
|
207 <li>生成された Task は TaskList としてまとめられ SPE で実行される</li>
|
25
|
208 <li>SPE 側では受け取った TaskList から Task を抜き出し、パイプライン的に実行していく</li>
|
|
209 </ul><br>
|
|
210
|
|
211
|
|
212 <img src="pix/scheduler1.png" style="display:block; width:50%; float: center; margin-top:0%">
|
|
213
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
214
|
24
|
215 </font>
|
23
|
216
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
217
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
218 <li class="slide">
|
24
|
219 <h1>Mailのやり取り</h1>
|
|
220 <font size="6">
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
221 <ul>
|
24
|
222 <li>SPE と PPE 間の同期は Mail のやり取りを行う</li>
|
|
223 <br>
|
|
224 <li>Mailのタイミング</li>
|
|
225 <br>
|
|
226 <font color="red">SPE -> PPE</font>
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
227 <ul>
|
24
|
228 <li>タスクの終了(Taskの依存関係の解決のため)</li>
|
|
229 <li>新しい TaskList のリクエスト</li>
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
230 </ul>
|
24
|
231 <br>
|
|
232 <font color="red">PPE -> SPE</font>
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
233 <ul>
|
24
|
234 <li>新しい TaskList の送信</li>
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
235 </ul>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
236 </ul>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
237
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
238 </font>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
239
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
240 <li class="slide">
|
24
|
241 <h1>PPEとSPEで行われるパイプライン処理</h1>
|
|
242 <font size="5">
|
|
243 PPEとSPE 間で Mail を介して Task の実行をパイプライン化している。
|
25
|
244 PPE が SPE側 から送られてくる Mail の受け取りは PPE 側からポーリングして確認しており、PPE のMain ループで定期的に チェックしている。<br>
|
24
|
245 <u>パイプラインがうまく動作する例</u>
|
|
246 <img src="pix/mailsched1.png" style="display:block; width:60%; float: center; margin-top:0%">
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
247
|
24
|
248 当初はこれでうまくパイプラインが実行されていると思われていたが、うまくいかないパターンが存在することが明らかになった。
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
249
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
250
|
23
|
251 </font>
|
|
252
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
253 <li class="slide">
|
24
|
254 <h1>PPEとSPEで行われるパイプライン処理</h1>
|
|
255 <font size="5">
|
25
|
256 PPE 側で実行される Task の処理が長い場合に、Mail チェックの頻度が少なくなる。
|
24
|
257 Outbound Mailbox がひとつの Mail で占有される時間が長くなり、SPE 側の終了した Task の終了Mail が書き出せなくなる。
|
|
258 そのため、書き込み待ちが発生し、SPE に待ち時間が発生する。<br>
|
|
259 <u>パイプラインが崩れてしまう例</u>
|
|
260 <img src="pix/mailsched2.png" style="display:block; width:57%; float: center; margin-top:0%">
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
261
|
24
|
262 これが並列度の低下を招いている。
|
|
263 </font>
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
264
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
265
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
266 <li class="slide">
|
24
|
267 <h1>PPEとSPEで行われるパイプライン処理</h1>
|
|
268 <font size="5">
|
|
269 そこで、その問題を解決するため、一つ目のアプローチとして Outbound Mailbox と Task の終了処理の間に ソフトウェア MailQueue を導入した。
|
|
270 Outbound Mailbox がいっぱいの場合その Queue に Task 終了 Mail を挿入し、次の Task が実行されるようになった<br>
|
|
271
|
|
272 <u>MailQueueを導入によりパイプラインが正常に動作している例</u>
|
|
273 <img src="pix/mailsched3.png" style="display:block; width:55%; float: center; margin-top:0%">
|
|
274
|
25
|
275 そのため、SPE の待ち時間の削減に成功した<br>
|
24
|
276 </font>
|
|
277
|
|
278 <li class="slide">
|
|
279 <h1>PPEとSPEで行われるパイプライン処理</h1>
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
280 <font size="5">
|
25
|
281 二つ目のアプローチとして、複数の Task を TaskArray としてグルーピングする方法をとった。
|
|
282 依存関係が線形である Task は TaskArray としてまとめることにより、Task 終了のメール自体を減らすことが出来る。
|
|
283
|
24
|
284 <img src="pix/taskarray2.png" style="display:block; width:60%; float: center; margin-top:0%">
|
25
|
285
|
|
286 これによっても、待ち時間の削減に成功した
|
24
|
287 </font>
|
|
288
|
|
289 <li class="slide">
|
|
290 <h1>改良効果の測定</h1>
|
|
291 RenderingEngine を用いて、効果を計測した。レンダリングの例題として、ball bound と panelを用いた。<br>
|
25
|
292 ball bound は赤いボールが跳ねる例題である。描画領域が画面の中でボールの部分だけであり、描画領域が狭い。<br>
|
24
|
293 panel は画面一面に画像を描画する例題である。描画領域が最大である。<br>
|
|
294 <img src="pix/ball_bound1.png" style="display:block; width:30%; float: left; margin-top:0%">
|
|
295 <img src="pix/panel1.png" style="display:block; width:30%; float: right; margin:5% 20% 0% 20%">
|
|
296
|
|
297 </font>
|
|
298
|
|
299 <li class="slide">
|
|
300 <h1>改良効果の測定</h1>
|
|
301 <font size="5">
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
302
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
303 <table border="1" cellspacing="0" cellspacing="2" cellpadding="5" align="center">
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
304 <caption>ballbound</caption>
|
24
|
305
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
306 <tr>
|
24
|
307 <th>改良項目</th>
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
308 <th>FPS</th>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
309 <th>mail待ちの割合</th>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
310 <th>SPE稼働率</th>
|
24
|
311 <th>SPE稼働率の差分</th>
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
312 </tr>
|
24
|
313
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
314 <tr>
|
24
|
315 <th>改良なし</th>
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
316 <th>30.2</th>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
317 <th>74.3%</th>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
318 <th>23.7%</th>
|
24
|
319 <th>-</th>
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
320 </tr>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
321
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
322 <tr>
|
24
|
323 <th>TaskArray適用後</th>
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
324 <th>32.2</th>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
325 <th>66.7%</th>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
326 <th>30.8%</th>
|
24
|
327 <th><font color="red">+7.1%</font></th>
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
328 </tr>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
329
|
24
|
330 <tr>
|
|
331 <th>MailQueue適用後</th>
|
|
332 <th>41.7</th>
|
|
333 <th>56.8%</th>
|
|
334 <th>40.0%</th>
|
|
335 <th><font color="red">+10.8%</font></th>
|
|
336 </tr>
|
|
337
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
338 </table>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
339
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
340 <table border="1" cellspacing="0" cellspacing="2" cellpadding="5" align="center">
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
341 <caption>panel</caption>
|
24
|
342
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
343 <tr>
|
24
|
344 <th>改良項目</th>
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
345 <th>FPS</th>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
346 <th>mail待ちの割合</th>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
347 <th>SPE稼働率</th>
|
24
|
348 <th>SPE稼働率の差分</th>
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
349 </tr>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
350
|
24
|
351 <th>改良なし</th>
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
352 <th>4.0</th>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
353 <th>11.1%</th>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
354 <th>67.6%</th>
|
24
|
355 <th>-</th>
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
356 </tr>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
357
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
358 <tr>
|
24
|
359 <th>TaskArray適用後</th>
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
360 <th>4.2</th>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
361 <th>5.7%</th>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
362 <th>71.8%</th>
|
24
|
363 <th><font color="red">+4.2%</font></th>
|
|
364 </tr>
|
|
365
|
|
366 <tr>
|
|
367 <th>MailQueue適用後</th>
|
|
368 <th>4.2</th>
|
|
369 <th>4.1%</th>
|
|
370 <th>72.3%</th>
|
|
371 <th><font color="red">+0.5%</font></th>
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
372 </tr>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
373 </table>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
374
|
24
|
375 改良を加え 各例題 の<u>FPS、稼働率の向上。Mail 待ちの時間が削減され、並列度が向上したといえる</u>
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
376
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
377 </font>
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
378
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
379 <li class="slide">
|
25
|
380 <h1>アーキテクチャ依存記述の隠蔽</h1>
|
|
381
|
|
382 <font size="5">
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
383
|
25
|
384 Cerium では Task内部でのデータ転送を行うときは、DMA転送を行ってた。Core i7 や Xeon のような SharedMemory に対応するために
|
|
385 DMA転送は不要である<br>
|
|
386 そこで、Task内部でのデータ転送を抽象化する MemorySegment を実装した。
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
387
|
25
|
388 <ul>
|
|
389 <li>MemorySegment はデータ構造である</li>
|
|
390 <li>MainMemory と SPE LS をマッピングする</li>
|
|
391 <li>LS 内に一定のメモリを確保し、キャッシュ機能を持つ</li>
|
|
392 <li>キャッシュはLRU方式で管理する</li>
|
|
393 </ul><br>
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
394
|
25
|
395 このMemorySegmentのAPIには MainMemory のアドレスが用いられており、Cell 以外のアーキテクチャでも問題なく動作する。<br>
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
396
|
25
|
397 </font>
|
23
|
398
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
399 <li class="slide">
|
25
|
400 <h1>MemorySegmentのgetの様子</h1>
|
22
|
401
|
25
|
402 MemorySegment の API として、get_segmentがある。指定された MainMemory のアドレスから SPE LS へのデータロードが可能である。
|
22
|
403
|
|
404 <p style="text-align: center;">
|
25
|
405 <img class="scale" src="pix/getsegment1.png" width="70%" alt="" title="At a Glance" />
|
22
|
406 </p>
|
|
407
|
|
408 <li class="slide">
|
25
|
409 <h1>MemorySegment</h1>
|
24
|
410 MemorySegment を導入し、
|
22
|
411
|
|
412 <ul>
|
|
413 <li>アーキテクチャ依存の記述を隠蔽することに成功した</li>
|
25
|
414 <li>Cellのような分散メモリ環境と、Intel Xeon のような共有メモリ環境に Cerium はどちらの環境でも動作可能になった</li>
|
22
|
415 </ul>
|
|
416
|
|
417 <li class="slide">
|
24
|
418 <h1>まとめ</h1>
|
22
|
419 並列プログラミングフレームワーク Cerium の改良を行った。
|
|
420
|
|
421 <ul>
|
25
|
422 <li>MailQeueu, TaskArrey を実装、導入</li>
|
|
423 <li>MemorySegmentの適応</li>
|
23
|
424 </ul><br>
|
22
|
425
|
25
|
426 以上の改良を行い、約18%稼働率の向上、とShardMemoryマルチコアCPUへの対応にも成功した。
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
427
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
428 <li class="slide">
|
22
|
429 <h1>OpenGL との比較</h1>
|
|
430 学生実験で作成された シューティングゲーム「SuperDandy」 を例題に OpenGL と比較。OpenGL は PPE 1基のみを使用。Cerium は
|
|
431 SPE6基+PPE1基を使用した。
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
432
|
22
|
433 <table border="1" cellspacing="0" cellspacing="2" cellpadding="5" align="center">
|
|
434 <caption>シューティングゲーム</caption>
|
|
435 <tr>
|
|
436 <th></th>
|
|
437 <th>OpenGL</th>
|
|
438 <th>Cerium</th>
|
|
439 <th>性能差</th>
|
|
440 </tr>
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
441
|
22
|
442 <tr>
|
|
443 <th>SuperDandy</th>
|
|
444 <th>17.5 FPS</th>
|
|
445 <th>49.5 FPS</th>
|
|
446 <th>2.9 倍</th>
|
|
447 </tr>
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
448
|
22
|
449 </table>
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
450
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
451 <li class="slide">
|
25
|
452 <h1>今後の方針</h1>
|
|
453 <font size="5">
|
23
|
454 <ul>
|
|
455 <li>自動的な依存関係の解決</li>
|
|
456 <ul>
|
|
457 <li>扱うデータから Task の依存関係がわかる</li>
|
|
458 <li>ユーザが複雑な依存関係を設定しない</li>
|
|
459 </ul>
|
25
|
460 <li>DataSegmentの設計</li>
|
23
|
461 <ul>
|
25
|
462 <li>MemorySegmentでは、Task 内でのデータロードを抽象化した</li>
|
|
463 <li>Task内でのデータロードだけでなく、すべてのデータや扱うプログラムなどを管理する包括的なデータ構造が必要になる</li>
|
23
|
464 </ul>
|
25
|
465 <li>そのDataSegment の設計は分散ネットワーク環境にも適応でき、それについては次の赤嶺が発表する</li>
|
|
466 <li>また現在 CeriumはIntel Xeon上に移行され、並列動作する。その結果は當間が卒業研究として発表する</li>
|
|
467 <li>彼らの発表にも乞うご期待!</li>
|
23
|
468 </ul>
|
25
|
469 </font>
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
470
|
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
471 <li class="slide">
|
25
|
472 <h1>発表文献</h1>
|
|
473 <font size="5">
|
|
474 <ul>
|
|
475 <li>金城裕,河野真治,多賀野海人,小林佑亮. ゲームフレームワーク Cerium TaskMan- ager の改良, 情報処理学会システムソフトウェアとオペレーティング・システム研 究会 (OS), April, 2011</li>
|
|
476 <li>金城 裕 , 河野 真治. Fine grain Task Manager Cerium のチューニング, 日本ソフト ウェア科学会第 27 回大会論文集, Sep, 2010</li>
|
|
477 </ul>
|
20
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
478
|
25
|
479 </ol>
|
|
480 </font>
|
|
481
|
|
482 </body>
|
|
483 </html>
|