annotate resume/finalutf8.tex @ 3:dadfafc34c6e

amendment
author Yutaka_Kinjyo
date Tue, 16 Feb 2010 03:46:18 +0900
parents f9330d7fcfb0
children 986baf7fad44
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
1 \documentclass[twocolumn,twoside,9.5pt]{jarticle}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
2 \usepackage[dvipdfm]{graphicx}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
3 \usepackage{booktabs}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
4
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
5 \usepackage{fancyhdr}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
6 \pagestyle{fancy}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
7 \lhead{\includegraphics[height=1zw,clip,keepaspectratio]{pic/emblem-bitmap.eps}琉球大学主催 工学部情報工学科 卒業研究発表会}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
8 \rhead{}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
9 \cfoot{}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
10
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
11 \setlength{\topmargin}{-1in \addtolength{\topmargin}{15mm}}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
12 \setlength{\headheight}{0mm}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
13 \setlength{\headsep}{5mm}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
14 \setlength{\oddsidemargin}{-1in \addtolength{\oddsidemargin}{11mm}}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
15 \setlength{\evensidemargin}{-1in \addtolength{\evensidemargin}{21mm}}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
16 \setlength{\textwidth}{181mm}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
17 \setlength{\textheight}{261mm}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
18 \setlength{\footskip}{0mm}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
19 \pagestyle{empty}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
20
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
21 \begin{document}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
22 \title{Cell上のソフトウェアレンダリングの高機能化と高速化}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
23 \author{065725F 金城裕 {}{} 指導教員 : 河野真治}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
24 \date{}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
25 \maketitle
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
26 \thispagestyle{fancy}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
27
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
28 \section{Cell上のソフトウェアレンダリング}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
29
3
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
30 我々は、8SPE+2PPEのヘテロCPU構成を持つCell / PS3 上での
2
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
31 ソフトウェアレンダリングエンジン
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
32 を開発中である。これは、Cerium Task Manager 上に実装され、琉球大学情報工学科の
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
33 3年生の実験で使用中である。PS3 のGraphics Engine の仕様は公開されていない
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
34 ために、ソフトウェアレンダリングを
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
35 実装する必要がある。
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
36
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
37 ソフトウェアレンダリングは、SceneGraph、Polygon、Span、Z buffer の各段階があり、
3
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
38 それぞれの段階で、並列処理を行なう必要がある。現在は、Span の生成を1 SPE上で行ない、Z buffer を複数のSPE上で処理している。さらに、他の段階でも並列処理を
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
39 行なう必要がある。PPEよりもSPEの方が高速なので、1SPE 上で実行するだけでも
2
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
40 意味がある。
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
41
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
42 \vspace{-5mm}
3
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
43 \section{Cell BROADBAND ENGINE}
2
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
44 Cellは、1基の制御系プロセッサコア (PPE:PowerPc Processor ELement) と8基の演算系プロセッサコア (SPE:Synergistic Processor Element) で構成される。各プロセッサコアは、EIB (Element Interconnect Bus) と呼ばれる高速なバスで接続されている。また、EIBはメインメモリや外部入出力デバイスとも接続されていて、各プロセッサコアはEIBを経由してデータアクセスをおこなう。
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
45
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
46 この2種類のCPUをプログラマ自身が用途に合わせて適切に使い分けるように考慮する必要がある。
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
47
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
48 \vspace{-6mm}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
49 \section{Cerium}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
50 当研究室ではCeriumと呼ばれるゲーム開発フレームワークがあり、以下の3つの要素から構成されている。\\
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
51
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
52 \vspace{-6mm}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
53 \begin{itemize}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
54 \item SceneGraph
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
55 \vspace{-3mm}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
56 \item Rendering Engine
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
57 \vspace{-3mm}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
58 \item Task Manager
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
59 \end{itemize}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
60
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
61 Ceriumは独自にRenderingEngineを持つ。ゲーム中のオブジャクトの振る舞いやルールはSceneGraphで管理し、それらの動きやレンダリングの処理を動的にSPEに割り振るカーネルとして、TaskMnagerが用いられる。
3
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
62 現在Ceriumはlinux,macosx上で動作し、コンパイル方法によってアーキテクチャを切り替えられる。
2
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
63
3
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
64 \section{Task Manager}
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
65 TaskManagerは、タスクと呼ばれる、分割された各プログラムを管理する。タスクの単位はサブルーチンまたは関数とし、タスク同士の依存関係を考慮し、実行可能状態になったタスクを各SPEに割り振る。タスクは通常PPEスレッドで生成され、SPEスレッドに送られる。
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
66 SPEスレッドでは、受け取ったタスクをパイプラインに沿ってステージを遷移しながら複数のタスクを同時に実行していく。
2
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
67
3
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
68 \vspace{-6mm}
2
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
69 \section{Rendering Engine}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
70
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
71 Rendering Engineは主に、CreatePolygonFromSceneGraph、CreateSpan、DrawSpanという3つのタスクから構成されている。
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
72 それぞれのタスクの動作とレンダリングの流れを示す。
3
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
73
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
74 {\small
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
75 \begin{enumerate}
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
76 \item CreatePolygonFromSceneGraph タスクによってSceneGraphをもとにモデリングデータから、実際に表示するポリゴンを生成する。
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
77 \item CreateSpan タスクで生成したポリゴンからSpanの生成する。
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
78 \item DrawSpan タスクでSpanをRGBにマッピングし描画する。
2
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
79 ここでいうSpanとは、ポリゴンに対するある特定のY座標に関するデータを抜き出したものである。
3
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
80 \end{enumerate}
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
81 }
2
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
82
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
83 \vspace{0mm}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
84 \begin{figure}[htbp]
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
85 \begin{center}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
86 \includegraphics[scale=0.4]{pic/rendering3.pdf}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
87 \caption{レンダリングの流れ} \label{rendering}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
88 \end{center}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
89 \end{figure}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
90
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
91
3
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
92 \vspace{-10mm}
2
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
93 \section{レンダリングエンジンの高速化と高機能化}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
94 \subsection{光源の実装}
3
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
95 Rendering Engine に光源処理の実装をした。光源は SceneGraph のオブジェクトと
2
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
96 して実装され、SceneGraph 側から、操作できる。光源は点光源であり、光源数は 4 つに
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
97 設定している。
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
98
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
99 \vspace{0mm}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
100 \begin{figure}[htbp]
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
101 \begin{center}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
102 \includegraphics[scale=0.4]{pic/nonlightearth.pdf}    
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
103 \includegraphics[scale=0.4]{pic/lightearth.pdf}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
104 \caption{光源実装前後の表示結果} \label{nonlightearth}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
105 \end{center}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
106 \end{figure}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
107
3
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
108 \vspace{-6mm}
2
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
109 \subsection{実装手法}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
110 光源処理は DrawSpan タスク内で行う。描画対象となる Span は法線ベクトルの情報
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
111 を持っている。光源の座標情報は、あらかじめ、各 SPE のローカルストアに確保してい
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
112 る。描画対象のドット座標と光源の座標から光源ベクトルを求める。光源ベクトルと法線
3
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
113 ベクトルとの内積を計算し、rgb 値に乗算する。 それにより描画されるrgb値が、点光源の位置から
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
114 光のあたり具合を考慮にいれた値になる。
2
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
115
3
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
116 \vspace{-6mm}
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
117 \subsubsection{光源座標の Load,Update の為のタスク}
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
118 光源実装のために DataLoad タスクと DataUpdate タスクを実装した。
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
119 DataLoad タスクは指定されたサイズ分の領域をSPEに確保するタスクである。
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
120 光源座標のメモリ領域を各 SPE のローカルストアに確保するために使用している。
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
121 DataUpdate タスクは DataLoad タスクで確保された領域に、指定されたデータを書き込むタスクである。
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
122 確保された領域の光源座標情報を更新するために使用している。
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
123 SPE 側でのメモリ領域の確保、参照には TaskManager の API を用いている。
2
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
124
3
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
125 \vspace{-6mm}
2
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
126 \subsubsection{光源処理のSIMD化}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
127 光源処理の演算をSIMD演算で実装した。
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
128 Cell では、SPEに実装されている128ビットレジスタを用いてSIMD
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
129 (Single Instruction Multiple Data)を行うことが 出来る。
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
130 SIMDとは、1つの命令で複数のデータに対して処理を行う演算方式である。
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
131 そのSIMDを用いて、本来4つの光源を計算するため同じ処理を4回行うところを、
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
132 1度の光源処理で4つ分の光源の計算を行うことができた。以下にSIMDを用いない場合の光源ベクトルの算出コードを示す。
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
133
3
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
134 {\small
2
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
135 \begin{verbatim}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
136 light_vector[0] = world_x - light_xyz[i*4];
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
137 light_vector[1] = world_y - light_xyz[i*4+1];
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
138 light_vector[2] = world_z - light_xyz[i*4+2];
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
139 light_vector[3] = light_xyz[i*4+3];
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
140 \end{verbatim}
3
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
141 }
2
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
142
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
143 次に上記のコードをSIMD化したコードを示す。
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
144
3
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
145 {\small
2
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
146 \begin{verbatim}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
147 *vlight_vector = spu_sub(v_world[i],vlight_xyz[i]);
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
148 \end{verbatim}
3
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
149 }
2
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
150
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
151 このように、SIMD演算を用いて、4つの演算命令を1つの演算命令で行うことができる。
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
152
3
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
153 \section{評価とまとめ}
2
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
154 \subsection{実行速度評価}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
155 光源を実装した後と、光源処理をSIMD化した時のFPS(Frame Per Second)を計測した。
3
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
156 計測対象として地球と月のオブジェクトを表示する例題プログラムを、Cell上のPPE1個、SPE6個で実行した。解像度は1920×1080である。
2
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
157 以下にFPSを示す。
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
158
3
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
159
2
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
160 %2 & 7.448494 FPS \\
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
161 %3 & 7.341228 FPS \\
3
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
162
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
163 \vspace{3mm}
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
164 \begin{table}[htb]
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
165 \begin{center}
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
166 \vskip -\lastskip \vskip -20pt
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
167 \caption{SIMD を用いることによる実行速度の比較}
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
168 \hbox to\hsize{\hfil
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
169 \begin{tabular}{c|l|l} \hline \hline
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
170 & SIMDなし(FPS) & SIMDあり (FPS)\\ \hline
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
171 \hline
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
172 %Mac OSX & 7.0 & 8.5\\ \hline
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
173 Cell (光源数 1) & 7.56 & 8.12 \\ \hline
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
174 Cell (光源数 4) & 7.21 & 7.60 \\ \hline
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
175 \end{tabular}\hfil}
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
176 \label{tb:lightspeed}
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
177 \end{center}
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
178 \end{table}
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
179 \vspace{-5mm}
2
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
180
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
181 計測結果より、SIMDを用いた4つ分の光源処理が、SIMDを用いていない処理より約 0.4FPS の速度向上が見られた。
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
182 また、SIMDを用いていない1つ分の光源処理との実行速度差が約 0.04FPS と近いものとなった。
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
183 このことより、SIMD化が有効に働いており、4つの分の光源処理を一度に処理できていると言える。
3
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
184 FPSはCerium全体の実行速度を対象としているため、光源数が1から4になり光源処理の計算が4倍
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
185 なっても、FPSが4分の1になるわけではない。
2
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
186
3
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
187 \vspace{-6mm}
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
188 \subsection{まとめ}
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
189 %Rendering Engine はまだ、高速化の余地がある。今回の光源処理でも見られたように、各タスクでの演算をSIMD化することで高速化が望める。また SceneGraph から Polygon の生成はSPEによって並列実行されていない。Polygon 生成のタスクをSPEで並列実行することでも高速化が望める。
dadfafc34c6e amendment
Yutaka_Kinjyo
parents: 2
diff changeset
190
2
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
191
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
192 \thispagestyle{fancy}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
193 \begin{thebibliography}{9}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
194
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
195 \bibitem{1} 宮國渡 "Implementation of Fine-grain Task Manager for Cell" 平成20年度 学位論文(修士)
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
196
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
197 \bibitem{3} fixstars:
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
198 http://cell.fixstars.com/ps3linux/index.php/メインページ
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
199
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
200 \bibitem{4} OpenCL:
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
201 http://www.khronos.org/opencl/
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
202
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
203 \end{thebibliography}
f9330d7fcfb0 add resume
Yutaka_Kinjyo
parents:
diff changeset
204 \end{document}