view compare.tex @ 19:d43fc19aed85 default tip

update tags
author convert-repo
date Mon, 10 Nov 2008 04:59:37 +0000
parents 6c558cd2ac8b
children
line wrap: on
line source

\section{Cerium の評価と考察}

Cerium Rendering Engine を用いて、
OSMesa と同様に立方体を回転させる処理を評価する。
今回、\figref{fig-cerium} で示した Task に対する CPU の割り振りは
\tabref{tab:hyoka1} とする。

\begin{table}[htbp]
  \caption{Task の実行 CPU} \label{tab:hyoka1}
  \hbox to\hsize{\hfil
  \begin{tabular}{c|l} \hline \hline
    Task & CPU \\ \hline
    SceneGraph to PolygonPack & PPE \\
    Polygonpack to SpanPack   & PPE \\
    Rendering & SPE \\ \hline
  \end{tabular}\hfil}
\end{table}

PPE/SPE に対するコンパイルの最適化レベル及びその時の実行 FPS を
\tabref{tab:hyoka2} に示す。描画領域は 640x80 である。

\begin{table}[htbp]
  \caption{Cerium 実行速度 (640x80)} \label{tab:hyoka2}
  \hbox to\hsize{\hfil
  \begin{tabular}{cc|l} \hline \hline
    PPE & SPE & FPS \\ \hline
    最適化なし & 最適化なし & 263 FPS \\
    -O2 & 最適化なし & 317 FPS \\
    最適化なし & -O2 & 812 FPS \\
    -O2 & -O2 & 1355 FPS \\ \hline    
  \end{tabular}\hfil}
\end{table}

\tabref{tab:hyoka2} より、SPE に対する最適化が非常に有効であるといえる。

また、描画領域の大きさと実行速度は反比例すると考えると、
1920x1080の時、先行研究の結果と合わせると \tabref{tab:hyoka3} のようになる。

\begin{table}[htbp]
  \caption{実行速度 (1920x1080)} \label{tab:hyoka3}
  \hbox to\hsize{\hfil
  \begin{tabular}{r|l|l} \hline \hline
    & 実行環境 & 実行速度\\ \hline
    1 & SDL(1.2)+OSMesa(6.5.2) & 18 FPS \\ 
    2 & SDL(1.2)+OSMesa(6.5.2) with SPE & 24 FPS \\ 
    3 & SDL(1.2.13)+OSMesa(7.0.2) with SPE & 43 FPS \\ 
    4 & Cerium & 33 FPS \\ \hline
  \end{tabular}\hfil}
\end{table}

Cerium は 環境 1, 2 は上回っているものの、環境 3 の速度を下回っている。
この理由としては、SPE 上で動かしていないタスクがあるのが挙げられる。

現在、Cerium には DMA で SPE 上にプログラムをロードする機能を
実装していないため、必要な時に必要なプログラムだけを SPE 上に置くという
ことができない。SPE の LS の容量では、全てのタスクを SPE 上に乗せることは
できないため、現在は Renderer のタスクだけを SPE 上にマッピングしてある。

また、プログラム開始直後にテクスチャデータを全て SPE 上にロードしている。
そのため、必要無いデータまで SPE 上に置いている状態なので、
メモリ領域を無駄に消費している。

Cerium の描画領域の横幅が 640 に抑えてあるのも、上記の問題が原因で
1920 pixel 分の Z Buffer を SPE 上に置くスペースが無いからである。
オーバーレイ機能を導入するという手法もあるが、
ロード中は SPE が止まってしまうため好ましくない。

また、パイプラインが正常に動いているかなど、
アルゴリズムの検証を行う必要もある。