annotate example/word_count_run16array/README @ 924:1640b14ec15a draft

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