我正在尝试使用适用于VS 2010的Parallel Nsight 2.1版来优化我的CUDA程序.
我的程序在带有GTX 480板的Windows 7(32位)机器上运行.我安装了CUDA 4.1 32位工具包和301.32驱动程序.
程序中的一个循环包括到设备的主机数据的副本,内核的执行以及从设备到主机的结果的复制.
正如您在下面的分析器结果图片中所看到的,内核在四个不同的流中运行.每个流中的内核依赖于"流2"中复制到设备的数据.这就是为什么asyncMemcpy在不同流中启动内核之前与CPU同步的原因.

令我恼火的是第一次内核启动结束(10.5778679285)与内核执行开始(10.5781500)之间的巨大差距.启动内核大约需要300美元,这在一个小于1毫秒的处理周期中是一个巨大的开销.
此外,内核执行和结果的数据副本没有重叠回主机,这进一步增加了开销.
这种行为有明显的原因吗?