Mercurial > hg > Papers > 2011 > yutaka-sigos
comparison presen/presen.html @ 14:06fe904e1951
fix
author | Yutaka_Kinjyo |
---|---|
date | Wed, 13 Apr 2011 17:26:26 +0900 |
parents | 083c7035b2cf |
children | 413e772d6cea |
comparison
equal
deleted
inserted
replaced
13:083c7035b2cf | 14:06fe904e1951 |
---|---|
91 </div> | 91 </div> |
92 | 92 |
93 <div class="slide"> | 93 <div class="slide"> |
94 <h1>概要</h1> | 94 <h1>概要</h1> |
95 | 95 |
96 ゲームフレームワーク Cerium TaskManager を開発しました。 | 96 ゲームフレームワーク Cerium TaskManager を開発した。 |
97 | 97 <ul> |
98 <ul> | 98 <li>琉球大学の学生実験で使用している</li> |
99 <li>動作環境:MacOSX, Linux, PS3/Cell</li> | 99 <li>短期間でPS3/Cell上で並列処理されるゲーム開発が可能</li> |
100 <li>主にCellに特化している。</li> | 100 </ul> |
101 <li>SceneGraphを用いて、ゲームを記述する</li> | 101 |
102 | 102 <p class="ex2">Ceriumの改良を行いOpenGLと比べ、2.9倍の性能向上を達成した(Cell上)</p> |
103 <table border="1" cellspacing="0" cellspacing="2" cellpadding="5" align="center"> | |
104 <tr> | |
105 <th></th> | |
106 <th>OpenGL</th> | |
107 <th>Cerium</th> | |
108 <th>性能差</th> | |
109 </tr> | |
110 <tr align="center"> | |
111 <td>dandy</td> | |
112 <td>17.5FPS</td> | |
113 <td>49.5FPS</td> | |
114 <td>2.9倍</td> | |
115 </tr> | |
116 </table> | |
117 FPS(Frames Per Second) | |
118 </div> | |
119 | |
120 <div class="slide"> | |
121 <h1>概要</h1> | |
122 | |
123 Amdahlの法則より<br> | |
124 プログラム全体の並列化率が低ければ、マルチコアの性能を活かすことはできない。<br><br> | |
125 | |
126 <u>SPEの稼働率を落とさない為の改良点</u> | |
127 | |
128 <ul> | |
129 <li>PPEとSPE間の通信回数を削減、タイミングを変更</li> | |
130 <li>Taskのパイプライン化</li> | |
131 <li>テクスチャをSPE内でキャッシュ</li> | |
103 </ul><br> | 132 </ul><br> |
104 | 133 |
105 琉球大学の学生実験で使用している。 | 134 以上の改良により、FPSが5〜10倍程度性能向上がありました |
106 | 135 |
107 </div> | 136 <!--以上の改良により、OpenGL--> |
108 | 137 |
109 | 138 </div> |
110 <div class="slide"> | 139 |
111 <h1>Cell</h1> | 140 |
141 | |
142 | |
143 <div class="slide"> | |
144 <h1>概要</h1> | |
145 | |
146 Amdahlの法則より<br> | |
147 プログラム全体の並列化率が低ければ、マルチコアの性能を活かすことはできない。<br><br> | |
148 | |
149 | |
150 <u>SPEの稼働率を落とさない為の改良点</u> | |
151 | |
152 <ul> | |
153 <li>PPEとSPE間の通信回数を削減、タイミングを変更</li> | |
154 <li>Taskのパイプライン化</li> | |
155 <li>テクスチャをSPE内でキャッシュ</li> | |
156 </ul><br> | |
157 | |
158 Ceriumの改良点を紹介していく。 | |
159 | |
160 </div> | |
161 | |
162 <div class="slide"> | |
163 <h1>Cellの構成</h1> | |
112 Cell Broadband Engine | 164 Cell Broadband Engine |
113 | 165 |
166 <img src="gazo/cell_arch.jpg" style="display:block; width:50%; float: right; margin-top:0%"> | |
167 | |
114 <ul> | 168 <ul> |
115 <li>ソニー・コンピュータエンタテインメント、ソニー、IBM , 東芝によって開発されたマルチコア CPU である</li> | 169 <li>ソニー・コンピュータエンタテインメント、ソニー、IBM , 東芝によって開発されたマルチコア CPU である</li> |
116 <li>1基の制御系プロセッサコアPPE(PowerPC Processor Element)</li> | 170 <li>1個のPPEと8個のSPEがリングバスで構成されている</li> |
117 <li>8基の演算系プロセッサコアSPE(Synergistic Processor Element)</li> | 171 <li>SPEは256KBのLocalStore(LS)を持つ</li> |
118 <li>各コアはEIB(Element Interconnect Bus)とうバスで接続されている</li> | 172 <li>SPEからメインメモリへは直接アクセスできない</li> |
173 <ul> | |
174 <li>SPEが持つMFC(Memroy Flow Controller)へDMA命令を送ることで行う</li> | |
175 </ul> | |
119 </ul><br> | 176 </ul><br> |
120 | 177 |
121 </div> | 178 |
122 | 179 </div> |
123 <div class="slide"> | 180 |
124 <h1>Cell</h1> | 181 <div class="slide"> |
125 Cell Broadband Engine | 182 <h1>Cellの基本機能</h1> |
126 | 183 <u>DMA</u> |
127 <table height="100%" width="100%" border="0"> | 184 <ul> |
128 <tr><td align="center" valign="middle"> | 185 <li>メインメモリとLS間でデータが転送される</li> |
129 <img src="gazo/cell_arch.jpg" style="width: 50%%"></td></tr> | 186 </ul> |
130 </table> | 187 <u>Mailbox</u> |
131 | 188 <ul> |
132 | 189 <li>SPEのMFC内にあるFIFOキュー</li> |
133 PPEは直接メインメモリアクセスできるが、SPEはそれぞれのLSにしかアクセスできない<br> | 190 <li>PPEとSPE間で32bitメッセージの交換に用いられる</li> |
134 DMA転送を用いてメインメモリからのデータを明示的に取得する | 191 </ul> |
135 | 192 </div> |
136 </div> | 193 |
137 | |
138 <div class="slide"> | |
139 <h1>Cell</h1> | |
140 Cell のプログラミングスタイル | |
141 | |
142 <ul> | |
143 <li>PPEがデータと仕事を分割し、各SPEへ割り当てる</li> | |
144 </ul><br> | |
145 | |
146 Ceriumでは関数をTaskとして定義。Taskを各SPEへ割り当てる。<br> | |
147 一つのTaskにはinput,output,param,等のデータを持たせる<br> | |
148 | |
149 | |
150 </div> | |
151 | 194 |
152 <div class="slide"> | 195 <div class="slide"> |
153 <h1>Ceriumの構成</h1> | 196 <h1>Ceriumの構成</h1> |
154 | 197 |
155 Ceriumの構成 | 198 Ceriumの構成 |
199 | |
200 <img src="gazo/cerium.png" style="display:block; width:50%; float: right; margin-top:0%"> | |
156 | 201 |
157 <ul> | 202 <ul> |
158 <li>TaskManager</li> | 203 <li>TaskManager</li> |
159 <ul> | 204 <ul> |
160 <li>ユーザが定義したTaskを管理し、各コアに割り当てる</li> | 205 <li>ユーザが定義したTaskを管理し、各コアに割り当てる</li> |
173 <li>OpenSceneGraphのようなもの</li> | 218 <li>OpenSceneGraphのようなもの</li> |
174 </ul> | 219 </ul> |
175 | 220 |
176 </ul><br> | 221 </ul><br> |
177 | 222 |
178 | 223 </div> |
179 | 224 |
180 </div> | 225 <div class="slide"> |
181 | 226 <h1>TaskManager</h1> |
182 <div class="slide"> | 227 |
183 <h1>Ceriumの構成</h1> | 228 TaskManager は、Taskと呼ばれる分割された各プログラムを管理する。Task の単位 |
229 はサブルーチンである。Task 同士の依存関係を考慮しながら実行していく。</p> | |
230 <p>Task を生成する際に、以下のような要素が設定可能である</p> | |
231 | |
232 <ul> | |
233 <li><b>input data, output data, parameter</b><br> | |
234 これらは関数でいうところの引数に価する</li> | |
235 <li><b>cpu type</b><br> | |
236 Task を PPE または SPE のどちらで実行するのかを示している</li> | |
237 <li><b>dependency</b></li> | |
238 他の Task との依存関係を示している | |
239 </li> | |
240 </ul> | |
241 | |
242 </div> | |
243 | |
244 | |
245 <div class="slide"> | |
246 <h1>RenderingEngineの構成</h1> | |
247 RenderingEngineの構成 | |
248 | |
249 <img src="gazo/renderingengine1.png" style="display:block; width:40%; float: right; margin-top:0%"> | |
250 | |
251 <ul> | |
252 <li>CreatePolygon</li> | |
253 <ul> | |
254 <li>モデリングデータからポリゴンを生成する(PPE)</li> | |
255 </ul> | |
256 <li>CreateSpan</li> | |
257 <ul> | |
258 <li>ポリゴンをSpanと呼ばれる水平な線に分ける(SPE)</li> | |
259 </ul> | |
260 <li>DrawSpan</li> | |
261 <ul> | |
262 <li>Spanを実際にディスプレイに描画する(SPE)</li> | |
263 </ul> | |
264 </ul><br> | |
265 | |
266 </div> | |
267 | |
268 | |
269 <div class="slide"> | |
270 <h1>改良前RenderingEngine</h1> | |
271 | |
272 <img src="gazo/universe.png" style="display:block; width:50%; float: right; margin-top:0%"> | |
273 | |
274 <u>改良前のRenderingEngineの例題</u><br> | |
275 地球と月の例題 | |
276 | |
277 <table border="1" cellspacing="0" cellspacing="2" cellpadding="10" align="center"> | |
278 <tr> | |
279 <th></th> | |
280 <th>FPS</th> | |
281 <th>mail待ちの割合</th> | |
282 <th>SPE稼働率</th> | |
283 <!--<th>Mac(Core2Duo)</th>--> | |
284 </tr> | |
285 <tr align="center"> | |
286 <td>universe</td> | |
287 <td>17FPS</td> | |
288 <td>53.6%</td> | |
289 <td>45.4%</td> | |
290 </tr> | |
291 </table><br> | |
292 | |
293 処理全体の45%時間がmail待ちになっている. | |
294 | |
295 </div> | |
296 | |
297 <div class="slide"> | |
298 <h1>Mail待ちについて</h1> | |
299 | |
300 <u>mail待ちが起こるタイミング</u> | |
301 | |
302 <ul> | |
303 <li>SPEが次のTaskのリストを待つとき</li> | |
304 <ul> | |
305 <li>Taskのパイプライン化で削減</li> | |
306 </ul> | |
307 <li>SPEがTaskの完了を書きこむとき</li> | |
308 <ul> | |
309 <li>MailQueueで削減</li> | |
310 <li>TaskArrayで削減</li> | |
311 </ul> | |
312 </ul> | |
313 | |
314 </div> | |
315 | |
316 | |
317 <div class="slide"> | |
318 <h1>Mailbox機能</h1> | |
184 | 319 |
185 <table height="100%" width="100%" border="0"> | 320 <table height="100%" width="100%" border="0"> |
186 <tr><td align="center" valign="middle"> | 321 <tr><td align="center" valign="middle"> |
187 <img src="gazo/cerium.png" style="width: 50%%"></td></tr> | 322 <img src="gazo/mailbox.png" style="width: 60%%"></td></tr> |
188 </table> | 323 </table> |
189 | 324 |
190 </div> | 325 </div> |
191 | 326 |
192 <div class="slide"> | |
193 <h1>TaskManager</h1> | |
194 | |
195 TaskManager | |
196 | |
197 <ul> | |
198 <li>Taskは関数単位</li> | |
199 <li>定義されたTaskは依存関係に沿って実行される</li> | |
200 <li>Taskはある程度の数が揃った上で、TaskListにまとめられSPEに送られる。</li> | |
201 <li>Taskはread,exec,write それぞれパイプライン化されて動く</li> | |
202 <li>Taskに必要なデータはDMA転送で送られる。転送時間はパイプライン化によって隠される</li> | |
203 <li>Taskの中にDMA転送命令を書くと自動ではパイプライン化されない</li> | |
204 </ul> | |
205 | |
206 </div> | |
207 | |
208 <div class="slide"> | |
209 <h1>TaskMangerを使った例題</h1> | |
210 | |
211 CeriumのTaskManager を使ったSortの例題<br> | |
212 10万個のランダムな値をクイックソートでソートする<br> | |
213 ソートする関数をTaskにして各SPEで実行<br><br> | |
214 | |
215 <table border="1" cellspacing="0" cellspacing="2" cellpadding="10" align="center"> | |
216 <caption>Sortの例題</caption> | |
217 <tr> | |
218 <th></th> | |
219 <th>PPEのみ</th> | |
220 <th>SPE 1つ</th> | |
221 <th>SPE 6つ</th> | |
222 <!--<th>Mac(Core2Duo)</th>--> | |
223 <th>SPE稼働率</th> | |
224 </tr> | |
225 <tr align="center"> | |
226 <td>QuickSort</td> | |
227 <td>5.60s</td> | |
228 <td>6.22s</td> | |
229 <td>1.07s</td> | |
230 <td>97%</td> | |
231 <!--<td>1.76s</td>--> | |
232 </tr> | |
233 </table> | |
234 | |
235 <!-- 2.13GHz --> | |
236 </div> | |
237 | |
238 | |
239 <div class="slide"> | |
240 <h1>アムダール則</h1> | |
241 | |
242 プログラムの全体に対する並列化した部分の割合が低いと、マルチコアの性能がでない | |
243 <!--プログラムの8割を並列化すると、6CPUでは3倍の性能向上しか得られない--> | |
244 | |
245 <table height="100%" width="100%" border="0"> | |
246 <tr><td align="center" valign="middle"> | |
247 <img src="gazo/amdahl.jpg" style="width: 55%%"></td></tr> | |
248 </table> | |
249 | |
250 </div> | |
251 | |
252 <div class="slide"> | |
253 <h1>RenderingEngine</h1> | |
254 | |
255 RenderingEngineの例題<br> | |
256 地球と月の例題 | |
257 | |
258 <table border="1" cellspacing="0" cellspacing="2" cellpadding="10" align="center"> | |
259 <tr> | |
260 <th></th> | |
261 <th>FPS</th> | |
262 <th>mail待ちに割合</th> | |
263 <th>SPE稼働率</th> | |
264 <!--<th>Mac(Core2Duo)</th>--> | |
265 </tr> | |
266 <tr align="center"> | |
267 <td>universe</td> | |
268 <td>17FPS</td> | |
269 <td>72.6%</td> | |
270 <td>25.4%</td> | |
271 </tr> | |
272 </table> | |
273 | |
274 | |
275 </div> | |
276 | |
277 | |
278 <div class="slide"> | |
279 <h1>RenderingEngine</h1> | |
280 | |
281 SortとRenderingEngineの違い | |
282 | |
283 <ul> | |
284 <li>三種類のTaskから構成されている</li> | |
285 <li>三つのTaskはバリア同期を行っている</li> | |
286 <li>すべてのTaskは一度に作られない</li> | |
287 <li>PPEにもTaskが割り振られている</li> | |
288 <li>大量のデータを扱う(ポリゴン、テクスチャ)</li> | |
289 </ul> | |
290 | |
291 </div> | |
292 | |
293 | |
294 <div class="slide"> | |
295 <h1>RenderingEngine</h1> | |
296 | |
297 RenderingEngienの場合の問題点 | |
298 | |
299 <ul> | |
300 <li>SPEの待ちが入る(SPEの稼働率の低下、処理性能の低下)</li> | |
301 <ul> | |
302 <li>MailをPPEが読み込みのを待つ</li> | |
303 <li>他のSPEを待つ</li> | |
304 <li>次のTaskListを待つ</li> | |
305 </ul> | |
306 <li>Taskはバリア同期している</li> | |
307 </ul> | |
308 | |
309 </div> | |
310 | 327 |
311 <div class="slide"> | 328 <div class="slide"> |
312 <h1>バリア同期</h1> | 329 <h1>バリア同期</h1> |
313 <table height="100%" width="100%" border="0"> | 330 <table height="100%" width="100%" border="0"> |
314 <tr><td align="center" valign="middle"> | 331 <tr><td align="center" valign="middle"> |
317 | 334 |
318 RenderingEngineのTaskは、3つそれぞれバリア同期をしている。 | 335 RenderingEngineのTaskは、3つそれぞれバリア同期をしている。 |
319 | 336 |
320 </div> | 337 </div> |
321 | 338 |
322 <div class="slide"> | |
323 <h1>バリア同期</h1> | |
324 バリア同期には二つの待ちがある | |
325 <ul> | |
326 <li>SPEが他のSPEを待つ時間</li> | |
327 <li>バリア同期が完了し、PPE側で次のTaskが作られる時間</li> | |
328 </ul><br> | |
329 | |
330 | |
331 </div> | |
332 | |
333 <div class="slide"> | |
334 <h1>バリア同期</h1> | |
335 <table height="100%" width="100%" border="0"> | |
336 <tr><td align="center" valign="middle"> | |
337 <img src="gazo/renderingengine2.png" style="width: 45%%"></td></tr> | |
338 </table> | |
339 | |
340 この待ちを解消するためにTaskのパイプライン化を行った。 | |
341 | |
342 </div> | |
343 | |
344 | |
345 | |
346 <div class="slide"> | |
347 <h1>RenderingEngineの構成</h1> | |
348 RenderingEngineの構成 | |
349 <ul> | |
350 <li>CreatePolygon</li> | |
351 <ul> | |
352 <li>モデリングデータからポリゴンを生成する(PPE)</li> | |
353 </ul> | |
354 <li>CreateSpan</li> | |
355 <ul> | |
356 <li>ポリゴンをSpanと呼ばれる水平な線に分ける(SPE)</li> | |
357 </ul> | |
358 <li>DrawSpan</li> | |
359 <ul> | |
360 <li>Spanを実際にディスプレイに描画する(SPE)</li> | |
361 </ul> | |
362 </ul><br> | |
363 | |
364 RenderingEngineは3種類のTaskから構成されている | |
365 | |
366 </div> | |
367 | 339 |
368 | 340 |
369 <div class="slide"> | 341 <div class="slide"> |
370 <h1>パイプライン化</h1> | 342 <h1>パイプライン化</h1> |
371 | 343 |
450 <li>テクスチャのデータはハッシュで管理する</li> | 422 <li>テクスチャのデータはハッシュで管理する</li> |
451 </ul> | 423 </ul> |
452 | 424 |
453 </div> | 425 </div> |
454 | 426 |
455 | |
456 | |
457 <div class="slide"> | 427 <div class="slide"> |
458 <h1>SPEのキャッシュ効果</h1> | 428 <h1>SPEのキャッシュ効果</h1> |
459 | 429 |
460 <table border="1" cellspacing="0" cellspacing="2" cellpadding="10" align="center"> | 430 <table border="1" cellspacing="0" cellspacing="2" cellpadding="10" align="center"> |
461 <caption>SPEのキャッシュの効果</caption> | 431 <caption>SPEのキャッシュの効果</caption> |
538 | 508 |
539 ball_bound は扱うテクスチャが少なく、小さい | 509 ball_bound は扱うテクスチャが少なく、小さい |
540 | 510 |
541 </div> | 511 </div> |
542 | 512 |
543 | |
544 <div class="slide"> | |
545 <h1>Mailbox機能</h1> | |
546 CellのMailbox機能<br> | |
547 | |
548 <ul> | |
549 <li>PPEとSPEとの間を双方向で32bitのデータを受け渡す</li> | |
550 <li>FIFO キュー構造</li> | |
551 </ul><br> | |
552 Mailboxの種類 | |
553 <ul> | |
554 <li>Inbount Mailbox(PPE->SPE 4つ)</li> | |
555 <li>Outbount Mailbox(SPE->PPE 一つ)</li> | |
556 <li>Outbount interrupt Mailbox(SPE->PPE 一つ)</li> | |
557 </ul> | |
558 | |
559 </div> | |
560 | |
561 <div class="slide"> | |
562 <h1>Mailbox機能</h1> | |
563 | |
564 <table height="100%" width="100%" border="0"> | |
565 <tr><td align="center" valign="middle"> | |
566 <img src="gazo/mailbox.png" style="width: 60%%"></td></tr> | |
567 </table> | |
568 | |
569 </div> | |
570 | |
571 <div class="slide"> | |
572 <h1>Mailbox機能</h1> | |
573 SPE側からTaskが一つ実行完了する度に、実行完了のMailをOutboxに書きこむ<br> | |
574 | |
575 <ul> | |
576 <li>Outboxに既にMailが書きこまれている場合に、PPE側から読み込まれるまで、SPEは待つ(Cellの仕様)</li> | |
577 <li>PPE側のMailチェックが追いつかない場合がある。</li> | |
578 <li>その間、SPEは何もしないので、処理速度の低下につながる</li> | |
579 </ul><br> | |
580 | |
581 そこで、Outboxに既に読み込まれていないMailがあった場合に、いったん、別のキューに追加する。(MailQueue) | |
582 | |
583 | |
584 </div> | |
585 | |
586 <div class="slide"> | |
587 <h1>MailQueue</h1> | |
588 | |
589 <ul> | |
590 <li>TaskListを消化し、次のTaskListを要求する時に、MailQueueにMailが残っている場合はそれを先に書きだす</li> | |
591 <li>PPE側はMailのチェックをMailが無くなるまでループする</li> | |
592 <li>PPEはMailがない場合に、自分の仕事に戻る。</li> | |
593 <li>今のPPEのMailチェックの仕様には、一度にMailを書きだすのが向いている</li> | |
594 </ul> | |
595 | |
596 </ul> | |
597 | |
598 </div> | |
599 | |
600 <div class="slide"> | 513 <div class="slide"> |
601 <h1>MailQueueの効果</h1> | 514 <h1>MailQueueの効果</h1> |
602 | 515 |
603 <table border="1" cellspacing="0" cellspacing="2" cellpadding="10" align="center"> | 516 <table border="1" cellspacing="0" cellspacing="2" cellpadding="10" align="center"> |
604 <caption>MailQueueの効果</caption> | 517 <caption>MailQueueの効果</caption> |
617 </table> | 530 </table> |
618 | 531 |
619 地球と月を表示する例題を使って計測した。 | 532 地球と月を表示する例題を使って計測した。 |
620 | 533 |
621 </div> | 534 </div> |
622 <!-- | |
623 <div class="slide"> | |
624 <h1>Ceriumの改良点の概要</h1> | |
625 | |
626 Ceriumの改良点の概要 | |
627 | |
628 <ul> | |
629 <li>TaskManager</li> | |
630 <ul> | |
631 <li>Taskの同期にはCellのMail機能を使う</li> | |
632 <li>Mailの同期するタイミングの改良</li> | |
633 <ul> | |
634 <li><s>MailQueue</s></li> | |
635 <li>TaskArray</li> | |
636 </ul> | |
637 </ul> | |
638 | |
639 <li>RenderingEngine</li> | |
640 <ul> | |
641 <li>Taskのパイプライン化</li> | |
642 <li>扱う画像をSPE側でキャッシュする</li> | |
643 </ul> | |
644 | |
645 </ul> | |
646 | |
647 </div> | |
648 --> | |
649 | 535 |
650 <div class="slide"> | 536 <div class="slide"> |
651 <h1>TaskArray</h1> | 537 <h1>TaskArray</h1> |
652 Task毎のMailは、Task同士の依存関係を解決するために用いている。 | 538 Task毎のMailは、Task同士の依存関係を解決するために用いている。 |
653 | 539 |
752 コア一つを使用するOpenGLに比べ、Cerium では2.9倍の性能向上が見られた。 | 638 コア一つを使用するOpenGLに比べ、Cerium では2.9倍の性能向上が見られた。 |
753 SPEを活用、待ち時間の短縮を行い、性能向上がみれた。 | 639 SPEを活用、待ち時間の短縮を行い、性能向上がみれた。 |
754 | 640 |
755 </div> | 641 </div> |
756 | 642 |
757 <div class="slide"> | 643 |
758 <h1>まとめ</h1> | |
759 | |
760 本研究ではゲームフレームワーク Cerium TaskManager の改良を行った。 | |
761 特にCell上において、SPEの稼働率に注意する必要があった。 | |
762 | |
763 SPE、PPE間のデータのやり取りにMail通知を用いている。SPEはMailの書き込みの際に待ちが発生する | |
764 | |
765 <ul> | |
766 <li>MailQueue</li> | |
767 <li>TaskArray</li> | |
768 </ul><br> | |
769 | |
770 で待ち時間の削減ができる | |
771 | |
772 </div> | |
773 | |
774 <div class="slide"> | |
775 <h1>まとめ</h1> | |
776 | |
777 RenderingEngineにおいて、Taskがバリア同期をしている。バリア同期にも待ちが発生する | |
778 | |
779 <ul> | |
780 <li>Task実行をパイプライン化</li> | |
781 </ul><br> | |
782 | |
783 SPEの待ち時間を解消できる。頻繁に扱うデータはSPE内でキャッシュするのがよい | |
784 | |
785 </div> | |
786 | |
787 | |
788 <div class="slide"> | |
789 <h1>依存関係の話</h1> | |
790 稼働率を維持するためにパイプライン化がある | |
791 | |
792 <ul> | |
793 <li>扱うデータの依存性から、Pipelineを自動で生成できるはず</li> | |
794 <li>TaskArrayもデータから自動でできるはず。</li> | |
795 <li>データはSegmentとして扱う</li> | |
796 </ui> | |
797 | |
798 </div> | |
799 | |
800 <div class="slide"> | |
801 <h1>Codeload</h1> | |
802 | |
803 Taskを事前に全部ロードしてる | |
804 | |
805 <ul> | |
806 <li>SPEのLSは256KB</li> | |
807 <li>大量のコードを入れるといっぱいになる</li> | |
808 <li>必要な時に必要な分を予測してSPEにロードするのがよい</li> | |
809 </ul> | |
810 | |
811 </div> | |
812 | |
813 <div class="slide"> | |
814 <h1>Segment</h1> | |
815 | |
816 データはすべてSegmentという形にして、SPEに必要な分を予測、読み込みするのがよい。<br> | |
817 テクスチャのように頻繁に扱うデータはキャッシュする<br> | |
818 | |
819 </div> | |
820 | 644 |
821 | 645 |
822 | 646 |
823 <div class="slide"> | 647 <div class="slide"> |
824 <h1>END</h1> | 648 <h1>END</h1> |