研究日誌。

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

LU1814 エラー。

2007-08-07 18:13:25 | Weblog
大学では「Symantec AntiVirus Corporate Edition」という、ウィルス対策ソフトにお世話になっているのだが、ある時期を境に Live Update を行うと次のようなエラーが出るようになってしまった。

LU1814: LiveUpdateが更新リストを取り込めませんでした。 LiveUpdate が利用可能なシマンテック製品とコンポーネントの更新版のカタログファイルを取り込めませんでした。インターネットに接続できることを確認して LiveUpdate を再び実行してください。

もちろんインターネット(プロキシも設定済み)には接続できているし、なんらかの設定にミスがあるのかと思い、 Symantec Client Security から探してみたが、めぼしいものがない。再インストールしてもうまくいかない。

そこで Google 先生に聞いてみると、
LiveUpdate を実行すると「LU1814: LiveUpdate が更新リストを取り込めませんでした」というエラーが表示される
というまさに欲しているページを教えてくれた。

そのページにある「S32luhl1.dll ファイルを削除する」という対処法を試してみたらうまくいった。

LiveUpdate のインストールフォルダ内に s32luhl1.dll ファイルが存在する場合、LiveUpdate は接続先の設定内容に関わらず、強制的に LAN 接続で LiveUpdate サーバーに接続を行います。この場合、LiveUpdate の接続先に LAN 接続が設定されていなければ、LiveUpdate は接続先を発見できずに失敗します。

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;