view paper/conclusion.tex @ 0:fd9154e03f46

thesis
author e065725@kinjyo.cr.ie.u-ryukyu.ac.jp
date Sat, 13 Feb 2010 21:38:25 +0900
parents
children
line wrap: on
line source

\chapter{結論} \label{chapter:conclusion}

\section{まとめ}

本稿では、Many Core Architecture を用いた、
並列プログラムの開発をサポートするフレームワークとして
Fine Grain Task Manager を提案し、Task Manager を用いて
独自のレンダリングエンジンを持つPS3ゲーム開発フレームワークの
Cerium を開発した。

並列プログラミングの経験が浅い学生にとって、
PS3 を用いたゲーム開発は困難で、学生実験の期間内に
開発したゲームのレベルが毎年一定以上にはならないという問題があった。
また、並列プログラムの特徴から、並列度の維持や信頼性の確保が困難であることが
指摘されている。

そこで、第\ref{chapter:taskmanager}章では
並列プログラミングのフレームワークとして TaskManager の仕様と実装を説明し、
この TaskManager を用いた Sort プログラムでは
並列度が確保でき、台数効果が出ていることが確認できた。

第\ref{chapter:cerium}章では、TaskManager を用いた、ゲーム開発用
フレームワークである Cerium の仕様と実装を説明した。
また、実際に学生に Cerium を用いてゲーム開発を行ってもらい、
その結果から Cerium のフレームワークとしての有用性と
今後必要な実装を確認できた。

最後に、第\ref{chapter:compare}章では、
Khronos OpenCL Working Group が開発している、
並列プログラミングのフレームワークである OpenCL 及び、
Cell で動作する OpenGL のドライバである Gallium3D について説明し、
TaskManager 、Cerium との比較を行った。

TaskManager 及び TaskManager を機能の一つとする Cerium は、
学生にとって身近なアーキテクチャである Mac OS X や Linux、
学生には困難な並列プログラミングが必要となる PS3 Cell など、
複数の環境で動作することが可能である。
学生が手を付けやすい環境から開発を始めることができ、
大幅な変更なく PS3 上で動作を確認できる。
更に、タスク単位で Cell に特化したプログラミングを行うことで
PS3 上で動作するゲームの開発が可能となる。

\section{今後の課題}

\subsection{SceneGraph の SPE 上での実行}

\ref{sec:cerium_student}節 で述べたように、現在 SceneGraph は
メインスレッドのみで実行されている。
衝突判定や行列演算など、SPE で効果的な演算を多くもつ SceneGraph を
SPE 上で実行させる必要がある。

%しかし、SPE には分岐予測命令がないため、
%if 文を多用する木構造のアクセスはクリティカルな処理となる。
%また、SPE 上で木の要素を追加した場合、それをメインメモリに反映させる
%必要があるが、独立した要素毎にメインメモリへのアロケートを行うのも
%重い処理となる。

%そこで、SceneGraph を木構造ではなく、それを表す配列として持つ

%そのために実装の必要がある機能を以下に示す。
%
%\begin{itemize}
%\item SPE 上での SceneGraph の操作 (add, remove)
%\item 
%\end{itemize}

\subsection{SPE 上での SIMD 演算の導入}

現在の SPE 上での処理は全てスカラ演算で記述されており、
SPE の機能を活用するには SIMD 演算を使用する方が効果的だと期待している。
また、コンパイラの最適化により、自動的に SIMD 演算に変換されるような
データ構造を採用するのも効果的だと考えている。

\subsection{SPE 上でのテクスチャデータの管理}

\ref{sec:cerium_rendering_texture_hash}節 で述べたように、
現在テクスチャの追い出し処理は FIFO で実装している。
そのため、テクスチャのヒット率が確保できない可能性がある。
高いヒット率を維持するためには、さらに効果的な追い出し法を採用する必要がある。

また、同じテクスチャを使う Span を同じ SPE に集めるなどの、
データ構造や SPE への割り振り処理を修正する必要がある。

テクスチャの圧縮による、SPE 上のテクスチャデータの保存数を増やすことも
効果的だと考えられる。

%\subsection{コードの入れ替え}