diff student.tex @ 3:3ee6deaab278

*** empty log message ***
author gongo
date Mon, 14 Jul 2008 16:28:37 +0900
parents
children 9cd21bb81105
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/student.tex	Mon Jul 14 16:28:37 2008 +0900
@@ -0,0 +1,45 @@
+\section{学生によるTaskManagerを用いた開発}
+4月から6月にかけて、学生に TaskManager を用いて
+簡単な並列プログラムを書いてもらった。
+開発環境は Mac OS X と PS3 Linux である。
+ここでは学生の反応について報告する。
+
+\subsection{タスクの概念}
+最初は Hello, World のプログラムを書かせた。
+通常のCのプログラムと違い、「Hello, World」を表示させる部分を
+タスクとして記述する、そのタスクを SPE 上で実行するということが
+理解しきれない学生がいた。
+TaskManager の仕様だけでなく、Cell のような並列実行環境についても
+学ぶ必要があった。
+
+\subsection{タスクへのデータ入出力}
+SPE へ整数の配列を DMA で送り、各要素を2倍にして
+PPE へ DMA で戻すというプログラムを書かせた。
+Cell の DMA にはアライメントの問題があり、
+Cell の仕様を理解しきれていない学生が居た。
+TaskManager ではその部分を意識させないようにしている
+(\tabref{tab:tm-api}:\verb|TaskManager::allocate(size);|)。
+
+\subsection{画像の拡大縮小回転、色の変換}
+文献\Cite{gongo2} の TaskManager では、
+タスクに対して入出力は一つずつしか設定できなかった。
+しかし、画像の複数の行を読み込む際、メモリアドレスに間が出来るため、
+一つの入力出力では足りないという学生からの意見があった。
+そこで新たに、複数の入出力を設定できる \verb|add_inData()、add_outData()|
+を追加した。これらで設定したデータはリスト構造になっており、
+Cell の場合、 MFC List DMA \cite{cell} の機能を使用してDMA を行っている。
+
+また、送ったピクセルデータの長さやその他のパラメータも送りたいという意見から、
+32ビットパラメーターを複数送れる \verb|add_param()| というAPIを追加した。
+
+画像の読み込みは SDL \cite{sdl} を使用しており、
+最初学生は生成された SDL のデータ構造 (SDL\_Surface) を
+そのまま SPE に送っていた。
+SDL\_Surface にあるピクセルデータはアドレスしか無く、実体はPPE 側にしかない。
+しかし、SPE 側で PPE と同じようにそのアドレスを読みに行くということをする
+学生が多かった。ここでも SPE の仕様に関して学ぶ必要があった。
+
+その問題を回避するために、アドレスではなくデータを、SDL\_Surface ではなく、
+自分たちが作ったタスクに合うようなデータ構造への変換を行った。
+
+\subsection{ソートプログラム}