comparison presen/presen.html @ 12:c770f569a801

add file
author Yutaka_Kinjyo
date Fri, 10 Sep 2010 02:43:57 +0900
parents e5f74d4de3ad
children 87b8bb4d104c
comparison
equal deleted inserted replaced
11:64d19544a2fd 12:c770f569a801
178 <h1>TaskManager</h1> 178 <h1>TaskManager</h1>
179 179
180 <ul> 180 <ul>
181 <li>TaskManagerは、Taskと呼ばれる、分割された各プログラムを管理する</li> 181 <li>TaskManagerは、Taskと呼ばれる、分割された各プログラムを管理する</li>
182 <ul> 182 <ul>
183 <li>Taskの単位は関数またはサブルーチン</li> 183 <li>Taskの単位はサブルーチン</li>
184 </ul> 184 </ul>
185 <li>Task同士の依存関係を考慮</li> 185 <li>Task同士の依存関係を考慮</li>
186 <li>実行可能になったTaskをSPEに渡す</li> 186 <li>実行可能になったTaskをSPEに渡す</li>
187 </ul> 187 </ul>
188 188
189 <table height="100%" width="100%" border="0"> 189 <table height="100%" width="100%" border="0">
190 <tr><td align="center" valign="middle"> 190 <tr><td align="center" valign="middle">
191 <img src="gazo/taskmanager1.png" style="width: 60%%"></td></tr> 191 <img src="gazo/taskmanager1.png" style="width: 50%%"></td></tr>
192 </table> 192 </table>
193 193
194 </div> 194 </div>
195 195
196 <div class="slide"> 196 <div class="slide">
333 333
334 </div> 334 </div>
335 335
336 336
337 <div class="slide"> 337 <div class="slide">
338 <h1>Taskの送信</h1>
339
340 <ul>
341 <li>Taskは1つ毎にSPEには送らない</li>
342 <li>いくつかのTaskをまとめTaskListとして送る</li>
343 <li>TaskListをすべて完了すると、SPEからPPEにMail通知が送られる</li>
344 <li>PPE側がMailをチェックし次のTaskListを通知する</li>
345 </ul>
346
347 <table height="100%" width="100%" border="0">
348 <tr><td align="center" valign="middle">
349 <img src="gazo/tasklist1.png" style="width: 40%%"></td></tr>
350 </table>
351
352 </div>
353
354 <div class="slide">
355 <h1>Mail通知</h1>
356
357 <ul>
358 <li>SPEからPPEへのMail送信ボックスはキューになっている</li>
359 <li>キューのサイズは1</li>
360 <li>書き込む際にキューがいっぱいの場合はPPEから呼び出されるまで待つ</li>
361 <li>PPEからのMail呼び出しがないと、SPEは待ち続ける</li>
362 </ul>
363
364 </div>
365
366 <div class="slide">
338 <h1>TaskArray</h1> 367 <h1>TaskArray</h1>
339 <big><u>TaskArray</u></big><br> 368
340 <ul> 369 <font color="red">SPEの待ちを解消するためにTaskArrayを提案、実装した</font>
341 <li>Task毎にMail通知を行う、、今日はここまで・・続きまた頑張りまっす。</li> 370
342 </ul> 371 <ul>
343 372 <li>TaskArrayは複数のTaskを1つにまとめることができる</li>
344 <table height="100%" width="100%" border="0"> 373 <li>Task毎のMail通知がTaskArray毎のMail通知になる</li>
345 <tr><td align="center" valign="middle"> 374 </ul>
346 <img src="gazo/dependency5.png" style="width: 60%%"></td></tr> 375 <br>
347 </table> 376 <table height="100%" width="100%" border="0">
348 377 <tr><td align="center" valign="middle">
349 </div> 378 <img src="gazo/taskarray1.png" style="width: 50%%"></td></tr>
350 379 </table>
351 380
352 381 </div>
353 382
354 383 <div class="slide">
355 <div class="slide"> 384 <h1>TaskArray</h1>
356 <h1>今週</h1> 385
386 期待される効果
387
388 <ul>
389 <li>Mailの数が減り、SPEのMail待ちのタイミングが減る</li>
390 <li>Mail待ちが減るので、SPEの稼働率が向上する</li>
391 <li>また、PPE側のMailチェックの時間も減る</li>
392 <li>結果、処理速度が向上する</li>
393 </ul>
394 <br>
395 <table height="100%" width="100%" border="0">
396 <tr><td align="center" valign="middle">
397 <img src="gazo/taskarray1.png" style="width: 50%%"></td></tr>
398 </table>
399
400 </div>
401
402 <div class="slide">
403 <h1>TaskArray</h1>
404
405 <font color="red">WordCountのTaskと、レンダリングエンジンのTaskの一部をTaskArray化した。
406 その結果を報告する</font><br><br>
407
408 それぞれのTask内容
409
410 <ul>
411 <li>WordCount</li>
412 <ul>
413 <li>WordCountTask(<font color="red">TaskArray化</font>)</li>
414 <li>PrintTask</li>
415 </ul>
416
417 <li>レンダリングエンジン</li>
418 <ul>
419 <li>CreatePolygonTask</li>
420 <li>CreateSpanTask</li>
421 <li>DrawSpanTask(<font color="red">TaskArray化</font>)</li>
422 </ul>
423
424 </ul>
425
426 </div>
427
428 <div class="slide">
429 <h1>WordCount</h1>
430
431 <ul>
432 <li>wcするfileをマッピングし、Taskに割り振る</li>
433 <li>WordCountTaskの終了をまって、PrintTaskが実行される</li>
434 </ul>
435
436 <table height="100%" width="100%" border="0">
437 <tr><td align="center" valign="middle">
438 <img src="gazo/wc_graf1.png" style="width: 40%%"></td></tr>
439 </table>
440
441 </div>
442
443 <div class="slide">
444 <h1>WordCount</h1>
445
446 <ul>
447 <li>TaskArrayのサイズは64</li>
448 <li>WC対象は166Mのテキスト</li>
449 <li>TaskArrayの適応の有無を比較</li>
450 </ul>
451
452 </div>
453
454 <div class="slide">
455 <h1>WordCount</h1>
456
457 <ul>
458 <li>time : 実行時間</li>
459 <li>dma wait : dma転送待ちの割合</li>
460 <li>time wait : mail待ちの割合</li>
461 </ul>
462
463 <br>
357 464
358 <table border="3" style="width:100%;"> 465 <table border="3" style="width:100%;">
359 <tr> 466 <tr>
360 <th></th> 467 <th></th>
361 <th>real_time</th> 468 <th>Task</th>
362 <th>wait_time</th> 469 <th>TaskArray</th>
363 <th>mail_time</th> 470 </tr>
364 <th>busy_ratio</th> 471 <tr>
365 </tr> 472 <th>time</th>
366 <tr> 473 <td align="center">2.184s</td>
367 <th>all</th> 474 <td align="center">2.109s</td>
368 <td align="center">58s</td> 475
369 <td align="center">77%</td> 476 </tr>
370 <td align="center">17%</td> 477 <tr>
371 <td align="center">5.5%</td> 478 <th>dma wait</th>
372 479 <td align="center">18%</td>
373 480 <td align="center">12%</td>
374 </tr> 481
375 <tr> 482 </tr>
376 <th>compatibility</th> 483 <tr>
377 <td align="center">31s</td> 484 <th>mail wait</th>
378 <td align="center">50%</td> 485 <td align="center">5%</td>
379 <td align="center">39%</td> 486 <td align="center">8%</td>
380 <td align="center">10%</td> 487 </tr>
381 488
382 </tr> 489 <caption></caption>
383 <tr> 490
384 <th>taskarray</th> 491 </table><br>
385 <td align="center">34s</td> 492
386 <td align="center">35%</td> 493 <div class="slide">
494 <h1>WordCount</h1>
495
496 <ul>
497 <li>あまり効果は見られなかった</li>
498 <li>PPE側のTaskがないので、あまりmail待ちが入らない</li>
499 <li>ファイルのサイズが大きいのでメモリアクセスで時間がかかる</li>
500 </ul>
501
502 <br>
503
504 <table border="3" style="width:100%;">
505 <tr>
506 <th></th>
507 <th>Task</th>
508 <th>TaskArray</th>
509 </tr>
510 <tr>
511 <th>time</th>
512 <td align="center">2.184s</td>
513 <td align="center">2.109s</td>
514
515 </tr>
516 <tr>
517 <th>dma wait</th>
518 <td align="center">18%</td>
519 <td align="center">12%</td>
520
521 </tr>
522 <tr>
523 <th>mail wait</th>
524 <td align="center">5%</td>
525 <td align="center">8%</td>
526 </tr>
527
528 <caption></caption>
529
530 </table><br>
531
532 </div>
533
534 <div class="slide">
535 <h1>WordCount</h1>
536
537 改善策
538
539 <ul>
540 <li>一度にファイルマッピングをしない</li>
541 <li>何度かに分けてマッピングする</li>
542 <li>同じ領域を切り替えて使う</li>
543 <li>スワップを減らし、アクセス時間を短縮する</li>
544 <li>dma wait の割合が減る</li>
545 </ul>
546
547 </div>
548
549
550 <div class="slide">
551 <h1>レンダリングエンジン</h1>
552
553 構成Task
554
555 <ul>
556 <li>CreatePolygonTask</li>
557 <li>CreateSpanTask</li>
558 <li>DrawSpanTask(<font color="red">TaskArray化</font>)</li>
559 </ul>
560
561 <br>
562 DrawSpanTask : Taskの数が多いDrawSpanTaskをTaskArray化した。地球と月を表示する
563 例題を対象に計測した。
564
565 </div>
566
567 <div class="slide">
568 <h1>レンダリングエンジン</h1>
569
570 <ul>
571 <li>FPS : 一秒間に表示できるFrame数</li>
572 </ul>
573
574 <table border="3" style="width:100%;">
575 <tr>
576 <th></th>
577 <th>Task</th>
578 <th>TaskArray</th>
579 </tr>
580 <tr>
581 <th>FPS</th>
582 <td align="center">3.94</td>
583 <td align="center">4.32</td>
584
585 </tr>
586 <tr>
587 <th>dma wait</th>
588 <td align="center">0.06%</td>
589 <td align="center">0.07%</td>
590
591 </tr>
592 <tr>
593 <th>mail wait</th>
387 <td align="center">55%</td> 594 <td align="center">55%</td>
388 <td align="center">9%</td> 595 <td align="center">42%</td>
389 </tr> 596 </tr>
390 597
391 <caption>速度比較</caption> 598 <caption></caption>
392 599
393 </table><br> 600 </table><br>
394 601
395 しかし、これは、RUN_TASK_BLOCKS_TASK を1つだけ生成した場合でした・・二つにしてみると・・ 602 <ul>
396 603 <li>mail wait 割合が減った</li>
397 </div> 604 <li>レンダリングエンジンの場合、PPE側で実行するTaskがあるので、
398 605 mailチェックが遅れ気味</li>
399 <div class="slide"> 606 </ul>
400 <h1>今週</h1> 607
401 608 </div>
402 <table border="3" style="width:100%;"> 609
403 <tr> 610 <div class="slide">
404 <th></th> 611 <h1>まとめ</h1>
405 <th>real_time</th> 612
406 <th>wait_time</th> 613
407 <th>mail_time</th> 614 <ul>
408 <th>busy_ratio</th> 615 <li>複数のTaskをまとめるTaskArrayを提案、実装した。</li>
409 </tr> 616 <li>PPE側が忙しく、mailチェックが遅れる場合に効果的</li>
410 <tr> 617 <li>PPE側にTaskがない場合は、mailチェックは間に合う</li>
411 <th>all</th> 618 <li>WordCountはdma転送がネックになっている</li>
412 <td align="center">58s</td> 619 <li>マッピングの方法、Taskのスケジューリングを工夫して、dma転送時間を削減できる</li>
413 <td align="center">77%</td> 620
414 <td align="center">17%</td> 621
415 <td align="center">5.5%</td> 622 </ul>
416 623
417 624 </div>
418 </tr> 625
419 <tr> 626
420 <th>compatibility</th>
421 <td align="center">31s</td>
422 <td align="center">50%</td>
423 <td align="center">39%</td>
424 <td align="center">10%</td>
425
426 </tr>
427 <tr>
428 <th>taskarray</th>
429 <td align="center">34s</td>
430 <td align="center">35%</td>
431 <td align="center">55%</td>
432 <td align="center">9%</td>
433 </tr>
434
435 <caption>速度比較(RUN_TASK_BLOCK を1つ生成)</caption>
436
437 </table><br>
438
439 <table border="3" style="width:100%;">
440 <tr>
441 <th></th>
442 <th>real_time</th>
443 <th>wait_time</th>
444 <th>mail_time</th>
445 <th>busy_ratio</th>
446 </tr>
447 <tr>
448 <th>all</th>
449 <td align="center">58s</td>
450 <td align="center">62%</td>
451 <td align="center">32%</td>
452 <td align="center">5.5%</td>
453
454
455 </tr>
456 <tr>
457 <th>compatibility</th>
458 <td align="center">24s</td>
459 <td align="center">79%</td>
460 <td align="center">17%</td>
461 <td align="center">13%<font color="red">(+3)</font></td>
462
463 </tr>
464 <tr>
465 <th>taskarray</th>
466 <td align="center">28s</td>
467 <td align="center">66%</td>
468 <td align="center">22%</td>
469 <td align="center">11%<font color="red">(+2)</font></td>
470 </tr>
471
472 <caption>速度比較(RUN_TASK_BLOCK を二つ生成)</caption>
473
474 </table><br>
475
476 なるほど、次のTask生成までの時間ロスが減るので、少し速くなりますね。
477
478 </div>
479
480
481
482 <div class="slide">
483 <h1>DrawSpan</h1>
484 DrawSpanのTaskがTaskArray有無の場合<br><br>
485
486 例題はball_bound<br><br>
487
488 compatibility -> 4.073888 FPS<br>
489 TaskArray -> 4.339242 FPS<br>
490
491 </div>
492
493
494
495 <div class="slide">
496 <h1>論文をどうまとめるか</h1>
497 <ul>
498 論文ちゃんの内容
499 <li>Taskが大量の場合一度に全て生成するより、incrementalに生成したほうがよい</li>
500 <li>TaskArrayはうーん。うーん。もう少し考えてみます。</li>
501
502 </ul>
503 </div>
504 627
505 <div class="slide"> 628 <div class="slide">
506 <h1>end</h1> 629 <h1>end</h1>
507 <ul> 630 <ul>
508 /*end*/ 631 /*end*/
509 <br><br> 632 <br><br>
510 633
511 <div class="slide">
512 <h1>Mandelbrot</h1>
513
514 <table border="3" style="width:100%;">
515 <tr>
516 <th></th>
517 <th>real_time</th>
518 <th>wait_time</th>
519 <th>mail_time</th>
520 <th>busy_ratio</th>
521 </tr>
522 <tr>
523 <th>all</th>
524 <td align="center">58s(-0)</td>
525 <td align="center">62(-15)%</td>
526 <td align="center">32%(+15)</td>
527 <td align="center">5.5%(-0)</td>
528
529
530 </tr>
531 <tr>
532 <th>compatibility</th>
533 <td align="center">24s(-7)</td>
534 <td align="center">79%(+19)</td>
535 <td align="center">17%(-22)</td>
536 <td align="center">13%(+3)</td>
537
538 </tr>
539 <tr>
540 <th>taskarray</th>
541 <td align="center">28s(-6)</td>
542 <td align="center">66%(+31)</td>
543 <td align="center">22%(-33)</td>
544 <td align="center">11%(+2)</td>
545 </tr>
546
547 <caption>速度比較(RUN_TASK_BLOCK を二つ生成)</caption>
548
549 </table><br>
550
551
552 </div>
553
554
555 <div class="slide">
556 <h1>Mandelbort</h1>
557 <ul>
558 <br>
559
560 MandelbrotをCeriumに実装<br>
561
562 こっちも、まだセグメンテーションエラーです。<br>
563 バグとり間に合わず。
564
565 </div>
566
567 <div class="slide">
568 <h1>バグとり</h1>
569 <ul>
570 <br>
571
572 というわけで、WordCountのTaskArray,ネックの検証<br>
573 MandelbrotのCerium実装<br>
574 引き続きもうちょっと頑張ります。
575
576 </div>
577
578 <div class="slide">
579 <h1>end</h1>
580 <ul>
581 /*end*/
582 <br><br>
583 </div>
584
585 <div class="slide">
586 <h1>ダブルバッファリング</h1>
587
588 <img src="gazo/doublebuffering.png" width="670" height="200">
589 <br>
590 TaskListしたので、ダブルバッファリングしやすかった。次のタスクのアドレスがわかるので、
591 現Taskを処理している間に次のTaskをdma_get,前のTaskのoutputをdma_putする。
592
593 </div>
594
595 <div class="slide">
596 <h1>例題</h1>
597 <br>
598
599 という実装をしたところで、マンデルブロー集合を計算してみました。demoあり
600
601 </div>
602
603 <div class="slide">
604 <h1>今後</h1>
605 <br>
606
607 現在、SPE側のrun関数が決め打ちで動き、それがtaskという事になっている。
608 Cerium/TaskManager のように複数のTaskから指定して動くようにしたい。あとTaskの依存関係も。
609
610 MemorySegment!やります!
611
612 </div>
613
614
615 <div class="slide">
616 <h1>end</h1>
617 <ul>
618 /*end*/
619 <br><br>
620
621
622 </ul>
623 634
624 <div class="handout"> 635 <div class="handout">
625 [any material that should appear in print but not on the slide] 636 [any material that should appear in print but not on the slide]
626 </div> 637 </div>
627 </div> 638 </div>