CUDA profileの読み方

さっそくCUDA profileを利用してみた。

logファイルの中に以下のような関数ごとの時間が大量にでる。

timestamp=[ 2155.302 ] method=[ _func_name ] gputime=[ 7.808 ] cputime=[ 74.730 ] occupancy=[ 1.000 ] 

gputimeとcputimeの意味がいまひとつ分からず、CUDAに含まれるテキスト(CUDA_Profiler_2.2.txt)を見てみると次のように書いてあった。

The 'gputime' and 'cputime' labels specify the actual chip
execution time and the driver execution time (including gputime),
respectively.

要するにGPUのchip上で測った時間がgputimeで、host(PC)側で測った時間がcputime。
そしてcputimeにはgputimeも含まれる。(だから常にgputime < cputimeが成り立つ)

実際に掛かる時間を知りたいときにはcputimeを見ればよくて、kernelの最適化をした時の実行時間の変化を知りたければgputimeを見ればいいということだと思う。