# HG changeset patch # User Shinji KONO # Date 1256811106 -32400 # Node ID 1089815390bd2a258272ad7dcfcf27097dce3328 # Parent b4f2c23055574240bab9a1d05400a4bebd8e0e21 fix diff -r b4f2c2305557 -r 1089815390bd finalutf8.pdf Binary file finalutf8.pdf has changed diff -r b4f2c2305557 -r 1089815390bd finalutf8.tex --- a/finalutf8.tex Thu Oct 29 18:30:47 2009 +0900 +++ b/finalutf8.tex Thu Oct 29 19:11:46 2009 +0900 @@ -3,7 +3,7 @@ \usepackage{fancyhdr} \pagestyle{fancy} -\lhead{\parpic{\includegraphics[height=1zw,clip,keepaspectratio]{pic/emblem-bitmap.eps}}琉球大学主催 工学部情報工学科 卒業研究発表会} +\lhead{\includegraphics[height=1zw,clip,keepaspectratio]{pic/emblem-bitmap.eps}琉球大学主催 工学部情報工学科 卒業研究発表会} \rhead{} \cfoot{} @@ -24,17 +24,23 @@ \maketitle \thispagestyle{fancy} -\section{概要} -近年、CPUの消費電力増加や、クロック周波数対効果の停滞により、 CPUコア数は増加傾向にある。コア数の増加にともない処理速度の向上が見込める。 -しかし、 CPUのコア数が増加すると、コア数に見合った並列プログラミングを行う必要がある。 +\section{Cell上のソフトウェアレンダリング} -並列プログラミングを行う際、Amdahl則より、並列化を意識してプログラミングしなければならない。しかし、並列化を問題毎に毎回考えるのは手間がかかる。そこで並列プログラミングを裏でサポートしてくれるソフトウェアを開発する。 +我々は、8SPU+2PPUのヘテロCPU構成を持つCell / PS3 上での +ソフトウェアレンダリングエンジン +を開発中である。これは、Cerium Task Manager 上に実装され、琉球大学情報工学科の +3年生の実験で使用中である。PS3 のGraphics Engine の仕様は公開されていない +ために、ソフトウェアレンダリングを +実装する必要がある。 -研究では、Cellの並列プログラミングサポートフレームワークを開発する。当研究室で開発したCeriumは現在十分な並列化、実行速度、機能をサポートできていない。Cerium、特にRenderingEngine部分を改良し、信頼できる並列化サポートフレームワークを目指す。 +ソフトウェアレンダリングは、SceneGraph、Polygon、Span、Z buffer の各段階があり、 +それぞれの段階で、並列処理を行なう必要がある。現在は、Span の生成を1 SPU上で行ない、Z buffer を複数のSPU上で処理している。さらに、他の段階でも並列処理を +行なう必要がある。PPUよりもSPUの方が高速なので、1SPU 上で実行するだけでも +意味がある。 \vspace{-5mm} -\section{Cell} -Cellは「ヘテロジニアス・マルチコアプロセッサ構成」を採用し、1基の制御系プロセッサコア (PPE:PowerPc Processor ELement) と8基の演算系プロセッサコア (SPE:Synergistic Processor Element) で構成される。各プロセッサコアは、EIB (Element Interconnect Bus) と呼ばれる高速なバスで接続されている。また、EIBはメインメモリや外部入出力デバイスとも接続されていて、各プロセッサコアはEIBを経由してデータアクセスをおこなう。 +\section{ヘテロジニアス・マルチコアプロセッサCell} +Cellは、1基の制御系プロセッサコア (PPE:PowerPc Processor ELement) と8基の演算系プロセッサコア (SPE:Synergistic Processor Element) で構成される。各プロセッサコアは、EIB (Element Interconnect Bus) と呼ばれる高速なバスで接続されている。また、EIBはメインメモリや外部入出力デバイスとも接続されていて、各プロセッサコアはEIBを経由してデータアクセスをおこなう。 この2種類のCPUをプログラマ自身が用途に合わせて適切に使い分けるように考慮する必要がある。 @@ -63,24 +69,15 @@ TaskManagerは、Taskと呼ばれる、分割された各プログラムを管理する。Taskの単位はサブルーチンまたは関数とし、Task同士の依存関係を考慮しながら実行していく。 現在Ceriumはlinux,macosx上で動作し、コンパイル方法によってCellのspeを使うかどうかを選択できる。 -\vspace{-5mm} -\section{TaskManagerを使った例題} -TaskMangerを使った例題としてWordCountを実装した。inputされたfileをmmapでメモリにマッピングし、そのdataを分割。各SPEに、WordCountのTaskと分割されたdataを渡す。SPEは渡されたdataをwordcountし、指定されたoutput領域に書き込む。全てのwordcountが実行し終えるとその結果をppe側で集計し、結果を出力する。その流れを以下に示す。 - -\vspace{0mm} -\begin{figure}[htbp] - \begin{center} - \includegraphics[scale=0.3]{pic/wc_graf3.eps} - \caption{WordCountのTask生成、実行の流れ} \label{wordcount} - \end{center} -\end{figure} - \section{RenderingEngine} RenderingEngineでは、SceneGraphから、実際に表示するポリゴンの抽出、ポリゴンからSpanの生成、SpanにRGBをマッピングし描画する部分と3つに分ける事ができる。ここでいうSpanとは、ポリゴンに対するある特定のY座標に関するデータを抜き出したものである。 + \subsection{高機能化} + RenderingEngineの高機能化に関して、以下のような案を提案する。 \vspace{-3mm} + \subsubsection{光源} RenderingEngineで、未実装だった光源の計算を実装した。各オブジェクトには自身の座標や親子関係などの情報を持っており、その中に法線がある。法線と光のベクトルとの内積をrgbにかけ算することにより光の計算を行っている。以下に光源の計算をした画像を示す。 @@ -126,6 +123,36 @@ 以上の工程でそれぞれSPEにTaskを渡し、処理を行っているが、Taskは一つにまとめられて一基のSPEで実行されている。この部分のTaskを複数に分割、複数のSPEに割当て並列処理を行うことによって高速化を計る。 +\section{現状とこれからの課題} + +\vspace{-5mm} + +TaskMangerを使った例題としてWordCountを実装した。inputされたfileをmmapでメモリにマッピングし、そのdataを分割。各SPEに、WordCountのTaskと分割されたdataを渡す。SPEは渡されたdataをwordcountし、指定されたoutput領域に書き込む。全てのwordcountが実行し終えるとその結果をppe側で集計し、結果を出力する。 + +..... 光源をCell + +..... SceceGraph -> Polgon + 不要な場合もある + +..... Polygon -> Span + Span は、同じ X, Y 領域でまとめて、次のSPU taskに渡す必要がある。 + +Clipping 完全に隠れたpolygonを早い段階で削除する + +背景の特別扱い + 1 dot ずつ書くのではなく、特別扱いする + zero clear DMA + + +%その流れを以下に示す。 +%\vspace{0mm} +%\begin{figure}[htbp] +% \begin{center} +% \includegraphics[scale=0.3]{pic/wc_graf3.eps} +% \caption{WordCountのTask生成、実行の流れ} \label{wordcount} +% \end{center} +%\end{figure} + \thispagestyle{fancy} \begin{thebibliography}{9}