view example/renew_task/README @ 0:04e28d8d3c6f

first commit
author Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
date Mon, 08 Nov 2010 01:23:25 +0900
parents
children
line wrap: on
line source

/*
 * $Id: README,v 1.5 2008/10/20 10:02:01 gongo Exp $
 */

- 概要

Task 内で新たに Task を生成する。
以後、新たに生成された Task を RenewTask とする


-------------------------------------
Task の生成
-------------------------------------

  HTaskPtr create_task(int TASK_ID);

これは PPE 内で使う

  manager->create_task(id);

と同じ使い方です。以下の関数も同様です。

  add_inData(), add_outData(), add_input()

Task 内部でこれらの関数にアクセスする際は、

  smanager->create_task, smanager->add_inData,

というように、smanager から呼び出してください。
これは、PPE 内での TaskManager と同じです。


注   SPU からは使えません...

-------------------------------------
RenewTask を待ちたい場合
-------------------------------------

TaskA : PPE で生成
TaskB : TaskA で生成

だったとする。

このとき、TaskA が終了した時点で、PPE 側に 「TaskA が終了した」と送るのですが
場合によっては、TaskB が終了するまで待って、初めて TaskA 終了を
通知したい時があると思います。そういうときは

  HTaskPtr taskB = smanager->create_task(TASK_B);
  taskB->spawn();


-------------------------------------
RenewTask の生成から実行までの時間
-------------------------------------

SPE 上で時間の計測を行う際、SPU Decrementer を使う方法が一般的らしい。
./spe/SpeProfile.cc の中でそのルーチンを入れてます。

  SpeProfile *profile = new SpeProfile;

でオブジェクトを生成した後、測定したい範囲の最初で

  profile->ProfStart();

計測の最後の範囲で

  profile->ProfStop();

その結果を表示したい時は

  profile->ProfPrint();

とします。


- 実行方法

./renew_task

- 実行例

流れは、

1. PPE で RenewStart を起動
2. RenewStart 内で Renew1 を起動
3. Renew1 内で Renew2 を起動
4. Renew2 内で Renew3 を起動
5. Renew3 内で Renew4 を起動
6. Renew4 で終了

% ./renew_task

[PPE] Program Start

[PPE] Create Task : RenewStart

[SPE] ** running RenewStart
[SPE] Create Task : Renew1
[SPE] ** finish  RenewStart

SPE time by SPU Decrementer: 40392.515625
[SPE] ** running Renew1
[SPE] Create Task : Renew2
[SPE] ** finish  Renew1

SPE time by SPU Decrementer: 13483.305664
[SPE] ** running Renew2
[SPE] Create Task : Renew3
[SPE] ** finish  Renew2

SPE time by SPU Decrementer: 0.005163
[SPE] ** running Renew3
[SPE] Create Task : Renew4
[SPE] ** finish  Renew3

SPE time by SPU Decrementer: 0.005150
[SPE] ** running Renew4
[SPE] ** finish  Renew4


測定の単位は msec です