annotate example/dependency_task/README @ 638:671fca057ad3

hmmmm
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Thu, 19 Nov 2009 18:18:20 +0900
parents 5c194c71eca8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
1 /*
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
2 * $Id: README,v 1.3 2008/10/20 08:49:52 gongo Exp $
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
3 */
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
4
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
5 - 概要
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
6 Task の依存関係を設定する例題
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
7
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
8 タスクは二種類あって
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
9
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
10 配列 idata があるとする (サイズは length*2)
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
11
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
12 Exec: idata を length の前後に分けて受け取り、各要素に値を加算
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
13 半分に分けるため、今回はこのタスクを 2 つに固定。
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
14 まあ3つ以上でもいいんだけどね。
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
15
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
16 Print: idata を表示する。
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
17
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
18
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
19 依存関係としては、まずは Exec を先に実行しないといけないので
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
20
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
21 ------------> 時間
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
22
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
23 Exec 1
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
24 \
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
25 Print
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
26 /
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
27 Exec 2
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
28
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
29
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
30 みたいな感じ。
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
31 この依存を設定しないと、Print は Exec1,2 が計算する前の
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
32 idata を詠んでしまう可能性がある。
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
33
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
34
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
35 - 実行方法
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
36
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
37 % ./dependency [-cpu spe_num] [-nodepend]
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
38
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
39 -cpu SPU の数
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
40 -nodepend Exec と Print に依存を設定しない
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
41
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
42
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
43 - 実行例
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
44
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
45 %./dependency
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
46 [TASK_PRINT]
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
47 13 13 13 13 13 13 13 13 13 13 13 13 26 26 26 26 26 26 26 26 26 26 26 26
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
48
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
49 %./dependency -nodepend
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
50 [TASK_PRINT]
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
51 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
52
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
53 上の場合、Exec 1, 2 の処理結果が PPE の idata に書き込まれる前に
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
54 Print が idata から DMA でデータを取ってきて表示しているために
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
55 全て 0 になっている。
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
56 このタスクが全て同じ SPE 上で実行されているとして、
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
57 Exec 1, 2 のあと、Print の DMA read が実行される前に
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
58 Exec 1, 2 の DMA write が済んでいればもしかしたらデータが取れるかもしれない。
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
59 しかし「もしかしたら」では使いものにならないので、依存を設定するわけです。