comparison paper/chapter4.tex @ 15:3ffa20cb613d draft

fix
author Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
date Fri, 10 Feb 2012 18:18:27 +0900
parents cb430c965050
children 598336b53547
comparison
equal deleted inserted replaced
14:cb430c965050 15:3ffa20cb613d
1 \chapter{Ceriumの改良} 1 \chapter{Ceriumの改良}
2 本章では、Cerium に行った改良について説明する。 2 本章では、本研究で Cerium に行った改良について説明する。
3 Cerium のレンダリングの例題として ball\_bound と panel を使用し、それを元に改良の効果を示していく。まず、改良前の 計測結果を示す。(\tabref{ball_bound_flat}) (\tabref{panel_flat}) 3 Cerium のレンダリングの例題として ball\_bound と panel を使用し、それを元に改良の効果を示していく。まず、改良前の 計測結果を示す。(\tabref{ball_bound_flat}) (\tabref{panel_flat})
4 4
5 \begin{table}[!htb] 5 \begin{table}[!htb]
6 \begin{center} 6 \begin{center}
7 \caption{Cerium 改良前 (ball bound)} \label{tab:ball_bound_flat} 7 \caption{Cerium 改良前 (ball bound)} \label{tab:ball_bound_flat}
121 \end{center} 121 \end{center}
122 \caption{mailqueue flow} 122 \caption{mailqueue flow}
123 \label{fig:mailqueue_flow} 123 \label{fig:mailqueue_flow}
124 \end{figure} 124 \end{figure}
125 125
126 MailQueueの大きさはメモリ容量の限り自動で拡張される。以下に ball bound と panelの例題での MailQueue の有無における測定結果を示す(\tabref{mailqueue})。 126 MailQueueの大きさはメモリ容量の限り自動で拡張される。以下に ball bound と panelの例題での MailQueue の有無における測定結果を示す(\tabref{mail_ball})(\tabref{mail_panel})。
127 127
128 \begin{table}[!htb] 128 \begin{table}[!htb]
129 \begin{center} 129 \begin{center}
130 \caption{Effect of MailQueue(ball bound)} \label{tab:mailqueue} 130 \caption{Effect of MailQueue(ball bound)} \label{tab:mail_ball}
131 \hbox to\hsize{\hfil 131 \hbox to\hsize{\hfil
132 \begin{tabular}{|c|c|c|c|c|} \hline 132 \begin{tabular}{|c|c|c|c|c|} \hline
133 MailQueue & FPS & DMA転送待ち時間 & mailの待ち時間 & SPE稼働率\\ \hline 133 MailQueue & FPS & DMA転送待ち時間 & mailの待ち時間 & SPE稼働率\\ \hline
134 なし & 32.2 & 2.5\% & 66.7\% & 30.8\% \\ \hline 134 なし & 32.2 & 2.5\% & 66.7\% & 30.8\% \\ \hline
135 あり & 41.7 & 3.3\% & 56.8\% & 40.0\% \\ \hline 135 あり & 41.7 & 3.3\% & 56.8\% & 40.0\% \\ \hline
136 \end{tabular}\hfil} 136 \end{tabular}\hfil}
137 \end{center} 137 \end{center}
138 \end{table} 138 \end{table}
139 139
140 Mail の待ち時間の割合が減少し、ball bound では8FPSの向上がみられた。ソフトウェア MailQueue によって Mail の書き出しタイミングを変更することで、Mail の待ち時間を削減することができた。PPE 側では、SPEからの Mail の確認は一度の ループ文で行なっている。Mail を確認しおえ、そのループ文を抜けてしまうと、次に Mail を確認するまでに PPE 側の Task 処理が挟まれる。よって、SPE 側の Mail 通知は一度に多く行った方が、PPE側の Mail 確認がスムーズに行われ、結果 SPE の稼働率向上に繋がると言える。ソフトウェアMailQueue では Mail をキューイングし一度に書き出すので、この点でも効果がある。
141
142 \begin{table}[!htb] 140 \begin{table}[!htb]
143 \begin{center} 141 \begin{center}
144 \caption{Effect of use MailQueue(panel)} \label{tab:mail_panel} 142 \caption{Effect of use MailQueue(panel)} \label{tab:mail_panel}
145 \hbox to\hsize{\hfil 143 \hbox to\hsize{\hfil
146 \begin{tabular}{|c|c|c|c|c|} \hline 144 \begin{tabular}{|c|c|c|c|c|} \hline
149 あり & 4.2 & 23.7\% & 4.1.\% & 72.3\% \\ \hline 147 あり & 4.2 & 23.7\% & 4.1.\% & 72.3\% \\ \hline
150 \end{tabular}\hfil} 148 \end{tabular}\hfil}
151 \end{center} 149 \end{center}
152 \end{table} 150 \end{table}
153 151
154 panel では描画の処理に時間がかかるので、稼働率は70\%を超えている。mail 待ちは5.7\%と全体の比率からは低い値となっているため、MailQueueの効果はあまり見られない。 152
153 ball bound では Mail の待ち時間の割合が減少し、 8FPSの向上がみられた。ソフトウェア MailQueue によって Mail の書き出しタイミングを変更することで、Mail の待ち時間を削減することができた。PPE 側では、SPEからの Mail の確認は一度の ループ文で行なっている。Mail を確認しおえ、そのループ文を抜けてしまうと、次に Mail を確認するまでに PPE 側の Task 処理が挟まれる。よって、SPE 側の Mail 通知は一度に多く行った方が、PPE側の Mail 確認がスムーズに行われ、結果 SPE の稼働率向上に繋がると言える。ソフトウェアMailQueue では Mail をキューイングし一度に書き出すので、この点でも効果がある。panel では描画の処理に時間がかかるので、稼働率は70\%を超えている。mail 待ちは5.7\%と全体の比率からは低い値となっているため、MailQueueの効果はあまり見られない。
155 154
156 \section{MemorySegment} 155 \section{MemorySegment}
157 CreateSpanTask 内では明示的に DMA転送命令を行なっている。これは処理するデータ構造上の理由である。しかし、DMA転送は Cell のアーキテクチャに依存した機能である。また Task に登録された input data と output data は自動的に TaskManager によってパイプライン化されるが、明示的にDMA転送を行う場合には、手動でのパイプライン処理を行う必要がある。そこで、Task 内でのデータの入出力の機能を 抽象化する MemorySegment を実装した。MemorySegment によって DAM転送は隠蔽され、アーキテクチャ依存の記述を避けることができる。またメモリ操作も抽象化される。 156 CreateSpanTask 内では明示的に DMA転送命令を行なっている。これは処理するデータ構造上の理由である。しかし、DMA転送は Cell のアーキテクチャに依存した機能である。また Task に登録された input data と output data は自動的に TaskManager によってパイプライン化されるが、明示的にDMA転送を行う場合には、手動でのパイプライン処理を行う必要がある。そこで、Task 内でのデータの入出力の機能を 抽象化する MemorySegment を実装した。MemorySegment によって DAM転送は隠蔽され、アーキテクチャ依存の記述を避けることができる。またメモリ操作も抽象化される。
158 157
159 CreateSpanTask 内の明示的なDMA転送の例を示す。 158 CreateSpanTask 内の明示的なDMA転送の例を示す。
306 \begin{table}[!htb] 305 \begin{table}[!htb]
307 \begin{center} 306 \begin{center}
308 \caption{Cerium の開発から改良点のまとめ} \label{tab:imp_resultp} 307 \caption{Cerium の開発から改良点のまとめ} \label{tab:imp_resultp}
309 \hbox to\hsize{\hfil 308 \hbox to\hsize{\hfil
310 \begin{tabular}{|c|c|} \hline 309 \begin{tabular}{|c|c|} \hline
311 & 変更点 \\ \hline 310 改良時期 & 改良点 \\ \hline
312 & DrawSpanTask のパイプライン化 \\\hline 311 & DrawSpanTask のパイプライン化 \\\hline
313 & TASK\_DUMMY での依存関係の設定を排除 \\ \hline 312 & TASK\_DUMMY での依存関係の設定を排除 \\ \hline
314 & 依存関係の設定を Task 化で実現 \\ \hline 313 & 依存関係の設定を Task 化で実現 \\ \hline
315 & プロファイラの導入 \\ \hline 314 & プロファイラの導入 \\ \hline
316 & Texture cache の実装 \\ \hline 315 & Texture cache の実装 \\ \hline
316 & Prime Counter の実装 \\ \hline
317 本研究 & WordCount の実装 \\ \hline
317 本研究 & CreatePolygon部分のTask化 \\ \hline 318 本研究 & CreatePolygon部分のTask化 \\ \hline
318 本研究 & 光源機能の実装 \\ \hline 319 本研究 & 光源機能の実装 \\ \hline
319 本研究 & Task Array の実装 \\ \hline 320 本研究 & Task Array の実装 \\ \hline
320 本研究 & ソフトウェアMailQueue の実装 \\ \hline 321 本研究 & ソフトウェアMailQueue の実装 \\ \hline
321 本研究 & MemorySegment の実装 \\ \hline 322 本研究 & MemorySegment の実装 \\ \hline
325 326
326 \subsubsection{OpenGLとの比較} 327 \subsubsection{OpenGLとの比較}
327 328
328 OpenGL (Open Graphics Library) とは、Silicon Graphics 社が開発した、3D グラフィックス 329 OpenGL (Open Graphics Library) とは、Silicon Graphics 社が開発した、3D グラフィックス
329 処理のためのプログラミングインターフェースである。 330 処理のためのプログラミングインターフェースである。
330 学生実験で作成された SuperDandy(\figref{t_dandy}) を Task を用いない OpneGL 上で動作するバージョンを用意して、Cerium 331 学生実験で作成されたシューティングゲーム SuperDandy(\figref{t_dandy}) を Task を用いない OpneGL 上で動作するバージョンを用意して、Cerium
331 と性能を比較してみた。OpenGL は PPE だけで動作している。Cerium は今までの改良をすべて加えたもので、レンダリング部分が Task 化され並列処理される。 332 と性能を比較してみた。OpenGL は PPE だけで動作している。Cerium は今までの改良をすべて加えたもので、レンダリング部分が Task 化され並列処理される。
332 333
333 \begin{figure}[htb] 334 \begin{figure}[htb]
334 \begin{center} 335 \begin{center}
335 \includegraphics[scale=0.4]{./images/t_dandy.pdf} 336 \includegraphics[scale=0.4]{./images/t_dandy.pdf}
336 \end{center} 337 \end{center}
337 \caption{SuperDandy実行の様子} 338 \caption{SuperDandy実行の様子}
338 \label{fig:t_dandy} 339 \label{fig:t_dandy}
339 \end{figure} 340 \end{figure}
340 341
341 342 \begin{table}[!htb]
342 343 \begin{center}
343 \begin{table}[!htb] 344 \caption{シューティングゲーム「SuperDandy」の性能比較(OpenGL, Cerium))} \label{tab:dandy-compare}
344 \begin{center}
345 \caption{シューティングゲーム「dandy」の性能比較(OpenGL, Cerium))} \label{tab:dandy-compare}
346 \hbox to \hsize{\hfil 345 \hbox to \hsize{\hfil
347 \begin{tabular}{|c|l|l|c|} \hline 346 \begin{tabular}{|c|l|l|c|} \hline
348 & OpenGL & Cerium & 性能差\\ \hline 347 & OpenGL & Cerium & 性能差\\ \hline
349 dandy & 17.5 FPS & 49.5 FPS & 2.9 倍\\ \hline 348 dandy & 17.5 FPS & 49.5 FPS & 2.9 倍\\ \hline
350 \end{tabular}\hfil} 349 \end{tabular}\hfil}