求问利用cuda event 计时和利用visual profiler分析器查看执行时

求大神解答~~
为什么cuda event 得到的结果要比visual profiler 给出kernel的时间要长?cuda event的计时原理是什么?
为什么第一次kernel启动和执行的时间要比后面的要长?(每次都要warm up才能准确的计时)

类似java的虚拟机机制,在执行时,把字节码文件转换成硬件指令。
第一次执行时,需要把cuda 的PTX中间代码转换成你本机gpu的对应硬件指令,要耗费一定时间,再执行时,这个过程就不需要了。