comparison example/word_count/README @ 946:a8b6ee80c108

unify word count examples....
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sun, 01 Aug 2010 21:05:35 +0900
parents 72b73beb3325
children
comparison
equal deleted inserted replaced
945:a9c7784e5dae 946:a8b6ee80c108
1 /*
2 * $Id: README,v 1.3 2008/10/20 08:49:52 gongo Exp $
3 */
4 1
5 - 概要 2 word count
6 Task の依存関係を設定する例題
7 3
8 タスクは二種類あって 4 16 16 16
5 |------|------|------|------|------|------|------|------|
9 6
10 配列 idata があるとする (サイズは length*2) 7 荐絎茵
11 8 /\/\/\/\
12 Exec: idata を length の前後に分けて受け取り、各要素に値を加算 9 \/\/\/\/
13 半分に分けるため、今回はこのタスクを 2 つに固定。 10 patter c障
14 まあ3つ以上でもいいんだけどね。
15
16 Print: idata を表示する。
17 11
18 12
19 依存関係としては、まずは Exec を先に実行しないといけないので 13 16 16
14 |------|------| 16
15 |------|------| 16
16 |------|------| 16
17 |------|------|
20 18
21 ------------> 時間 19 run16 罨<у茵с篋spawn域?
22
23 Exec 1
24 \
25 Print
26 /
27 Exec 2
28
29
30 みたいな感じ。
31 この依存を設定しないと、Print は Exec1,2 が計算する前の
32 idata を詠んでしまう可能性がある。
33
34
35 - 実行方法
36
37 % ./dependency [-cpu spe_num] [-nodepend]
38
39 -cpu SPU の数
40 -nodepend Exec と Print に依存を設定しない
41
42
43 - 実行例
44
45 %./dependency
46 [TASK_PRINT]
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
48
49 %./dependency -nodepend
50 [TASK_PRINT]
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
52
53 上の場合、Exec 1, 2 の処理結果が PPE の idata に書き込まれる前に
54 Print が idata から DMA でデータを取ってきて表示しているために
55 全て 0 になっている。
56 このタスクが全て同じ SPE 上で実行されているとして、
57 Exec 1, 2 のあと、Print の DMA read が実行される前に
58 Exec 1, 2 の DMA write が済んでいればもしかしたらデータが取れるかもしれない。
59 しかし「もしかしたら」では使いものにならないので、依存を設定するわけです。