# HG changeset patch # User akira # Date 1204718631 -32400 # Node ID baeefa4212db10ffcad765df53e8f67bc7002d14 # Parent a9f3e198cb96ef53c3f3fe9e66e7abba4e210547 *** empty log message *** diff -r a9f3e198cb96 -r baeefa4212db bibitem.tex --- a/bibitem.tex Wed Mar 05 19:23:59 2008 +0900 +++ b/bibitem.tex Wed Mar 05 21:03:51 2008 +0900 @@ -8,4 +8,7 @@ \bibitem{bib:SPURS} 井上 敬介 ``「Cellプロセッサ向け実行環境(SPU Centric Execution Model)」''. 先進的計算基盤システムシンポジウム SACSIS, 2006 +\bibitem{bib:siggraph} +John D.Owens, William J.Dally Ujval J.Kapasi, Scott Rixner, Peter Mattson, Ben Mowery ``Polygon Rendering on a stream Architecture''. +Eurographics/SIGGRAPH Workshop 2000 \end{thebibliography} diff -r a9f3e198cb96 -r baeefa4212db develop_process.tex --- a/develop_process.tex Wed Mar 05 19:23:59 2008 +0900 +++ b/develop_process.tex Wed Mar 05 21:03:51 2008 +0900 @@ -16,7 +16,7 @@ データのサイズなどを考慮する必要があり、またタスクの中ではポインターを使 うことができないなど多少の煩わしさがある。実際のコードは次のようになる。 \input{src/task.c} -create\_pp関数は図\ref{fig:Cerium_detail}のSceneGraphの実行コードである。入力は引数のSceneGraphPackで、ポリゴンの頂点が与えられる。また出力は引数のPolygonPackとなる。PolygonPackはポリゴンとなる。 +create\_pp関数は図\ref{fig:Cerium}のSceneGraphの実行コードである。入力は引数のSceneGraphPackで、ポリゴンの頂点が与えられる。また出力は引数のPolygonPackとなる。PolygonPackはポリゴンとなる。 2から3へ移行するのはタスクマネージャのset\_cpuを用いることによって少量の変更で簡単に移行することが可能である。実行コードは次のようになる。 \input{src/spe_task.c} @@ -26,3 +26,4 @@ 業が待っている。しかし、CbCへの変換は今まで書いていたCのプログラムを逐次 的にgotoでcode-segmentを接続すればよい。 \input{src/debug.c} +現在はサブルーチンで書かれている3の段階である。 diff -r a9f3e198cb96 -r baeefa4212db fig/tukwila.bb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fig/tukwila.bb Wed Mar 05 21:03:51 2008 +0900 @@ -0,0 +1,5 @@ +%%Title: ./tukwila.pdf +%%Creator: ebb Version 0.5.2 +%%BoundingBox: 0 0 479 484 +%%CreationDate: Wed Mar 5 20:28:14 2008 + diff -r a9f3e198cb96 -r baeefa4212db fig/tukwila.graffle Binary file fig/tukwila.graffle has changed diff -r a9f3e198cb96 -r baeefa4212db fig/tukwila.pdf Binary file fig/tukwila.pdf has changed diff -r a9f3e198cb96 -r baeefa4212db finally.tex --- a/finally.tex Wed Mar 05 19:23:59 2008 +0900 +++ b/finally.tex Wed Mar 05 21:03:51 2008 +0900 @@ -1,7 +1,13 @@ \section{まとめ} -本研究ではCから継続を基本とした言語CbCを使ってCellのようなマルチコアでの変換手法 -について述べた。CbCは状態遷移を用いた記述になるので依存関係がはっきりし -ており、code-segment単位をタスクと考えることができる。 +本研究ではCから継続を基本とした言語CbCを使ってCellのようなマルチコアでの +変換手法について述べた。今回、我々は例題としてソフトウェアレンダリングエ +ンジンCeriumを用いた。 +まずシーケンシャルなアルゴリズムでCeriumを記述した。SPUを考慮したデータ +構造を持つシーケンシャルな開発、SPUを使った開発、CbCを用いた開発という順 +に開発を行った。こういう開発段階を踏むことでバグの要因が見つけやすくなり、 +SPUで実行されるタスクの依存関係を早い段階から明確にすることができる。 +CbCは状態遷移を用いた記述になるので依存関係がはっきりしており、 +code-segment一つ一つをタスクと考えることができる。 そのためシーケンシャルなアルゴリズムから並列計算に移行することが他 の言語と比較して容易にできる。 diff -r a9f3e198cb96 -r baeefa4212db multicore.tex --- a/multicore.tex Wed Mar 05 19:23:59 2008 +0900 +++ b/multicore.tex Wed Mar 05 21:03:51 2008 +0900 @@ -1,30 +1,23 @@ \section{マルチコアシステム} 一概にマルチコアアーキテクチャといっても様々なマルチコアアーキテクチャが -存在する。簡単に分別するとホモジニアスマルチコア(図\ref{fig:homo})とヘテロジニアスマルチコ -ア(図\ref{fig:hetero})がある。 -\begin{figure}[htb] -\begin{center} -\includegraphics[scale=.5]{./fig/homogeneous.pdf} -\end{center} -\caption{ホモジニアスマルチコア} -\label{fig:homo} -\end{figure} +存在する。 +%簡単に分別するとホモジニアスマルチコア(図\ref{fig:homo})とヘテロジニアスマルチコア(図\ref{fig:hetero})がある。 +Tukwila(図\ref{fig:tukwila})は今現在Intelが開発している次世代CPUである。 \begin{figure}[htb] \begin{center} -\includegraphics[scale=.5]{./fig/heterogeneous.pdf} +\includegraphics[scale=.5]{./fig/tukwila.pdf} \end{center} -\caption{ヘテロジニアスマルチコア} -\label{fig:hetero} +\caption{Tukwila} +\label{fig:tukwila} \end{figure} -ホモジニアスマルチコアはすべてのコアが同じコアで構成され、プログラマ側は -CPUコアや命令セットの違いを意識する必要がないが、汎用的なコアですべての -処理をこなすため、処理効率が悪いという特徴がある。それに対してヘテロジニ -アスマルチコアは二種類の構造があり、単一命令セットで構成されたマルチコア -と異種命令セットで構成されたマルチコアが存在する。単一命令セットで構成さ -れたマルチコアはCPUコアをタスクにあわせて最適化することで、効率の高いCPU -を作ることができる。しかし、異種命令セットのヘテロジニアスマルチコアはそ -れだけではなく、命令セットアーキテクチャレベルからタスクを最適化する必要 -がある。 +クアットコアデザインを採用し、クロック周波数は最大2Ghzで、統合メモリコン +トローラ付きのQuickPath InterConnectシステムアーキテクチャになっている。 +フルインターフェースのQPIがCPU間の接続に、ハーフ幅のQPIをI/Oチップなどと +の接続に使われ、それぞれのQPIが4.8Gtpsで1リンクのピーク帯域は19.2GB/sec +で、4+2リンクで96GB/secの帯域となる。 -必然的にシングルコアでは限られていたアルゴリズムがマルチコアの種類や並列 -化を考慮しアルゴリズムを考え直さなければいけない。 \ No newline at end of file +またSunのUltra Sparc T2は8coreを採用しており、1coreあたり8スレッドを実行 +することが可能で、最大64スレッド実行可能となっている。 + +我々が今回使用したCellはそれぞれのコアに対してメモリを持ち、データのやり +取りはDMAで行うということが特徴である。 \ No newline at end of file diff -r a9f3e198cb96 -r baeefa4212db src/spe_task.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/spe_task.c Wed Mar 05 21:03:51 2008 +0900 @@ -0,0 +1,6 @@ +\begin{verbatim} +int run(void *rbuf, void *wbuf) { + ........ + return sizeof(PolygonPack); +} +\end{verbatim} diff -r a9f3e198cb96 -r baeefa4212db src/task.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/task.c Wed Mar 05 21:03:51 2008 +0900 @@ -0,0 +1,6 @@ +\begin{verbatim} +int create_pp(ScenGraphPack *sgp,PolygonPack *pp) { + ...... + return sizeof(PolygonPack); +} +\end{verbatim}