diff paper/chapter5.tex @ 1:5dbcea03717e draft

fix
author Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
date Tue, 07 Feb 2012 17:38:59 +0900
parents
children b69eefd9156e
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paper/chapter5.tex	Tue Feb 07 17:38:59 2012 +0900
@@ -0,0 +1,13 @@
+\chapter{デバック}
+並列プログラムの特徴として、デバッグが難しいことが挙げられる。実行が非決定的 (同じ状態で実行しても結果が異なる) な場合があり、バグの状態を再現することが難しい。また、個々の Core 上のデータを調べる必要があり、デバッガが複数の Core を取り扱えることが必須である。Cell の場合、動作している複数 の SPE の一つに対してgdb で breakpoint を掛ければ、PPE や他の SPE も同時にストップするが、それら全ての CPU を手動で管理するのは時間がかかる。また、PPE と SPE ではメモリ空間が違うため、SPE から直接 PPE のデータを見ることができない。
+Cerium での開発工程は、
+
+\begin{enumerate}
+\item C によるシーケンシャルな実装
+\item 並列実行を考慮したデータ構造を持つ実装
+\item コードを分割し、シーケンシャルに実行する実装
+\item 分割したコードを並列実行する実装
+\end{enumerate}
+
+となっている。逐次的な実行で正常な動作を確認した後、並列に実行した場合に正常な動作をしない場合がある。特にCell特有の問題としてデータ構造が DMA 転送に合っていないこと。つまり、DMA転送される際に、16アライメントに設定されていないか、データのサイズが16の倍数になっていない場合に注意しなければならない。またCeriumではコードがそれぞれ PPE 用と SPE 用が別個に存在するので、互いのコードが等価であるかもチェックしなければならない。一つのコードに統一しても良いが、別個で対応したい問題がでた時に対応してる。
+バグの例として、本来 SPE で動くべき Task が PPE で動作するなど、Task のスケジューリングでのバグ、Task の設定の際のバグなどがある。