comparison presen/presen1.html @ 20:e5e563dc8270 draft

add file
author Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
date Sun, 12 Feb 2012 00:47:14 +0900
parents
children fe88829c8fe3
comparison
equal deleted inserted replaced
18:140aec35135c 20:e5e563dc8270
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
4 <html xmlns="http://www.w3.org/1999/xhtml">
5
6 <head>
7 <title>S5: An Introduction</title>
8 <!-- metadata -->
9 <meta name="generator" content="S5" />
10 <meta name="version" content="S5 1.3" />
11 <meta name="author" content="Eric A. Meyer" />
12 <meta name="company" content="Complex Spiral Consulting" />
13 <!-- meta extensions -->
14 <meta name="subject" content="S5 1.3beta7" />
15 <meta name="creator" content="Christian Effenberger" />
16 <meta name="contributor" content="youcan[64]netzgesta[46]de" />
17 <meta name="publisher" content="s5.netzgesta.de" />
18 <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)" />
19 <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" />
20 <meta name="robots" content="index, follow" />
21 <meta name="revisit-after" content="7 days" />
22 <!-- meta temporary -->
23 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
24 <meta http-equiv="Content-Script-Type" content="text/javascript" />
25 <meta http-equiv="Content-Style-Type" content="text/css" />
26 <!-- configuration parameters -->
27 <meta name="defaultView" content="slideshow" />
28 <meta name="controlVis" content="hidden" />
29 <!-- configuration extensions -->
30 <meta name="tranSitions" content="true" />
31 <meta name="fadeDuration" content="500" />
32 <meta name="incrDuration" content="250" />
33 <!-- configuration autoplay extension -->
34 <meta name="autoMatic" content="false" />
35 <meta name="playLoop" content="true" />
36 <meta name="playDelay" content="10000" />
37 <!-- configuration audio extension -->
38 <meta name="audioSupport" content="false" />
39 <meta name="audioVolume" content="100" />
40 <meta name="audioError" content="false" />
41 <!-- configuration audio debug -->
42 <meta name="audioDebug" content="false" />
43 <!-- style sheet links -->
44 <link rel="stylesheet" href="ui/default_utf/slides.css" type="text/css" media="projection" id="slideProj" />
45 <link rel="stylesheet" href="ui/default_utf/outline.css" type="text/css" media="screen" id="outlineStyle" />
46 <link rel="stylesheet" href="ui/default_utf/print.css" type="text/css" media="print" id="slidePrint" />
47 <link rel="stylesheet" href="ui/default_utf/opera.css" type="text/css" media="projection" id="operaFix" />
48 <!-- embedded styles -->
49 <style type="text/css" media="all">
50 .imgcon {width: 100%; margin: 0 auto; padding: 0; text-align: center;}
51 #anim {width: 33%; height: 320px; position: relative;}
52 #anim img {position: absolute; top: 0px; left: 0px;}
53
54 </style>
55 <!-- S5 JS -->
56 <script src="ui/default_utf/slides.js" type="text/javascript"></script>
57
58 </head>
59 <body>
60
61 <div class="layout">
62 <div id="controls"><!-- DO NOT EDIT --></div>
63 <div id="currentSlide"><!-- DO NOT EDIT --></div>
64 <div id="header"></div>
65 <div id="footer">
66
67 <h1></h1>
68 <h2></h2>
69 </div>
70 </div>
71
72 <ol class="xoxo presentation">
73
74 <li class="slide">
75 <h1>並列プログラミングフレームワーク Cerium の改良</h1>
76 <h3>金城 裕</h3>
77 <h4>琉球大学理工学研究科情報工学専攻</h4>
78 <div class="handout"></div>
79 </li>
80
81 <li class="slide">
82 <h1>研究背景と目的(1/2)</h1>
83 <font size="5">
84 当研究室では、マルチコアCPU上での開発を支援するたの、並列プログラミングフレームワーク Cerium を開発し、学生実験で使用している。本研究では
85 Cerium の信頼性の向上を目的とし、改良を行った (信頼性 = 仕様通りに動作する)<br>
86
87 マルチコア上の並列プログラミングでは
88 <ul>
89 <li>並列処理部分の特定や同期処理を適切に行わなければ、台数効果は得られない。</li>
90 <li>再現性ないバグなどが発生する可能性がある</li>
91 <li>アーキテクチャを理解し最適なプログラムを書く必要がある</li>
92 </ul><br>
93
94 など信頼性のあるプログラムを開発するには逐次プログラミングよりも技術と手間がかかる問題がある<br>
95 Cell上でのゲーム作成を行う学生実験でも、講義期間中に作品が一定のレベルに達しない問題が生じた。そこで学生実験での使用を考慮した フレームワーク Cerium を開発した<br>
96
97 </font>
98
99 <li class="slide">
100 <h1>研究背景と目的(2/2)</h1>
101 <font size="5">
102 Cerium を用いて 期間中のゲームの作成が可能になった。しかし学生実験での使用や、例題の実装を行い Cerium の信頼性が十分でない点が明らかになった。
103 <ul>
104 <li>仕様通りの稼働率がでない</li>
105 <li>アーキテクチャ依存の記述が避けにくい</li>
106 </ul><br>
107 以上の問題点を解決するため
108 <ul>
109 <li>ソフトウェアMailQueueの実装</li>
110 <li>TaskをグルーピングするTaskArrayの実装</li>
111 <li>明示的なDMAロードを隠蔽するMemorySegmentのAPIの実装</li>
112 <li>細かなTaskのチューニング</li>
113 </ul>
114 などの改良を行い、信頼性のある並列プログラミングフレームワークを目指す。
115 </font>
116
117 <li class="slide">
118 <h1>Cell Broadband Engine</h1>
119 <font size="5">
120
121 研究、実験の題材となった Cell Broadband Engine とは、
122 <ul>
123 <li>ソニー、SCE、 IBM、 東芝によって開発されたプロセッサ</li>
124 <li>マルチコアで、9つのコアを持つ</li>
125 <ul>
126 <li>制御用コア PorwerPC Processor Element 1基</li>
127 <li>演算用コア Synergistic Processor Element 8基 (実験で使用できるのは6基)</li>
128 <li>各コアは Element Interconnect Bus を経由してデータアクセスを行う</li>
129 </ul>
130 </ul>
131
132 <p style="text-align: center;">
133 <img class="scale" src="pix/cell.png" alt="" title="At a Glance" />
134 </p>
135
136 </font>
137
138 <li class="slide">
139 <h1>DMA</h1>
140 SPE は直接 MainMemory にアクセスできない。 明示的な DMA 転送を用いる
141
142 <li class="slide">
143 <h1>Mailbox</h1>
144
145 PPE と SPE の通信には Mailbox を用いる
146
147 <ul>
148 <li>PPE と SPE 間で32ビットメッセージの交換ができる</li>
149 <li>Mail の Queue は3種類</li>
150 <ul>
151 <li>SPU inbound Mailbox: PPE -> SPE</li>
152 <li>SPU Outbound Mailbox: SPE -> PPE</li>
153 <li>SPU Outbound interrupt Mailbox: SPE -> PPE (割り込み)</li>
154 </ul>
155 </ul>
156
157 <li class="slide">
158 <h1>Cerium</h1>
159 Cerium とは
160 <ul>
161 <li>並列プログラミング用のフレームワーク</li>
162 <li>学生実験での使用を考慮して PS3/Cell, Linux, MacOSX で動作する</li>
163 <li>構成</li>
164 <ul>
165 <li>TaskManager</li>
166 <li>RenderingEngine</li>
167 <li>SceneGraph</li>
168 </ul>
169 </ul>
170
171
172 <li class="slide">
173 <h1>TaskManager</h1>
174 TaskManager とは Task のスケジューラ
175
176 <ul>
177 <li>Task とよばれるデータ構造を提供</li>
178 <li>処理(単位は関数に近い)を Task で記述していく</li>
179 <li>定義された、Task の情報に沿って各コアに処理を割り振る</li>
180 </ul>
181
182 Task で記述された部分の、自動的な並列処理スケジューリングを行う。
183
184 <li class="slide">
185 <h1>RenderingEngine(1/2)</h1>
186 PS3 では Graphics Engien の仕様が公開されていないので、独自の RenderingEngine を開発した。
187 Task で記述され、主に3つの Task から構成される
188 <ul>
189 <li>CreatePolygonTask</li>
190 <ul>
191 <li>モデリングデータを、三角形のポリゴンに変換する</li>
192 </ul>
193 <li>CreateSpanTask</li>
194 <ul>
195 <li>ポリゴンを水平な線(Span)に分割する</li>
196 </ul>
197 <li>DrawSpanTask</li>
198 <ul>
199 <li>Span を Texture とマッピングし画面に出力する</li>
200 </ul>
201 </ul>
202
203 <li class="slide">
204 <h1>RenderingEngine(2/2)</h1>
205
206 例: Cube のモデリングデータの場合には、以下のように Task が働く。
207
208 <p style="text-align: center;">
209 <img class="scale" src="pix/rendering3.png" width="50%" alt="" title="At a Glance" />
210 </p>
211
212 <li class="slide">
213 <h1>SceneGraph</h1>
214 ゲームのシーンを構成する木構造のグラフ。
215
216 <li class="slide">
217 <h1>Cerium の改良</h1>
218 <font size="5">
219 RenderingEngine を用いた例題で、ball bound, panel がある。(FPS = Frame per second)
220
221 <table border="1" cellspacing="0" cellspacing="2" cellpadding="5" align="center">
222 <tr>
223 <th></th>
224 <th>FPS</th>
225 <th>DMA転送待ち時間</th>
226 <th>mail待ちの割合</th>
227 <th>SPE稼働率</th>
228 </tr>
229 <tr>
230 <th>ball bound</th>
231 <th>30.2</th>
232 <th>1.8%</th>
233 <th>74.3%</th>
234 <th>23.7%</th>
235 </tr>
236 <tr>
237 <th>panel</th>
238 <th>4.0</th>
239 <th>21.3%</th>
240 <th>11.1%</th>
241 <th>67.6%</th>
242 </tr>
243 </table>
244
245 <ul>
246 <li>panel</li>
247 <ul>
248 <li>解像度1980x1080の一枚の画像の描画行う。</li>
249 </ul>
250 <li>ball bound</li>
251 <ul>
252 <li>球が跳ねる例題。</li>
253 </ul>
254 </ul>
255
256 ball bound では Mail 待ちが約70%と、稼働率が出ていない。<br>
257 panel は ball bound より処理の描画の処理が重く、その分稼働率が高くなっている。
258 アムダールの法則より稼働率がでないとマルチコアの性能は発揮されない。フレームワークとしての信頼性が十分でない
259 </font>
260
261 <li class="slide">
262 <h1>Mail 通知のスケジューリング</h1>
263 Cerium では SPE が Mail で 待ち時間が発生するタイミングは2つ
264
265 <ul>
266 <li>TaskList を待つ場合</li>
267 <li>Mail の書き込みを待つ場合</li>
268 <ul>
269
270 </ul>
271 </ul>
272
273 <li class="slide">
274 <h1>TaskListのMail待ち</h1>
275 TaskList は処理する Task の List である。PPE で生成され SPE へ Mail で通知される
276
277 <p style="text-align: center;">
278 <img class="scale" src="pix/tasklistmail1.png" width="80%" alt="" title="At a Glance" />
279 </p>
280
281 TaskList が生成され SPE に通知されるまで、SPE に待ち時間が発生する。
282
283 <li class="slide">
284 <h1>Mail の書き込み待ち</h1>
285 Task が終了した際と TaskList が終了した際に SPE が Mailbox へ書き込みを行う(依存関係解決のため)。Outbound Mailbox はサイズが1なので、他のMailが書きこまれてる場合、それが PPE側から読み込まれるまで、待つ。
286
287 <p style="text-align: center;">
288 <img class="scale" src="pix/mailschedule2.png" width="80%" alt="" title="At a Glance" />
289 </p>
290
291 TaskList が生成され SPE に通知されるまで、SPE に待ち時間が発生する。
292
293
294 <li class="slide">
295 <h1>TaskArray(1/3)</h1>
296 TaskList は Cerium 側で固定長であり、ユーザは変更することができない。ユーザが設定できる TaskList のようなものが、TaskArrayである。TaskArray は複数の Task をグルーピングできる。
297
298 <p style="text-align: center;">
299 <img class="scale" src="pix/taskarray1.png" width="80%" alt="" title="At a Glance" />
300 </p>
301
302 <li class="slide">
303 <h1>TaskArray(2/3)</h1>
304 例えば TaskListのサイズが4, TaskArray のサイズが4の場合、Task が8個の場合
305
306 <p style="text-align: center;">
307 <img class="scale" src="pix/taskarray2.png" width="80%" alt="" title="At a Glance" />
308 </p>
309
310 グルーピングされるため Task 毎の Mail 回数が減る。TaskList の要求回数が減る。そのため Mail の待ち時間が入る箇所が削減され、Mail の待ち時間自体の削減につながる。
311
312 <li class="slide">
313 <h1>TaskArray(3/3)</h1>
314 <font size="5">
315 TaskArray の効果を示す
316
317 <table border="1" cellspacing="0" cellspacing="2" cellpadding="5" align="center">
318 <caption>ballbound</caption>
319 <tr>
320 <th>TaskArray</th>
321 <th>FPS</th>
322 <th>DMA転送待ち時間</th>
323 <th>mail待ちの割合</th>
324 <th>SPE稼働率</th>
325 </tr>
326 <tr>
327 <th> なし </th>
328 <th>30.2</th>
329 <th>1.8%</th>
330 <th>74.3%</th>
331 <th>23.7%</th>
332 </tr>
333 <tr>
334
335 <tr>
336 <th> あり </th>
337 <th>32.2</th>
338 <th>2.5%</th>
339 <th>66.7%</th>
340 <th>30.8%</th>
341 </tr>
342
343 </table>
344
345 <table border="1" cellspacing="0" cellspacing="2" cellpadding="5" align="center">
346 <caption>panel</caption>
347 <tr>
348 <th>TaskArray</th>
349 <th>FPS</th>
350 <th>DMA転送待ち時間</th>
351 <th>mail待ちの割合</th>
352 <th>SPE稼働率</th>
353 </tr>
354
355 <th>なし</th>
356 <th>4.0</th>
357 <th>21.3%</th>
358 <th>11.1%</th>
359 <th>67.6%</th>
360 </tr>
361
362
363 <tr>
364 <th>あり</th>
365 <th>4.2</th>
366 <th>22.5%</th>
367 <th>5.7%</th>
368 <th>71.8%</th>
369 </tr>
370 </table>
371
372 TaskArray を ball bound, panel の DrawSpanTask に適応。FPS、稼働率の向上。Mail 待ちの時間が削減された
373
374 </font>
375
376 <li class="slide">
377 <h1>MailQueue(1/3)</h1>
378 ソフトウェア MailQueue の実装
379
380 <ul>
381 <li>SPE から Mailbox に書き出せない場合に MailQueue へと書きだす</li>
382 <li>MailQueue に Mail がある場合は、MailQueue から Mailbox へ書き出す</li>
383 <li>MailQueue に残っている Mail は TaskList のTask を消化した時点で、すべて書き出す処理を挟む</li>
384 </ul>
385
386 Task 毎の Mail 書き込み時の待ち時間を削減するのが目的
387
388 <li class="slide">
389 <h1>MailQueue(2/3)</h1>
390
391 Mailbox に書き込めない場合は、MailQueue に書き込む例
392
393 <p style="text-align: center;">
394 <img class="scale" src="pix/mailqueue1.png" width="80%" alt="" title="At a Glance" />
395 </p>
396
397 <li class="slide">
398 <h1>MailQueue(3/3)</h1>
399 MailQeueuの効果
400
401 <font size="5">
402 <table border="1" cellspacing="0" cellspacing="2" cellpadding="5" align="center">
403 <caption>ball bound</caption>
404 <tr>
405 <th>MailQueue</th>
406 <th>FPS</th>
407 <th>DMA転送待ち時間</th>
408 <th>mail待ちの割合</th>
409 <th>SPE稼働率</th>
410 </tr>
411 <tr>
412 <th> なし </th>
413 <th>32.2</th>
414 <th>2.5%</th>
415 <th>66.7%</th>
416 <th>30.8%</th>
417 </tr>
418 <tr>
419
420 <tr>
421 <th> あり </th>
422 <th>41.7</th>
423 <th>3.3%</th>
424 <th>56.8%</th>
425 <th>40.0%</th>
426 </tr>
427
428 </table>
429
430 <table border="1" cellspacing="0" cellspacing="2" cellpadding="5" align="center">
431 <caption>panel</caption>
432 <tr>
433 <th>MailQueue</th>
434 <th>FPS</th>
435 <th>DMA転送待ち時間</th>
436 <th>mail待ちの割合</th>
437 <th>SPE稼働率</th>
438 </tr>
439
440 <tr>
441 <th>なし</th>
442 <th>4.2</th>
443 <th>22.5%</th>
444 <th>5.7%</th>
445 <th>71.8%</th>
446 </tr>
447
448 <th>あり</th>
449 <th>4.2</th>
450 <th>23.7%</th>
451 <th>4.1%</th>
452 <th>72.3%</th>
453 </tr>
454
455 </table>
456 </font>
457
458 <li class="slide">
459 <h1>改良効果のまとめ</h1>
460
461 <font size="5">
462 <table border="1" cellspacing="0" cellspacing="2" cellpadding="5" align="center">
463 <caption>ball bound</caption>
464 <tr>
465 <th></th>
466 <th>FPS</th>
467 <th>DMA転送待ち時間</th>
468 <th>mail待ちの割合</th>
469 <th>SPE稼働率</th>
470 </tr>
471 <tr>
472 <th>改良前</th>
473 <th>30.2</th>
474 <th>1.8%</th>
475 <th>74.3%</th>
476 <th>23.7%</th>
477 </tr>
478 <tr>
479
480 <tr>
481 <th>改良後</th>
482 <th>41.7</th>
483 <th>3.3%</th>
484 <th>56.8%</th>
485 <th>40.0%</th>
486 </tr>
487 </table>
488
489 <table border="1" cellspacing="0" cellspacing="2" cellpadding="5" align="center">
490 <caption>panel</caption>
491 <tr>
492 <th></th>
493 <th>FPS</th>
494 <th>DMA転送待ち時間</th>
495 <th>mail待ちの割合</th>
496 <th>SPE稼働率</th>
497 </tr>
498
499 <tr>
500 <th>改良前</th>
501 <th>4.0</th>
502 <th>21.3%</th>
503 <th>11.1%</th>
504 <th>67.6%</th>
505 </tr>
506
507 <th>改良後</th>
508 <th>4.2</th>
509 <th>23.7%</th>
510 <th>4.1%</th>
511 <th>72.3%</th>
512 </tr>
513
514 </table>
515 </font>
516
517 <li class="slide">
518 <h1>MemorySegment(1/)</h1>
519 CreateSpanTask では明示的にDMA転送命令を記述している。
520
521 <ul>
522 <li>処理するデータ構造上の理由、Task内でのデータロードが必要</li>
523 <li>DMA転送命令は Cell アーキテクチャの依存の記述</li>
524 <li>他のアーキテクチャ などでは不要</li>
525 </ul>
526
527 アーキテクチャ依存の記述を隠蔽できるAPIが必要
528
529 <li class="slide">
530 <h1>MemorySegment(2)</h1>
531 MemorySegment を実装
532
533
534 <li class="slide">
535 <h1>まとめ</h1>
536
537
538 <li class="slide">
539 <h1>今後の課題</h1>
540
541 <li class="slide">
542 <h1>自動的な依存関係の解決</h1>
543
544 <li class="slide">
545 <h1>Task 化による並列化率の向上</h1>
546
547 <li class="slide">
548 <h1>SPE の LS の利用方法</h1>
549
550
551
552 <li class="slide">
553 <h1></h1>
554
555 /*end*/
556
557 </ol>
558
559 </body>
560 </html>