4
|
1 \section{評価と考察}
|
5
|
2
|
|
3 Cerium Rendering Engine を用いて、
|
|
4 OSMesa と同様に立方体を回転させる処理を評価する。
|
4
|
5 今回、\figref{fig-cerium} で示した Task に対する CPU の割り振りは
|
|
6 \tabref{tab:hyoka1} とする。
|
|
7
|
6
|
8 \begin{table}[htbp]
|
4
|
9 \caption{Task の実行 CPU} \label{tab:hyoka1}
|
|
10 \hbox to\hsize{\hfil
|
|
11 \begin{tabular}{c|l} \hline \hline
|
|
12 Task & CPU \\ \hline
|
5
|
13 SceneGraph to PolygonPack & PPE \\
|
|
14 Polygonpack to SpanPack & PPE \\
|
4
|
15 Rendering & SPE \\ \hline
|
|
16 \end{tabular}\hfil}
|
|
17 \end{table}
|
|
18
|
5
|
19 PPE/SPE に対するコンパイルの最適化レベル及びその時の実行 FPS を
|
|
20 \tabref{tab:hyoka2} に示す。描画領域は 640x80 である。
|
4
|
21
|
6
|
22 \begin{table}[htbp]
|
5
|
23 \caption{Cerium 実行速度 (640x80)} \label{tab:hyoka2}
|
4
|
24 \hbox to\hsize{\hfil
|
|
25 \begin{tabular}{cc|l} \hline \hline
|
|
26 PPE & SPE & FPS \\ \hline
|
|
27 最適化なし & 最適化なし & 263 FPS \\
|
5
|
28 -O2 & 最適化なし & 317 FPS \\
|
|
29 最適化なし & -O2 & 812 FPS \\
|
|
30 -O2 & -O2 & 1355 FPS \\ \hline
|
4
|
31 \end{tabular}\hfil}
|
|
32 \end{table}
|
|
33
|
|
34 \tabref{tab:hyoka2} より、SPE に対する最適化が非常に有効であるといえる。
|
7
|
35
|
5
|
36 また、描画領域の大きさと実行速度は反比例すると考えると、
|
|
37 1920x1080の時、OSMesa も合わせると \tabref{tab:hyoka3} のようになる。
|
|
38
|
6
|
39 \begin{table}[htbp]
|
5
|
40 \caption{実行速度 (1920x1080)} \label{tab:hyoka3}
|
|
41 \hbox to\hsize{\hfil
|
|
42 \begin{tabular}{r|l|l} \hline \hline
|
|
43 & 実行環境 & 実行速度\\ \hline
|
|
44 1 & SDL(1.2)+OSMesa(6.5.2) & 18 FPS \\
|
|
45 2 & SDL(1.2)+OSMesa(6.5.2) with SPE & 24 FPS \\
|
|
46 3 & SDL(1.2.13)+OSMesa(7.0.2) with SPE & 43 FPS \\
|
|
47 4 & Cerium & 33 FPS \\ \hline
|
|
48 \end{tabular}\hfil}
|
|
49 \end{table}
|
|
50
|
|
51 Cerium は 環境 3 の速度を下回っている。
|
|
52 この理由としては、SPE 上で動かしていない Task があるのが挙げられる。
|
7
|
53 現在、Cerium には DMA で SPE 上にプログラムをロードする機能を
|
|
54 実装していないため、必要なプログラムを入れ替えることができない。
|
5
|
55 そのため、現在は Renderer の Task だけを SPE 上にマッピングしてある。
|
7
|
56
|
|
57 また、Texture の分割と、Texture の必要な部分だけ DMA で
|
|
58 取得するという機能も実装されていない。
|
|
59 そのため、ここでは開始直後に Texture を全て SPE 上にロードしている。
|
|
60
|
6
|
61 Cerium の描画領域の横幅が 640 に抑えてあるのも、上記の問題が原因で
|
|
62 1920 pixel 分の Z Buffer を SPE 上に置くスペースが無いからである。
|
5
|
63 オーバーレイ機能を導入するという手法もあるが、
|
|
64 ロード中は SPE が止まってしまうため好ましくない。
|
|
65
|
|
66 また、パイプラインが正常に動いているかなど、
|
|
67 アルゴリズムの検証を行う必要もある。
|
|
68 この場合、C の下位言語である Continuation based C (CbC) を用いて、
|
|
69 開発過程の各段階で検証する手法がある \cite{kono} 。
|