Friday 4 October 2013

Profiling

プログラミングには、絶対、

* 測定が必須

で、分散だと、それほど精度は必要ないんですが、並列実行だと、かなり細かい profile が必要になります。nsec order です。既存のプロファイラだと、ちょっと足りないので、いろいろ入れてるんですが。

測定結果がおかしいと。そもそも GPU 側に測定入れてなかったし。で、コードを見てみると… 時間を測るコードに、

* gettimeofday

はぁ? それ、System Call だし。そうじゃなくて、CPUのカウンターを使うんだよ。何考えてんの? ってな感じで「えーと、Xeon だと、どうするんだっけ?」とかググるんですが、マニュアルから見つけるのはしんどい。rdtsc とかいうものらしいです。

ところが、見つけてみると、

* rdtsc.c

ってなファイルが!

そういえば思い出したよ。ゼミで「なに、gettimeofday してるんだよ!」と怒って、その場でググって、ファイル作らせて、その場で、commit push させたのだった。

結局、3時間ぐらいで治ったようです。でも、Cell 側で動かなくなったような気がする。でも、もう PS3 Linux の実機がないよ…

No comments: