プログラミングには、絶対、
* 測定が必須
で、分散だと、それほど精度は必要ないんですが、並列実行だと、かなり細かい profile が必要になります。nsec order です。既存のプロファイラだと、ちょっと足りないので、いろいろ入れてるんですが。
測定結果がおかしいと。そもそも GPU 側に測定入れてなかったし。で、コードを見てみると… 時間を測るコードに、
* gettimeofday
はぁ? それ、System Call だし。そうじゃなくて、CPUのカウンターを使うんだよ。何考えてんの? ってな感じで「えーと、Xeon だと、どうするんだっけ?」とかググるんですが、マニュアルから見つけるのはしんどい。rdtsc とかいうものらしいです。
ところが、見つけてみると、
* rdtsc.c
ってなファイルが!
そういえば思い出したよ。ゼミで「なに、gettimeofday してるんだよ!」と怒って、その場でググって、ファイル作らせて、その場で、commit push させたのだった。
結局、3時間ぐらいで治ったようです。でも、Cell 側で動かなくなったような気がする。でも、もう PS3 Linux の実機がないよ…
No comments:
Post a Comment