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を見ればいいということだと思う。