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