annotate compare.tex @ 2:44fb87ea539a

*** empty log message ***
author gongo
date Mon, 14 Jul 2008 13:30:06 +0900
parents d40dd97c0a50
children 3ee6deaab278
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
d40dd97c0a50 Initial revision
gongo
parents:
diff changeset
1 \section{Cerium の評価と考察}
d40dd97c0a50 Initial revision
gongo
parents:
diff changeset
2 Cerium Rendering Engine を用いて、
d40dd97c0a50 Initial revision
gongo
parents:
diff changeset
3 テクスチャを貼った一つの立方体を回転させるというプログラムを実行した。
d40dd97c0a50 Initial revision
gongo
parents:
diff changeset
4
d40dd97c0a50 Initial revision
gongo
parents:
diff changeset
5 今回、\figref{fig:cerium} で示した Task に対する CPU の割り振りは
d40dd97c0a50 Initial revision
gongo
parents:
diff changeset
6 \tabref{tab:hyoka1} とする。
d40dd97c0a50 Initial revision
gongo
parents:
diff changeset
7
d40dd97c0a50 Initial revision
gongo
parents:
diff changeset
8 \begin{table}[htbp]
d40dd97c0a50 Initial revision
gongo
parents:
diff changeset
9 \caption{Task の実行 CPU} \label{tab:hyoka1}
d40dd97c0a50 Initial revision
gongo
parents:
diff changeset
10 \hbox to\hsize{\hfil
d40dd97c0a50 Initial revision
gongo
parents:
diff changeset
11 \begin{tabular}{c|l} \hline \hline
d40dd97c0a50 Initial revision
gongo
parents:
diff changeset
12 Task & CPU \\ \hline
d40dd97c0a50 Initial revision
gongo
parents:
diff changeset
13 SceneGraph to PolygonPack & PPE \\
d40dd97c0a50 Initial revision
gongo
parents:
diff changeset
14 Polygonpack to SpanPack & PPE \\
d40dd97c0a50 Initial revision
gongo
parents:
diff changeset
15 Rendering & SPE \\ \hline
d40dd97c0a50 Initial revision
gongo
parents:
diff changeset
16 \end{tabular}\hfil}
d40dd97c0a50 Initial revision
gongo
parents:
diff changeset
17 \end{table}
d40dd97c0a50 Initial revision
gongo
parents:
diff changeset
18
d40dd97c0a50 Initial revision
gongo
parents:
diff changeset
19
d40dd97c0a50 Initial revision
gongo
parents:
diff changeset
20 描画領域の大きさは 720x480 とし、
d40dd97c0a50 Initial revision
gongo
parents:
diff changeset
21 使用する SPE の数を変えて実行速度の比較を行った。
d40dd97c0a50 Initial revision
gongo
parents:
diff changeset
22
d40dd97c0a50 Initial revision
gongo
parents:
diff changeset
23 \begin{table}[htbp]
d40dd97c0a50 Initial revision
gongo
parents:
diff changeset
24 \caption{実行速度 (720x480)} \label{tab:hyoka3}
d40dd97c0a50 Initial revision
gongo
parents:
diff changeset
25 \hbox to\hsize{\hfil
d40dd97c0a50 Initial revision
gongo
parents:
diff changeset
26 \begin{tabular}{l|r} \hline \hline
d40dd97c0a50 Initial revision
gongo
parents:
diff changeset
27 実行環境 & 実行速度\\ \hline
d40dd97c0a50 Initial revision
gongo
parents:
diff changeset
28 PPE のみ & 74 FPS \\
d40dd97c0a50 Initial revision
gongo
parents:
diff changeset
29 PPE + SPE 1台 & 190 FPS \\
d40dd97c0a50 Initial revision
gongo
parents:
diff changeset
30 PPE + SPE 2台 & 245 FPS \\
d40dd97c0a50 Initial revision
gongo
parents:
diff changeset
31 PPE + SPE 3台 & 270 FPS \\
d40dd97c0a50 Initial revision
gongo
parents:
diff changeset
32 PPE + SPE 6台 & 293 FPS \\ \hline
d40dd97c0a50 Initial revision
gongo
parents:
diff changeset
33 \end{tabular}\hfil}
d40dd97c0a50 Initial revision
gongo
parents:
diff changeset
34 \end{table}
d40dd97c0a50 Initial revision
gongo
parents:
diff changeset
35
d40dd97c0a50 Initial revision
gongo
parents:
diff changeset
36 \tabref{tab:hyoka3} より、SPE の台数を増やす事によって、
d40dd97c0a50 Initial revision
gongo
parents:
diff changeset
37 実行速度が向上しているのがわかる。
d40dd97c0a50 Initial revision
gongo
parents:
diff changeset
38 しかし、正しく台数効果が出ているとは言えない。
2
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
39 原因として
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
40
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
41 \begin{enumerate}
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
42 \item アルゴリズムのミス
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
43 \item 効率的なデータ及びコード分割がされていない
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
44 \item 全てのタスクを SPE 上で実行していない \label{list:d3}
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
45 \end{enumerate}
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
46
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
47 等といった事が考えられる。
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
48 ここでは、原因(\ref{list:d3})について考察する。
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
49
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
50
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
51 %その原因として、TaskManager の実装の不備があげられる。
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
52
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
53 %現在、Cerium TaskManager には DMA でメインメモリから SPE 上にプログラムを
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
54 %ロードする機能を実装していないため、
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
55 %必要な時に必要なプログラムだけを SPE 上に置く事が出来ない。
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
56 %SPE の容量では、Cerium の全てのタスクを SPE 上に乗せる事は出来ないため、
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
57 %現在は Rendering のタスクだけを SPE 上にマッピングしてある。
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
58
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
59 %全てのタスクを SPE 上で実行できるようになれば、
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
60 %実行速度はさらに向上すると考えられる。
0
d40dd97c0a50 Initial revision
gongo
parents:
diff changeset
61
2
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
62 SPE の 256KB という容量では、現在の Cerium の全てのタスクを
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
63 SPE 上に乗せる事は出来ないため、\tabref{tab:hyoka1} のように
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
64 Rendering のタスクだけを SPE 上で実行している。
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
65 これを回避するために、SPE プログラムの on-demand load の実装が必要となる。
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
66 実装の方法として、以下のような手段が考えられる。
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
67
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
68 \begin{enumerate}
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
69 \item メインメモリにマッピングした SPE プログラムを DMA で SPE 上にロードする
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
70 \label{list:com1}
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
71 \item SPE をタスクの数に対応するように起動し、それぞれにタスクを attach する
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
72 \label{list:com2}
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
73 \end{enumerate}
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
74
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
75 OS のカーネルレベルでは、SPE 毎に spufs と呼ぶ
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
76 仮想ファイルシステム(VFS) が与えられており、
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
77 仮想的なファイルとして SPE のリソース にアクセス可能な
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
78 インターフェース が設けられている \cite{spufs}。
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
79 そのため、6台以上の SPE を仮想的に起動する事が可能である。
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
80 (\ref{list:com2}) の手法では、実行するタスクが attach されている
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
81 SPE を切り替えながら実行していく。
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
82
0
d40dd97c0a50 Initial revision
gongo
parents:
diff changeset
83 全てのタスクを SPE 上で実行できるようになれば、
2
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
84 タスク単体の実行速度は向上すると考えられる。
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
85 しかし、SPE プログラムもしくは仮想 SPE の入れ替えのコストが発生するため、
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
86 プログラム全体として向上するかは検証する必要があり、
44fb87ea539a *** empty log message ***
gongo
parents: 0
diff changeset
87 on-demand load の実装と共に、今後の課題として挙げられる。