# HG changeset patch # User Yutaka_Kinjyo # Date 1328788499 -32400 # Node ID 3c0f43537ca6bd3d206022bdfe3c212352b33227 # Parent 883d5e524f4b2194a014ab20eb9254b858c99609 fix diff -r 883d5e524f4b -r 3c0f43537ca6 paper/conclusion.tex --- a/paper/conclusion.tex Thu Feb 09 18:04:38 2012 +0900 +++ b/paper/conclusion.tex Thu Feb 09 20:54:59 2012 +0900 @@ -5,6 +5,9 @@ また、Task 内でのアーキテクチャ依存の記述を MemorySegment によって、避けることに成功した。また MemorySegment を用いることでメモリ管理を抽象化することができる。その他の先行研究の改良として、Task のパイプライン化、Texutre のキャッシュなどがある。これらの改良によっても、FPS の向上や、DMA 転送の待ち時間が改善された。Cerium の改良を重ね、結果として約17 FPS の向上に成功した。また Mail の待ち時間は約18\%削減できた。 \section{今後の課題} + +\subsection{Task 化 による並列化率の向上} + 各コアの稼働率の向上のためには、さらに Mail の待ち時間を削減する必要がある。Mail の通信の待ち時間は内訳は \begin{description} @@ -13,21 +16,27 @@ \end{description} の二つの要素がある。PPE の対応が遅れる場合には PPE側に処理するべきプログラムがあり、Mail の対応が遅れる原因がある。 -そのため 制御用の PPE は処理するべきプログラムは排除し、Mail 通知の対応や、Task の割り振りを専門に PPE が行うことによって、SPE の稼働率向上を果たせると考える。また バリア同期を行うと 割り振られた処理によっては 他の SPE よりも早く処理が終了し、他の SPE を待つ時間が生じる場合がある。 +そのため 制御用の PPE は処理するべきプログラムは排除し、Mail 通知の対応や、Task の割り振りを専門に PPE が行うことによって、SPE の稼働率向上を果たせると考える。 -\subsection{Task 化 による並列化率の向上} PPE での Task 管理以外の処理を排除するため、具体的には、プログラムの Task化 を行い Task の部分を SPE で処理する方法がある。現在 RenderingEngien 部分のほとんどが Task 化されているが、ScenenGraph 部分は Task 化されていない。今後の課題として SceneGraph 部分の Task 化が必要である。 -\subsubsection{SPE の LS の利用方法} -現在は定義された Task は SPE の LS へ一括ロードされ、保持されている。処理の Task 化が進むにつれて、LS を占有し、 +\subsubsection{Task 化の問題点} +処理をTask 化していく上で、Task の構成が複雑化してきている。それは、TaskArray などの導入によるものである。Task を構成するには以下の注意点がある +\begin{itemize} +\item Task が扱う I/O データの分割と、16アラインメントに合わせた、適切なデータ構造の構成する。 +\item データはランダムアクセスしてはいけない。 +\item Task の同期のための、Task を生成する必要がある。 +\item 扱う Data を考慮した 適切な Task の依存関係の設定がある。 +\item Task が仕様通りに動作するか、テストを行う必要がある。 +\end{itemize} +など、Task の構成には幾つかの注意点があり、これらを守らなければ仕様通りの性能はでない。より簡潔にプログラミングを行えるように、Task と Task が扱うデータに対して、新たなデータ構造が必要だと考える。 - -\subsubsection{Taskの粒度} -バリア同期の際に 他の SPE を待つ時間を削減するために、Task はなるべく粒度を細かく設定することで解決できると考える。 +\subsection{Taskの粒度} +バリア同期の際に 処理が早く終わった SPE が他の SPE を待つ時間を削減するために、Task はなるべく粒度を細かく設定することで解決できると考える。 粒度を細かくすることは、各 SPE への均等な Task の分散のために必要であり、並列化部分の特定にも繋がる。 \subsection{自動的な依存関係の解決} - +Task 同士の依存関係の設定は、ユーザが、TaskManager の API を用いて行なっている。依存関係を設定するのは、処理するデータの整合性を保つためである。つまり、依存関係は Task が扱うデータと紐付けることができる。Task に設定されたデータを元に、Task の同士の依存関係関係を自動で解決することができると考える。 -\subsection{DataSegment} -\subsection{CodeSegment} +\subsection{SPE の LS の利用方法} +現在は定義された Task は SPE の LS へ一括ロードされ、保持されている。それによって処理の Task が増えるにつれて、LS を占有してしまう問題がある。特に SPE の LS は 256KB と一般的な CPU のメモリ容量に比べると小さく、同じようにプログラミングはできない。LS の容量を常に考慮したプログラミングが必要である。また Task だけではなく、扱うデータやSPEに常駐するカーネルプログラムもすべてメモリを消費するものなので、それらを扱う包括的なデータ構造が必要である。 diff -r 883d5e524f4b -r 3c0f43537ca6 paper/master_paper.bib --- a/paper/master_paper.bib Thu Feb 09 18:04:38 2012 +0900 +++ b/paper/master_paper.bib Thu Feb 09 20:54:59 2012 +0900 @@ -104,3 +104,12 @@ annote={Greatly extends the computations of \cite{PSW80} useful for \href{http://primes.utm.edu/prove/prove2_3.html}{testing small numbers}.} } + +@article{, + author = "金城 裕 and 河野 真治", + title = "Cerium におけるDataSegment APIの設計", + journal = "日本ソフトウェア科学会第 28 会大会", + month = "Sep", + year = 2011 + +} diff -r 883d5e524f4b -r 3c0f43537ca6 paper/master_paper.pdf Binary file paper/master_paper.pdf has changed