研究日誌。

大規模なグラフ処理に対してメモリ階層構造を考慮した高性能なソフトウェアを開発。

Cell での実行時間計測。

2007-08-07 01:58:38 | Weblog
Time Base Register というものを用いる。
Fixstars さんの Tutorial に ppe_prof.h として、ヘッダーファイルも用意されているので、
include することでとても簡単に用いることができる。

ただし、Play Station 3 で実行する場合は Cell Simulator のときと比べ、
timebase の値が異なるので注意が必要である。

timebase は、次のようにすると調べられる。
Play Station 3 で実行すると、79800000 clock であることがわかる。
ちなみに Cell Simulator では 2000000000 clock であった。

# cat /proc/cpuinfo
timebase : 79800000

これは、 79800000 Hz (79.800MHz) を意味しており、
79.800MHz 刻む毎に Time Base Register の値が 1 増えるため、次の式で実行時間を計測できる。

[Time Base Register の値の増加数] / [timebase] = 処理時間 [ sec]
[Time Base Register の値の増加数] / [timebase] * 1000.0f = 処理時間 [msec]




ppe_prof.h の実装は以下のように行う。


#include "ppe_prof.h"
#define SPU_DECREMENTER_INITIAL_VALUE 0x7FFFFFFFU

unsigned int profile;

spu_writech(SPU_WrDec, SPU_DECREMENTER_INITIAL_VALUE);
profile = spu_readch(SPU_RdDec);

/* 計測する処理をこのようにしてはさむ */

profile -= spu_readch(SPU_RdDec);
time = profile / 79800000 * 1000.0f;

最新の画像もっと見る

コメントを投稿