Cerium

108574D 金城裕

指導教官:河野真治

琉球大学大学院理工学研究科情報工学専攻並列信頼研

ゴゴゴゴ

これから語られるのはCeriumに関しての壮大なお話・・・?
うろ覚えな所もありますが、だいたいこんな感じかも

4年次研究室配属

4年次配属になり、 ゲーム班でさわってたから、Cerium やるー。やっふー。

先生のソース変更

でも、Ceriumってなにするんだろー。RenderingEngineのチューニングあたりかなー。
とりあえず、WordCount を TaskManager を使って実装する。
これは比較的優しかった。

先生のソース変更

お次は、RenderingEngineのチューニングあたりかなー。

TaskArray

TaskArrayとは?

そして卒研へ

RenderingEngine に光源を実装、spe側ではSIMD演算を実装して、速度向上を計る。

M1に昇格

TaskManager のチューニングにとりかかる

現在

現在
みえてきたこと・・・

future

今の TaskManager だけだと少し足りない

それらの煩わしい手順を解決するための、TaskManager以外のものが必要なのかも

RenderinEngineの場合だと

それらの煩わしい手順を解決するための、TaskManager以外のものが必要なのかも

TaskCreater

今ココ。
現在)TaskManager -> ユーザ
提案)TaskManager -> TaskCreater(または何かしらのパターン) -> ユーザ

TaskCreater 機能

TaskCreater

  • WordCount のをうまく抜き出せば、自動的に input を分割 TaskArray化 できるAPIを作れるのでは
  • input, output の1Dataのsize, Task全体のsize, とそれのスタートアドレスを渡してやれば・・できるはず・
  • 今後

    END

    /*end*/

    研究目的

    現在 Cell/PS3またはMacOSX上で動作するCerium Task Manager を使って RenderingEngine を実装中である

    それらの煩わしい手順を解決するための、TaskManagerを用いたプログラミングスタイルを提案する

    研究背景

    それでですね。ここらへんで、OpenCL 等の他のフレームワークや、アムダール則について書きたいんです。
    なんですが、OpenCL を使ってCellでプログラミングしたことがないので、ちょっと書けない。これから他のフレームワークも調べたい。

    Mail timing

    学会前に自分がいじったせいか、mail のタイミングでバグがありました。

    Mail timing

    (前)SchedNop2Ready -> SchedMail
    (後)SchedNop2Ready -> SchedNop -> SchedMail

    Mail Queue

    Mail Queue を MailManager を使ったものに書き換え。
    Mail Queue をさっそく計測。。特に実行時間は変わらず^^;

    Task list mail Time

    SPE が TaskList の要求 mail の待ち時間を表示するようにしました。
    (demo)
    mail time の ほとんどが task list の待ち時間。

    RenderinEngine

    mail time の待ち時間 がほんとんど task list 待ちなら。
    解決すべきは、TaskManager側ではなく、Engine 部分のバリア同期

    SDL

    がんばってほんとにいろいろぐぐったり、したんですが・・
    ./configure --enable-ps3-video
    みたいなオプションしか分からない。んで、いろいろ探しているうちに・・

    SDL

    Hello. This patch provides basic support for video on the Sony PS3 Linux framebuffer. Scaling, format-conversion, and drawing is done from the SPEs, so there is little performance impact to PPE applications. This is by no means production quality code, but it is a very good start and a good example of how to use the PS3's hardware capabilities to accelerate video playback on the box.

    SDL

    The driver has been verified to work with ffplay, mplayer and xine. This piece of software has been developed at the IBM R&D Lab in Boeblingen, Germany and is now returned to the community. Enjoy !

    SDL

    これ以上のことがわらないので、また少しソース読みはじめました・・。
    ps3 driver って動かないのかも・・

    やること

    とくかく、SDLのやつなんとしないといけない。
    もっと詳しく調べます

    今後

    比較したいので、OpenCL や他のフレームワークを調べてみる。
    法線ベクトルもOpenGL と合うように、blender から見直す
    もっとTaskManagerを使っていって新しいプログラミングスタイルを編み出す!

    END

    /*end*/

    参照の局所性

    RenderinEngine の場合、mail待ちの時間が大きな問題ですが。
    WordCount 実装時に、SPEが同時にバラバラのメモリにアクセス、パーフォーマンスがいっきに低下したことがある。 データの局所性がなりたたない時がある。

    参照の局所性

    大量のデータ、簡単な処理をSPEで行う場合にパイプラインで隠れないことがあるのかも。

    end

    /*end*/

    Mandelbrot

    real_time wait_time mail_time busy_ratio
    all 58s(-0) 62(-15)% 32%(+15) 5.5%(-0)
    compatibility 24s(-7) 79%(+19) 17%(-22) 13%(+3)
    taskarray 28s(-6) 66%(+31) 22%(-33) 11%(+2)
    速度比較(RUN_TASK_BLOCK を二つ生成)

    Mandelbort

    バグとり

    end

    ダブルバッファリング


    TaskListしたので、ダブルバッファリングしやすかった。次のタスクのアドレスがわかるので、 現Taskを処理している間に次のTaskをdma_get,前のTaskのoutputをdma_putする。

    例題


    という実装をしたところで、マンデルブロー集合を計算してみました。demoあり

    今後


    現在、SPE側のrun関数が決め打ちで動き、それがtaskという事になっている。 Cerium/TaskManager のように複数のTaskから指定して動くようにしたい。あとTaskの依存関係も。 MemorySegment!やります!

    end

    [any material that should appear in print but not on the slide]