我做了一些申请
在此报告文件中:
1。
当我在下拉菜单中选择“CUDA - > CUDA摘要”时
在表
中的运行时API调用项下%时间 - 80.66
推出
%设备时间 - 15.46
所有其他时间百分比几乎为0%
所以我的问题是时间的19.34%和设备时间的84.54%的其余部分在哪里?也就是说,如果它们表示完全不同的'总时间'值的百分比?
2
我使用推力向量来复制我的数据。在此报告的“内存复制”部分中,我的运行的备忘录副本的所有%时间值显然可以忽略不计。
但是想想,当我点击运行时API调用(其时间百分比值高达80.66)的“摘要”链接时,我立即看到罪魁祸首 - 'cudaMemcpy'在此'运行时API调用摘要'页面中,其“捕获时间%”值高达73.75。
所以我的问题是
答案 0 :(得分:3)
CUDA摘要
在CUDA摘要中,运行时API调用下的%时间是CUDA运行时占用的CPU时间的百分比。我不记得%是否限制在100%(所有CPU线程都被展平)或者最大%是NumCpuCores * 100%。
API CALLS
要查找最昂贵的运行时API调用,请执行以下步骤:
可以捕获CUDA Runtime API调用的调用堆栈,以便您可以从报告中跳转到源代码。可以使用以下步骤在活动中启用此功能:
警告:将Call Stack Trace设置为Always会增加API调用开销。仅在程序受CPU限制且您尝试识别生成API调用的源代码时才启用此功能。
可以使用报告页面左下角的相关窗格从引用API调用的报告页面访问调用堆栈跟踪。下面的屏幕截图显示了CUDA Runtime API Calls报告页面中cudaEventSynchronize调用的调用堆栈。
可以使用Process \ Thread \ Function Calls或Process \ CUDA \ CUDA Context \ Runtime API行的相关信息在时间轴报告页面中查询最长的API调用。
此时也可以使用关联窗格检索调用堆栈。