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