0
|
1 \chapter{結論} \label{chapter:conclusion}
|
|
2
|
|
3 \section{まとめ}
|
|
4
|
|
5 本稿では、Many Core Architecture を用いた、
|
|
6 並列プログラムの開発をサポートするフレームワークとして
|
|
7 Fine Grain Task Manager を提案し、Task Manager を用いて
|
|
8 独自のレンダリングエンジンを持つPS3ゲーム開発フレームワークの
|
|
9 Cerium を開発した。
|
|
10
|
|
11 並列プログラミングの経験が浅い学生にとって、
|
|
12 PS3 を用いたゲーム開発は困難で、学生実験の期間内に
|
|
13 開発したゲームのレベルが毎年一定以上にはならないという問題があった。
|
|
14 また、並列プログラムの特徴から、並列度の維持や信頼性の確保が困難であることが
|
|
15 指摘されている。
|
|
16
|
|
17 そこで、第\ref{chapter:taskmanager}章では
|
|
18 並列プログラミングのフレームワークとして TaskManager の仕様と実装を説明し、
|
|
19 この TaskManager を用いた Sort プログラムでは
|
|
20 並列度が確保でき、台数効果が出ていることが確認できた。
|
|
21
|
|
22 第\ref{chapter:cerium}章では、TaskManager を用いた、ゲーム開発用
|
|
23 フレームワークである Cerium の仕様と実装を説明した。
|
|
24 また、実際に学生に Cerium を用いてゲーム開発を行ってもらい、
|
|
25 その結果から Cerium のフレームワークとしての有用性と
|
|
26 今後必要な実装を確認できた。
|
|
27
|
|
28 最後に、第\ref{chapter:compare}章では、
|
|
29 Khronos OpenCL Working Group が開発している、
|
|
30 並列プログラミングのフレームワークである OpenCL 及び、
|
|
31 Cell で動作する OpenGL のドライバである Gallium3D について説明し、
|
|
32 TaskManager 、Cerium との比較を行った。
|
|
33
|
|
34 TaskManager 及び TaskManager を機能の一つとする Cerium は、
|
|
35 学生にとって身近なアーキテクチャである Mac OS X や Linux、
|
|
36 学生には困難な並列プログラミングが必要となる PS3 Cell など、
|
|
37 複数の環境で動作することが可能である。
|
|
38 学生が手を付けやすい環境から開発を始めることができ、
|
|
39 大幅な変更なく PS3 上で動作を確認できる。
|
|
40 更に、タスク単位で Cell に特化したプログラミングを行うことで
|
|
41 PS3 上で動作するゲームの開発が可能となる。
|
|
42
|
|
43 \section{今後の課題}
|
|
44
|
|
45 \subsection{SceneGraph の SPE 上での実行}
|
|
46
|
|
47 \ref{sec:cerium_student}節 で述べたように、現在 SceneGraph は
|
|
48 メインスレッドのみで実行されている。
|
|
49 衝突判定や行列演算など、SPE で効果的な演算を多くもつ SceneGraph を
|
|
50 SPE 上で実行させる必要がある。
|
|
51
|
|
52 %しかし、SPE には分岐予測命令がないため、
|
|
53 %if 文を多用する木構造のアクセスはクリティカルな処理となる。
|
|
54 %また、SPE 上で木の要素を追加した場合、それをメインメモリに反映させる
|
|
55 %必要があるが、独立した要素毎にメインメモリへのアロケートを行うのも
|
|
56 %重い処理となる。
|
|
57
|
|
58 %そこで、SceneGraph を木構造ではなく、それを表す配列として持つ
|
|
59
|
|
60 %そのために実装の必要がある機能を以下に示す。
|
|
61 %
|
|
62 %\begin{itemize}
|
|
63 %\item SPE 上での SceneGraph の操作 (add, remove)
|
|
64 %\item
|
|
65 %\end{itemize}
|
|
66
|
|
67 \subsection{SPE 上での SIMD 演算の導入}
|
|
68
|
|
69 現在の SPE 上での処理は全てスカラ演算で記述されており、
|
|
70 SPE の機能を活用するには SIMD 演算を使用する方が効果的だと期待している。
|
|
71 また、コンパイラの最適化により、自動的に SIMD 演算に変換されるような
|
|
72 データ構造を採用するのも効果的だと考えている。
|
|
73
|
|
74 \subsection{SPE 上でのテクスチャデータの管理}
|
|
75
|
|
76 \ref{sec:cerium_rendering_texture_hash}節 で述べたように、
|
|
77 現在テクスチャの追い出し処理は FIFO で実装している。
|
|
78 そのため、テクスチャのヒット率が確保できない可能性がある。
|
|
79 高いヒット率を維持するためには、さらに効果的な追い出し法を採用する必要がある。
|
|
80
|
|
81 また、同じテクスチャを使う Span を同じ SPE に集めるなどの、
|
|
82 データ構造や SPE への割り振り処理を修正する必要がある。
|
|
83
|
|
84 テクスチャの圧縮による、SPE 上のテクスチャデータの保存数を増やすことも
|
|
85 効果的だと考えられる。
|
|
86
|
|
87 %\subsection{コードの入れ替え}
|