Mercurial > hg > Papers > 2008 > gongo-ess
changeset 5:6458878b4526
*** empty log message ***
author | gongo |
---|---|
date | Mon, 14 Jul 2008 20:09:16 +0900 |
parents | 9cd21bb81105 |
children | 30b41d745225 |
files | cell.tex figure/scheduler.bb figure/scheduler.graffle figure/scheduler.pdf figure/spurs-pipeline.bb figure/spurs-pipeline.graffle figure/spurs-pipeline.pdf introduction.tex manycore.tex student.tex task_manager.tex |
diffstat | 11 files changed, 50 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/cell.tex Mon Jul 14 17:58:53 2008 +0900 +++ b/cell.tex Mon Jul 14 20:09:16 2008 +0900 @@ -19,6 +19,12 @@ SPE からメインメモリへは、直接アクセスすることは出来ず、 SPE を構成する一つである MFC (Memory Flow Controller) へ、チャネルを介して DMA (Direct Memory Access) 命令を送ることで行われる (\figref{fig-cbe-spe}) 。 +この時、DMA 転送するデータとアドレスにはいくつか制限がある。 +転送データが16バイト以上の場合、データサイズは16バイトの倍数で、 +転送元と転送先のアドレスが16バイト境界に揃えられている必要がある。 +転送データが16バイト未満の場合、データサイズは 1,2,4,8 バイトで、 +転送サイズに応じた自然なアラインメントである +(転送サイズのバイト境界に揃えられている) ことが条件となる。 \begin{figure}[tb] \begin{center} @@ -33,7 +39,6 @@ 同時に演算する命令などを持ち、PPE に比べて高速な演算が可能である。 そのため、ほとんどの演算を SPE 上で行わせることが推奨されている。 - \subsection{SPURS} ここでは、現在発表されている Cell の開発環境である SPURS \cite{spurs} について説明する。
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/figure/scheduler.bb Mon Jul 14 20:09:16 2008 +0900 @@ -0,0 +1,5 @@ +%%Title: ./scheduler.pdf +%%Creator: ebb Version 0.5.2 (+ArtBox) +%%BoundingBox: 0 0 522 492 +%%CreationDate: Mon Jul 14 20:08:17 2008 +
--- a/figure/spurs-pipeline.bb Mon Jul 14 17:58:53 2008 +0900 +++ b/figure/spurs-pipeline.bb Mon Jul 14 20:09:16 2008 +0900 @@ -1,5 +1,5 @@ %%Title: ./spurs-pipeline.pdf %%Creator: ebb Version 0.5.2 (+ArtBox) -%%BoundingBox: 0 0 551 205 -%%CreationDate: Tue Mar 25 11:56:24 2008 +%%BoundingBox: 0 0 533 187 +%%CreationDate: Mon Jul 14 18:51:01 2008
--- a/introduction.tex Mon Jul 14 17:58:53 2008 +0900 +++ b/introduction.tex Mon Jul 14 20:09:16 2008 +0900 @@ -1,4 +1,13 @@ \section{研究の目的} +本研究室では、PS3Linux を用いて学生によるゲーム開発を行っている。 +しかし、Cell のような Many Core プログラミングは非決定的であり、 +デバッグが難しい。 + +(ここまだ直し中です) + +そこで、Many Core プログラミングの手助けになるようなフレームワークを設計する。 +このフレームワークは + 本研究では、Many Core Architecture 向けの Fine Grain Task Manager を設計する。 Fine Grain Task の単位はサブルーチンまたは関数とし、 全ての Core が絶えず動くようにすることで全体の並列化率を高める。
--- a/manycore.tex Mon Jul 14 17:58:53 2008 +0900 +++ b/manycore.tex Mon Jul 14 20:09:16 2008 +0900 @@ -45,4 +45,8 @@ 並列プログラムの特徴として、デバッグが難しいことも挙げられる。 実行が非決定的(同じ状態で実行しても同じ結果が異なる)場合があり、 バグの状態を再現することが難しい。 -また、個々の Core 上のデータを調べる必要もある。 +例えば Cell の場合、複数動いている SPE の一つに対して +gdb で breakpoint を掛けても、他の SPE は動き続けるし、 +全ての SPE を手動で管理するのは非常に厳しい。 +また、PPE と SPE ではメモリ空間が違うため、SPE から直接 PPE のデータを +見る事ができない。
--- a/student.tex Mon Jul 14 17:58:53 2008 +0900 +++ b/student.tex Mon Jul 14 20:09:16 2008 +0900 @@ -57,8 +57,8 @@ \end{center} \end{figure} -このソートプログラムの実行速度を、SPE の個数を変えて出力した -(\figref{fig:sort})。 +このソートプログラムの実行速度を、 +SPE の個数を変えて出力した (\figref{fig:sort})。 \begin{figure}[tb] \begin{center} @@ -67,3 +67,4 @@ \label{fig:sort} \end{center} \end{figure} +
--- a/task_manager.tex Mon Jul 14 17:58:53 2008 +0900 +++ b/task_manager.tex Mon Jul 14 20:09:16 2008 +0900 @@ -23,6 +23,8 @@ \end{table} 以下に Task Manager を使った記述例を示す。 +このプログラムは、PPE にある文字列データを、SPE が受け取って +データを改変し、PPEに戻すというプログラムである。 {\small \begin{verbatim} @@ -54,13 +56,8 @@ task->add_outData(sendStr,length); task->spawn(); - - printf("before: %s\n", sendStr); - manager->run(); - printf("after : %s\n", sendStr); - return 0; } @@ -76,8 +73,8 @@ char *fixStr = (char*)get_input(wbuf, 0); strcpy(fixStr, recvStr); - fixStr[0] = 'D'; - fixStr[3] = 'E'; + fixStr[0] = 'D'; // 文字列データを変換 + fixStr[3] = 'E'; // } // 実行結果 @@ -88,7 +85,8 @@ } \subsection{Task の定義} \label{sec:tm-task} -タスクの定義を以下に示す。 +以下は、実行されるタスクの情報となるデータ構造である。 +このデータは PPE、SPE の両方で使用される。 {\small \begin{verbatim} @@ -127,7 +125,20 @@ cpu\_type は実行する CPU の切り替え (sec:\ref{sec:tm-cpu}) に用いる。 \subsection{スケジューラ} \label{sec:tm-scheduler} -TaskManager のスケジューラを以下に示す。 +生成された Task クラスにしたがって、 +実際のタスクを実行するのがスケジューラである。 +スケジューラは、PPE で生成された TaskList を受け取り、 +その中にある Task をパイプラインに沿って実行していく (\figref{fig:tm-sched})。 + +\begin{figure}[tb] + \begin{center} + \includegraphics[scale=0.353]{figure/scheduler.pdf} + \caption{スケジューラ} + \label{fig:tm-sched} + \end{center} +\end{figure} + +以下がパイプラインの記述である。 \begin{verbatim}