Mercurial > hg > Papers > 2008 > kono-ieice-vld
view 3.tex @ 1:77658ee63839 kono r1
Papaer released.
author | kono |
---|---|
date | Thu, 06 Mar 2008 19:49:25 +0900 |
parents | 685b35adf419 |
children |
line wrap: on
line source
\section{ Many Core 上のプログラムの作り方} 本論文では、本研究室で作成したPS3上のレンダリングエンジンであるCerium Rendering Engine を例題として使う。詳細は別な論文\cite{kono08b} に譲り、ここでは簡単に記述する。 Cerium は、Scene Graph (3Dオブジェクトを木構造にしたもの)をフレームバッファ 上にSPUを用いて描画するRendering Engine であり、教育用としてシンプルな 構成を持っている。Cerium は、 {\small \begin{verbatim} 1. Scene GraphのPolygonの座標から表示する 2. 座標の計算を行い PolygonPack を生成する 3. PolygonPack から、同じY座標を持つ線分の集合SpanPackを生成する 4. SpanPackを(Texture を読込ながら)Z bufferを用いて描画する。 \end{verbatim} } という4つのタスクを持つ。並列実行は、Scene Graphの木、PolygonPack, SpanPack に対してデータ並列実行を行う。さらに、この4つが表示画面毎に パイプライン的に実行される。 これらのタスクは、SPUで実行するために小さなセグメントに分割される 必要がある。分割されたタスクを、PPUまたはSPUで実行するのは Cerium task manager である。Task manager はタスク依存を解決する 機能を持っていて、タスク依存が満たされたものをアクティブキューに 入れ、SPUを起動する。SPUはアクティブキューから、処理するコードと データを取得し自律的に実行を行う。 Cerium Rendering engine を作るには、以下の手順に 実装とテストを行う。 {\small \begin{verbatim} 1. 普通のCで実装した Rendering algorithm 2. データ構造(PolygonPack, SpanPack)を導入したもの 3. コードをタスクに分割し、FIFOキューでシーケンシャルに実行する 4. タスクをSPUに割り当て並列実行する \end{verbatim} } これにより、Algorithmの正しさを確認した上で並列実行に移行することが出来る。