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