Mercurial > hg > Members > kono > Cerium
view example/dependency_task/README @ 639:70c5c2d2eb24
fix
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 19 Nov 2009 18:45:24 +0900 |
parents | 5c194c71eca8 |
children |
line wrap: on
line source
/* * $Id: README,v 1.3 2008/10/20 08:49:52 gongo Exp $ */ - 概要 Task の依存関係を設定する例題 タスクは二種類あって 配列 idata があるとする (サイズは length*2) Exec: idata を length の前後に分けて受け取り、各要素に値を加算 半分に分けるため、今回はこのタスクを 2 つに固定。 まあ3つ以上でもいいんだけどね。 Print: idata を表示する。 依存関係としては、まずは Exec を先に実行しないといけないので ------------> 時間 Exec 1 \ Print / Exec 2 みたいな感じ。 この依存を設定しないと、Print は Exec1,2 が計算する前の idata を詠んでしまう可能性がある。 - 実行方法 % ./dependency [-cpu spe_num] [-nodepend] -cpu SPU の数 -nodepend Exec と Print に依存を設定しない - 実行例 %./dependency [TASK_PRINT] 13 13 13 13 13 13 13 13 13 13 13 13 26 26 26 26 26 26 26 26 26 26 26 26 %./dependency -nodepend [TASK_PRINT] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 上の場合、Exec 1, 2 の処理結果が PPE の idata に書き込まれる前に Print が idata から DMA でデータを取ってきて表示しているために 全て 0 になっている。 このタスクが全て同じ SPE 上で実行されているとして、 Exec 1, 2 のあと、Print の DMA read が実行される前に Exec 1, 2 の DMA write が済んでいればもしかしたらデータが取れるかもしれない。 しかし「もしかしたら」では使いものにならないので、依存を設定するわけです。