Mercurial > hg > Papers > 2010 > jsst-yutaka
comparison resume/jssst.tex @ 10:e5f74d4de3ad
add file
author | Yutaka_Kinjyo |
---|---|
date | Wed, 08 Sep 2010 01:05:10 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
9:b781dc4132f8 | 10:e5f74d4de3ad |
---|---|
1 % Sample file for the use of compsoft style file. | |
2 % | |
3 \documentclass[T]{compsoft} | |
4 | |
5 % Preamble | |
6 % | |
7 % 「コンピュータソフトウェア」誌に掲載される論文の場合,次で | |
8 % 巻数,号数,開始ページ,終了ページを指定する. | |
9 %\volNoPp{16}{5}{78}{83} | |
10 | |
11 % ワークショップによる推薦論文の場合,ワークショップ名を指定する. | |
12 % \suisen{ワークショップ名} | |
13 | |
14 % 特集の場合,特集のタイトルを与える. | |
15 % \tokushu{特集のタイトル} | |
16 | |
17 % 大会論文の場合,\taikai で開催年を指定する.ここで指定した年から | |
18 % 大会の回数は計算される. | |
19 \taikai{2010} | |
20 | |
21 % ここに,使用するパッケージを列挙する. | |
22 \usepackage[dvipdfm]{graphics} | |
23 | |
24 % ユーザが定義したマクロなどはここに置く.ただし学会誌のスタイルの | |
25 % 再定義は原則として避けること. | |
26 | |
27 \begin{document} | |
28 | |
29 % 論文のタイトル | |
30 \title{Fine Grain Task Manager Cerium のチューニング} | |
31 | |
32 % 著者 | |
33 % 和文論文の場合,姓と名の間には半角スペースを入れ, | |
34 % 複数の著者の間は全角スペースで区切る | |
35 % | |
36 \author{金城 裕 \and 河野 真治 | |
37 % | |
38 % ここにタイトル英訳 (英文の場合は和訳) を書く. | |
39 % | |
40 \ejtitle{Tuning of Fine Grain Task Manager Cerium} | |
41 % | |
42 % ここに著者英文表記 (英文の場合は和文表記) および | |
43 % 所属 (和文および英文) を書く. | |
44 % 複数著者の所属はまとめてよい. | |
45 % | |
46 \shozoku{Yutaka Kinjyo, Shinij KONO}{琉球大学大学院理工学研究科情報工学専攻並列信頼研}% | |
47 {Dept.Concurrency Reliance Laboratory, Information Engineering Course, Faculty of Engineering Graduate School of Engineering and Science, University of the Ryukyus} | |
48 % | |
49 % 出典情報は \shutten とすれば出力される. | |
50 %\shutten | |
51 % | |
52 % 受付年月日,記事カテゴリなどは自動的に生成される. | |
53 %\uketsuke{1999}{8}{3} | |
54 % | |
55 % その他,脚注に入れるものがあれば,\note に記述する. | |
56 %\note{脚注に入れる内容} | |
57 } | |
58 | |
59 % | |
60 % 和文アブストラクト | |
61 \Jabstract{% | |
62 現在Cell/PS3またはMac OS X上で動作するFine Grain Task Manager であるCeirumを開発中である。 | |
63 Cerium Task Managerは、Cell/PS3またはMac OS X上で動作するOpen CL 的なFine Grain Task Manager である。 | |
64 ソフトウェアレンダリングエンジンとWord countを例題として、Task Manager の実装時の問題を洗い出している。 | |
65 メインメモリ上のTaskを各Coreが受け取る際や、その終了を通知する際に待ち時間が生じる。 | |
66 その待ち時間を削減するために、Task arrayを提案し実装した。その効果について報告する。 | |
67 } | |
68 % | |
69 % 英文アブストラクト(大会論文には必要なし) | |
70 % \Eabstract{} | |
71 % | |
72 \maketitle | |
73 | |
74 \section{概要} | |
75 | |
76 CPUの処理速度の向上ためのクロック周波数の増加は、 | |
77 発熱や消費電力の増大により難しくなっている。そのため、クロック周波数を上げる代わりに、CPUコア数を増やす傾向になった。 | |
78 マルチコアなCPUの性能を発揮するには、処理をできるだけ並列化しなければならない。それはアムダールの法則により、並列化できない部分が並列化による性能向上を制限することから言える。つまり処理速度の性能向上は、ハードウェアだけでなく、ソフトウェアを並列処理に適したように実装することにもかかっている。そのためにはプログラミングの支援をするフレームワークが必要になってくる。そこでFine Grain Task Manager であるCeirumを開発中である。現在Ceriumは、マルチコアCPUの例題としてCellに対応している。また、支援するプログラミングの対象の1つとしてゲームを選択し、PS3,Mac OS X上でのゲームフレームワークとしても動作する。 | |
79 そのCerium のチューニングをするうちに、各Coreにおいて、割り当てられたTaskが終わり、次のTaskを待つ時間が処理速度を遅くしていることがわかった。そこで待ち時間を削減するために、各Task生成方法、スケジュールリング方法の変更、複数のTaskをまとめて扱うTaskArrayを提案し実装した。その効果について報告する。 | |
80 | |
81 | |
82 \section{Cell Broadband Engine} | |
83 | |
84 Cell Broadband Engine は、ソニー・コンピュータエンタテインメント、ソニー、IBM, 東芝によって開発されたマルチコアCPUである。 | |
85 Cellは、1基の制御系プロセッサコア (PPE:PowerPc Processor ELement) と8基の演算系プロセッサコア (SPE:Synergistic Processor Element) で構成される。各プロセッサコアは、EIB (Element Interconnect Bus) と呼ばれる高速なバスで接続されている。また、EIBはメインメモリや外部入出力デバイスとも接続されていて、各プロセッサコアはEIBを経由してデータアクセスをおこなう。 | |
86 | |
87 このPPEとSPEの2種類のCPUを、プログラマ自身が用途に合わせて適切に使い分けるように考慮する必要がある。 | |
88 | |
89 \begin{figure}[htbp] | |
90 \begin{center} | |
91 \scalebox{0.3}{\includegraphics{pic/cell_arch.pdf}} | |
92 \caption{Cell Broadband Engine Architecture} \label{cell} | |
93 \end{center} | |
94 \end{figure} | |
95 | |
96 \subsection{PPE} | |
97 PPEはCell BroadbandEngineのメインプロセッサで、複数のSPEをコアプロセッ | |
98 サとして使用することができる汎用プロセッサである。メインメモリや外部デバイスへ | |
99 の入出力、SPEを制御する役割を担っている。PPU(PowerPCProcessorUnit)は、PPE | |
100 の演算処理を行うユニットで、PowerPCアーキテクチャをベースとした命令セットを持 | |
101 つ。 | |
102 | |
103 \subsection{SPE} | |
104 SPEには256KBのLocal Store(LS)と呼ばれる、SPEから唯一、直接参照できるメ | |
105 モリ領域があり、バスに負担をかける事無く並列に計算を進めることが出来る。SPEか | |
106 らメインメモリへは、直接アクセスすることは出来ず、SPEを構成する一つであるMFC | |
107 (MemoryFlowController)へ、チャネルを介してDMA(DirectMemoryAccess)命令を | |
108 送ることで行われる | |
109 | |
110 \subsection{DMA} | |
111 SPEはLS以外のメモリに直接アクセスすることができず、PPE | |
112 が利用するメインメモリ上のデータにアクセスするにはDMAを用いる。DMA(Direct | |
113 MemoryAccess)転送とは、CPUを介さずに周辺装置とメモリとの間でデータ転送こと | |
114 で、Cell の場合はメインメモリとLS間でデータの転送を行う。手順としては以下の様に | |
115 なる。 | |
116 | |
117 {\small | |
118 \begin{enumerate} | |
119 \item SPEプログラムがMFC(MemoryFlowController)に対してDMA転送命令を発行 | |
120 \item MFCがDMAControllerを介してDMA転送を開始。この間、SPEプログラムは | |
121 停止しない。 | |
122 \item DMA転送の終了を待つ場合、SPEプログラム内で転送の完了を待つ | |
123 \end{enumerate} | |
124 } | |
125 | |
126 \subsection{Mailbox} \label{sec:cell_mailbox} | |
127 | |
128 Mailbox とは PPE と SPE 間の 32 ビット | |
129 メッセージの交換に用いられる。Mailbox では 3 つの振る舞いが | |
130 出来る様に設計されている。 | |
131 | |
132 \begin{enumerate} | |
133 \item SPU Inbound Mailbox \\ | |
134 PPE から SPE へデータを渡すためのキュー。キューのエントリ数は | |
135 実装依存による が、研究環境では最大4個までのデータを蓄積できる。 | |
136 このキューが空の場合は、SPE は、データがメールボックスに書き込まれるまでは、 | |
137 命令でストールする。読み出すデータの順番は書き込んだ順番に保証されている。 | |
138 \item SPU Outbound Mailbox \\ | |
139 SPE から PPE へのデータを渡すためのキュー。研究環境では最大1個までしか | |
140 データが蓄積できない。 | |
141 \item SPU Outbound interrupt Mailbox \\ | |
142 SPU Outbound Mailbox とほとんど同じだが、このキューでは SPE から | |
143 キューにデータが書き込まれると、PPE に対して割り込みイベントが | |
144 発生し、データの読み出しタイミングを通知する事が出来る。 | |
145 \end{enumerate} | |
146 | |
147 | |
148 \section{Ceriumとは} | |
149 | |
150 CeriumはTaskManager、レンダリングエンジンとSceneGrpahの3つの要素から構成されており、 | |
151 PS3、Mac OS X、Linux上でゲームフレームワークとして動作する。ゲーム中のオブジャクトの振る舞いやルールはSceneGraphで管理し、それらの動きやレンダリングの処理を動的にSPEに割り振るカーネルとして、TaskMnagerが用いられる。PS3のGraphics Engineの仕様は公開されておらず、ソフトウェアレンダリングエンジンを実装する必要があった。 | |
152 | |
153 %% \begin{itemize} | |
154 %% \item SceneGraph | |
155 %% \item Rendering Engine | |
156 %% \item Task Manager | |
157 %% \end{itemize} | |
158 | |
159 \subsection{TaskManager} | |
160 TaskManagerは、Taskと呼ばれる、分割された各プログラムを管理する。 | |
161 Taskの単位はサブルーチンまたは関数とし、Task同士の依存関係を考慮し、実行可能状態になったTaskを各SPEに割り振る。 | |
162 Taskは通常PPEで生成され、SPEに送られる。SPEでは、受け取ったTaskをパイプラインに沿ってステージを遷移しながら複数のTaskを同時に実行していく。 | |
163 | |
164 \section{CeriumにおけるTask} | |
165 | |
166 TaskはTaskManagerを使って生成する。 | |
167 Taskを生成する際に以下のような要素が設定可能である。 | |
168 | |
169 {\small | |
170 \begin{enumerate} | |
171 \item input data | |
172 \item output data | |
173 \item paramater | |
174 \item cpu type | |
175 \item dependency | |
176 \end{enumerate} | |
177 } | |
178 | |
179 input,output data, paramaterは関数でいうところの引数にあたいする。cpu typeはTaskがPPE,または6基あるSPEのどれかで実行されるかを示すもの。 | |
180 dependencyは他のTaskとの依存関係を示す。依存関係の情報はPPE側が持っている。SPEからPPEへ実行し終わったTaskが通知され、PPE側ではその通知に沿って | |
181 依存関係を処理していく。例えば、Task A が Task B の実行完了をまって、実行可能状態になるとする。はじめTask B はどのTaskも待つ必要がないので、 | |
182 SPEに送られ、実行される。Task Bの実行が完了すると、SPEからTask B の完了通知がMailでPPE側へ通知される。Task Bが実行完了の通知がきたので、Task Aの待ちTask | |
183 から、Task BがはずされTask AはSPEに送られる。以上のようにSPEからのMailを使った通知によって、Taskの依存関係を解決している。 | |
184 待ちTaskを持っているTaskはwait queueと呼ばれるキューに、待ちTaskのないTaskはactive queueと呼ばれるキューに入れられる。active queueにあるTaskをSPEに送る。() | |
185 | |
186 \begin{figure}[htbp] | |
187 \begin{center} | |
188 \scalebox{0.4}{\includegraphics{pic/dependency.pdf}} | |
189 \caption{依存関係の解決} \label{fig:dependency} | |
190 \end{center} | |
191 \end{figure} | |
192 | |
193 \subsection{Taskのスケジューリング} | |
194 SPEは、Taskを一つずつ受け取るのではなく、ある程度まとめて受け取る。それをTaskListと呼んでいる。TaskListに沿ってTaskを実行していき、Task毎に実行完了のMailを | |
195 送る。TaskListのTaskを全て実行すると、次のTaskListを要求するMailをPPE側に送る。 | |
196 | |
197 \section{TaskArray} | |
198 WordCountの場合, 対象となるファイルによって大量のTaskが生成される。レンダリングエンジンの場合、PPE側で実行すべきTaskがある。その時に、PPEが自分のTaskを完了し、Taskの依存関係を解決するのに時間がかかってしまう。そうなるとSPEからのTaskList要求への反応が送れ、SPEの待ち時間が生じるはずである。それを解決するためにTaskArrayを提案、実装した。TaskArrayは、複数のTaskをまとめて扱うことができる。それによって依存関係を解決すべきTaskの数が減り、解決の手間が省け、SPEからのTaskList要求に応答しやすくなる。また、一度にTaskListに多くのTaskを登録できるため、SPE側からのTaskList要求の回数が減り、待ち時間が生じる可能性が減る。さらにTaskArrayの長さによっては、パイプラインが長くなり、DMAの転送時間を多く隠すことができる。WordCountとレンダリングエンジンのおいて、TaskをTaskArrayにし、効果を検証した。 | |
199 | |
200 \subsection{WordCountのTask} | |
201 | |
202 まずは例題のWordCountのTaskについて説明する。 | |
203 WordCountのTaskは以下の二つである。 | |
204 | |
205 {\small | |
206 \begin{enumerate} | |
207 \item WordCountTask | |
208 \item PrintTask | |
209 \end{enumerate} | |
210 } | |
211 | |
212 WordCountTaskは、inputで与えられたdataをword countし、output dataに書き出すTaskである。 | |
213 PrintTaskはすべてのWordCountTaskの実行完了を待ち、outputへ書き出された値を集計し出力するTaskである。 | |
214 一度にSPEに渡せるデータ容量はDMAの仕様上16Kbyteまでである。さらに転送する際には16の倍数byteである必要がある。 | |
215 | |
216 \subsection{WordCountのTask設定} | |
217 | |
218 wcするfileをメモリへマッピングし、WordCountTask | |
219 のinputに、file dataのアドレスを16kbyteごとに指定していく。 | |
220 | |
221 \begin{figure}[htbp] | |
222 \begin{center} | |
223 \scalebox{0.3}{\includegraphics{pic/wc_graf1.png}} | |
224 \caption{WordCountにおけるTaskの流れ} \label{wordcoutntask1} | |
225 \end{center} | |
226 \end{figure} | |
227 | |
228 PrintTaskはWordCountTaskを待ちTaskと設定し、WordCountがすべて終わらないと、 | |
229 実行されない。 | |
230 | |
231 \subsection{WordCountTaskのTaskArray化} | |
232 WordCountTaskをTaskArray化した。TaskArray1つに、64個のTaskが入るようにし、WordCount対象は166Mのテキストファイルとした。TaskArrayを適応した場合と、そうで | |
233 ない場合で比較する。 | |
234 SPEは6個使用した。timeは実行にかかった時間、dma waitは、SPEが起動していた時間においての、dma転送の待ち時間の割合。 | |
235 mail wait はSPEが起動していた時間においての、次のTaskListのmailを待っている時間の割合である。以下に、表にして示す。dma,mailそれぞれのwait割合に関してはspe6個の平均を示しており、この時のTaskの数は約一万個である。 | |
236 | |
237 \vspace{5mm} | |
238 \begin{table}[htb] | |
239 \begin{center} | |
240 \vskip -\lastskip \vskip -20pt | |
241 \caption{WordCountTaskのTaskArray化による比較} | |
242 \hbox to\hsize{\hfil | |
243 \begin{tabular}{c|l|l|l} \hline \hline | |
244 & Task & TaskArray\\ \hline | |
245 \hline | |
246 %Mac OSX & 7.0 & 8.5\\ \hline | |
247 time & 2.184s & 2.109s \\ \hline | |
248 %dma wait & 28685142 & 21266467 \\ \hline | |
249 %mail wait & 9302079 & 12025955 \\ \hline | |
250 dma wait & 18\% & 12\% \\ \hline | |
251 mail wait & 5\% & 8\% \\ \hline | |
252 \end{tabular}\hfil} | |
253 \label{tb:lightspeed} | |
254 \end{center} | |
255 \end{table} | |
256 \vspace{-5mm} | |
257 | |
258 表に示した結果より、著しいTaskArrayの効果は見られなかった。この結果はWordCountにおいては誤差の範囲内である。効果が見られなかった原因はおそらくWordCountの場合はPPE側のTaskがないので、依存関係の解決にあまり待ち時間が発生しないからだと考えられる。また、WordCountにおいてはファイルをメモリにマッピングするので、ファイルの容量が大きい場合に大量にメモリを消費してしまう。その結果スワップが起きやすくなり、dma転送の待ち時間が長くなっている可能性がある。この解決として、一度にファイル全てをマッピングするのではなく、何回かに切り分けてマッピンするのがよい。ある程度のWordCountし終わった領域に、次のWordCount領域を入れ替えて使うことでメモリを節約でき、スワップを減らすことができるはずである。その結果メモリアクセスが高速になり、dma転送の待ち時間も削減できる。 | |
259 | |
260 \subsection{レンダリングのTask} | |
261 | |
262 レンダリングエンジンは主に、CreatePolygon、CreateSpan、DrawSpanという3つのTaskから構成されている。 | |
263 それぞれのTaskの動作とレンダリングの流れを示す。 | |
264 | |
265 {\small | |
266 \begin{enumerate} | |
267 \item CreatePolygonTaskによってSceneGraphをもとにモデリングデータから、実際に表示するポリゴンを生成する。 | |
268 \item CreateSpanTaskで生成したポリゴンからSpanの生成する。 | |
269 \item DrawSpanTaskでSpanをRGBにマッピングし描画する。 | |
270 ここでいうSpanとは、ポリゴンに対するある特定のY座標に関するデータを抜き出したものである。 | |
271 \end{enumerate} | |
272 } | |
273 | |
274 \begin{figure}[htbp] | |
275 \begin{center} | |
276 \scalebox{0.3}{\includegraphics{pic/rendering3.pdf}} | |
277 \caption{レンダリングエンジンの流れ} \label{rendering} | |
278 \end{center} | |
279 \end{figure} | |
280 | |
281 | |
282 \subsection{レンダリングエンジンのTaskArray化} | |
283 | |
284 レンダリングエンジンの中で、もっとも数が多く生成されるDrawSpanTaskをTaskArray化した。 | |
285 地球と月を表示する例題を対象に効果を検証した。FPS(Frame Per Second)は、一秒間に表示できる | |
286 Frame数のことである。 | |
287 | |
288 \begin{figure}[htbp] | |
289 \begin{center} | |
290 \scalebox{0.5}{\includegraphics{pic/lightearth.pdf}} | |
291 \caption{地球と月を表示する例題} \label{rendering} | |
292 \end{center} | |
293 \end{figure} | |
294 | |
295 | |
296 \vspace{5mm} | |
297 \begin{table}[htb] | |
298 \begin{center} | |
299 \vskip -\lastskip \vskip -20pt | |
300 \caption{レンダリングTaskのTaskArray化による比較} | |
301 \hbox to\hsize{\hfil | |
302 \begin{tabular}{c|l|l|l} \hline \hline | |
303 & Task & TaskArray\\ \hline | |
304 \hline | |
305 %Mac OSX & 7.0 & 8.5\\ \hline | |
306 FPS & 3.94 & 4.32 \\ \hline | |
307 %dma wait & 28685142 & 21266467 \\ \hline | |
308 %mail wait & 9302079 & 12025955 \\ \hline | |
309 dma wait & 0.06\% & 0.07\% \\ \hline | |
310 mail wait & 55\% & 42\% \\ \hline | |
311 \end{tabular}\hfil} | |
312 \label{tb:lightspeed} | |
313 \end{center} | |
314 \end{table} | |
315 \vspace{-5mm} | |
316 | |
317 結果からDrawSpanTaskをTaskArray化すると、FPSが多くなり、mailのwait時間が減ったことがわかる。レンダリングエンジンでは、PPE側でも | |
318 処理すべきTaskがあり、常にPPEが忙しい状態になっている。そのためmailを処理する時間が送れSPEのmail待ちが発生していると考えられる。 | |
319 TaskArray化でTaskをまとめることでSPEが1つのTaskListで多くのTaskを実行できるようになったため、TaskListを要求する回数が減って、待ち時間が発生する | |
320 回数も減少した。またそれはSPEからのmailの数が減ったということなので、PPE側のmail処理の時間短縮になったと考えられる。 | |
321 | |
322 | |
323 \section{まとめ} | |
324 今回はTaskを複数にまとめるTaskArrayを提案、実装し効果を測った。 | |
325 TaskArrayの効果があるのは、PPE側にも実行すべきTaskがありPPEが忙しい場合ということがわかった。WordCountでは、PPE側のTask | |
326 がなく、mail待ちがネックではなく、TaskArrayの効果がなかった。大量のファイルをマッピングし、メモリを多く消費するのでメモリアクセス、 | |
327 dma転送に待ち時間があると考えられ、TaskArrayを用いてもうまくdma転送が隠れてないようだ。dma転送をスケジュールリングによって | |
328 うまく隠す、またはメモリ領域の節約をすることができれば、今回のWordCountのような大量のデータを用いる場合の速度向上が期待できる。 | |
329 | |
330 \subsection{メインメモリアクセス} | |
331 WordCountを実装している際に極端に処理速度が遅くなる時があった。 | |
332 それは複数のSPEが同時にメインメモリにアクセスする際に、それぞれ離れたメモリにアクセスする時である。Taskにはそれぞれアクセスすべき | |
333 メインメモリのアドレスを持っており、そのTaskがうまくSPEに割り振られてなかったため、そのようなことがおこった。TaskをSPEに割り振る際には | |
334 なるべく複数のSPEが近くのメモリをアクセスするようにした方がよい。また一定周期でSPEを同期させ、特定のSPEのTask実行が遅くなりすぎたり、速くなり | |
335 すぎたりするのを防ぐことでも、メモリアクセス先が離れることを回避できる。 | |
336 | |
337 | |
338 | |
339 %{\bf 謝辞}\ | |
340 % | |
341 \begin{adjustvboxheight} % needed only when Appendix follows | |
342 \begin{thebibliography}{99} | |
343 \bibitem{} 宮國渡 "Implementation of Fine-grain Task Manager for Cell" 平成20年度 学位論文(修士) | |
344 \bibitem{} fixstars:http://cell.fixstars.com/ps3linux/index.php/メインページ | |
345 \bibitem{} 高山 征大「CELL REGZA」が搭載する並列化技術「Molatomium」 | |
346 \bibitem{} OpenCL:http://www.khronos.org/opencl/ | |
347 \bibitem{} Mark Deloura "Game Programming Gems" | |
348 | |
349 %% \bibitem{ST85} Sleator, D. D. and Tarjan, R. E.:Self-Adjusting Binary Search | |
350 %% Trees, {\it J. ACM}, Vol.~32, No.~3 (1985), pp.~652--686. | |
351 | |
352 %% \bibitem{S89} Shapiro E.:The Family of Concurrent Logic Programming Languages. | |
353 %% {\it ACM Computing Surveys}, Vol.~21, No.~3 (1989), pp.~413--510. | |
354 | |
355 %% \bibitem{T85} Tarjan, R. E.:Amortized Computational Complexity, {\it | |
356 %% SIAM J.\ Alg.\ Disc.\ Math.}, Vol.~6, No.~2 (1985), pp.~306--318. | |
357 | |
358 %% \bibitem{W90} 和田久美子:スプレイ木の並列データ探索, Proc.\ KL1 | |
359 %% Programming Workshop '90, Tokyo, ICOT, 1990, pp.~42--49. | |
360 \end{thebibliography} | |
361 \end{adjustvboxheight} % needed only when Appendix follows | |
362 | |
363 \appendix | |
364 %\section{付録: \LaTeX による論文作成のガイド} | |
365 | |
366 %ここに,以前の \verb|sample.tex| では,論文作成のガイドがあったが, | |
367 %その内容は \verb|guide.tex| に移動した. | |
368 | |
369 \end{document} |