annotate example/renew_task/README @ 639:70c5c2d2eb24

fix
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Thu, 19 Nov 2009 18:45:24 +0900
parents 0decff4e867b
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
192
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
1 /*
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
2 * $Id: README,v 1.5 2008/10/20 10:02:01 gongo Exp $
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
3 */
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
4
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
5 - 概要
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
6
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
7 Task 内で新たに Task を生成する。
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
8 以後、新たに生成された Task を RenewTask とする
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
9
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
10
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
11 -------------------------------------
619
0decff4e867b RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 192
diff changeset
12 Task の生成
192
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
13 -------------------------------------
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
14
619
0decff4e867b RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 192
diff changeset
15 HTaskPtr create_task(int TASK_ID);
192
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
16
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
17 これは PPE 内で使う
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
18
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
19 manager->create_task(id);
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
20
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
21 と同じ使い方です。以下の関数も同様です。
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
22
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
23 add_inData(), add_outData(), add_input()
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
24
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
25 Task 内部でこれらの関数にアクセスする際は、
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
26
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
27 smanager->create_task, smanager->add_inData,
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
28
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
29 というように、smanager から呼び出してください。
619
0decff4e867b RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 192
diff changeset
30 これは、PPE 内での TaskManager と同じです。
192
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
31
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
32
619
0decff4e867b RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 192
diff changeset
33 注 SPU からは使えません...
0decff4e867b RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 192
diff changeset
34
192
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
35 -------------------------------------
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
36 RenewTask を待ちたい場合
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
37 -------------------------------------
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
38
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
39 TaskA : PPE で生成
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
40 TaskB : TaskA で生成
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
41
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
42 だったとする。
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
43
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
44 このとき、TaskA が終了した時点で、PPE 側に 「TaskA が終了した」と送るのですが
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
45 場合によっては、TaskB が終了するまで待って、初めて TaskA 終了を
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
46 通知したい時があると思います。そういうときは
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
47
619
0decff4e867b RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 192
diff changeset
48 HTaskPtr taskB = smanager->create_task(TASK_B);
0decff4e867b RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 192
diff changeset
49 taskB->spawn();
192
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
50
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
51
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
52 -------------------------------------
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
53 RenewTask の生成から実行までの時間
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
54 -------------------------------------
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
55
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
56 SPE 上で時間の計測を行う際、SPU Decrementer を使う方法が一般的らしい。
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
57 ./spe/SpeProfile.cc の中でそのルーチンを入れてます。
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
58
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
59 SpeProfile *profile = new SpeProfile;
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
60
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
61 でオブジェクトを生成した後、測定したい範囲の最初で
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
62
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
63 profile->ProfStart();
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
64
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
65 計測の最後の範囲で
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
66
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
67 profile->ProfStop();
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
68
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
69 その結果を表示したい時は
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
70
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
71 profile->ProfPrint();
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
72
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
73 とします。
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
74
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
75
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
76 - 実行方法
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
77
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
78 ./renew_task
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
79
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
80 - 実行例
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
81
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
82 流れは、
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
83
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
84 1. PPE で RenewStart を起動
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
85 2. RenewStart 内で Renew1 を起動
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
86 3. Renew1 内で Renew2 を起動
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
87 4. Renew2 内で Renew3 を起動
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
88 5. Renew3 内で Renew4 を起動
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
89 6. Renew4 で終了
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
90
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
91 % ./renew_task
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
92
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
93 [PPE] Program Start
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
94
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
95 [PPE] Create Task : RenewStart
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
96
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
97 [SPE] ** running RenewStart
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
98 [SPE] Create Task : Renew1
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
99 [SPE] ** finish RenewStart
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
100
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
101 SPE time by SPU Decrementer: 40392.515625
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
102 [SPE] ** running Renew1
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
103 [SPE] Create Task : Renew2
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
104 [SPE] ** finish Renew1
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
105
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
106 SPE time by SPU Decrementer: 13483.305664
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
107 [SPE] ** running Renew2
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
108 [SPE] Create Task : Renew3
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
109 [SPE] ** finish Renew2
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
110
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
111 SPE time by SPU Decrementer: 0.005163
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
112 [SPE] ** running Renew3
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
113 [SPE] Create Task : Renew4
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
114 [SPE] ** finish Renew3
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
115
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
116 SPE time by SPU Decrementer: 0.005150
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
117 [SPE] ** running Renew4
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
118 [SPE] ** finish Renew4
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
119
4f5c64e713c7 add example/renew_task
gongo@localhost.localdomain
parents:
diff changeset
120
619
0decff4e867b RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 192
diff changeset
121 測定の単位は msec です