在程序工程名上点右键->profile as->Remote C/C++ Application(我用的远程调试CUDA程序)启用性能分析
profiler性能分析总览:
下图最下部分需要详细分析:它是针对每个程序的分析结果报告。
各种处理过程快速浏览:点击每行都会有不同的提示,有每个函数的使用情况,和平台的性能情况
Overlap:在cudaMemcpy的同时,计算的时间占总的cudaMemcpy时间比例
数据转移和并发的分析示例:
分析结果显示:
1、该程序计算和复制数据的比例较低,即计算量相对于复制数据量差别不大,复制时间太长,显示不出GPU并行计算的效率,大量时间花费到了复制上
2、该程序复制数据和计算的重叠度较低,即复制数据的同时没有进行任何计算,浪费了GPU带宽,本文使用的是矢量相加代码,将数据在cpu生成复制到gpu计算再复制回来,自然不会有任何重复
3、该程序内核并发度较低,即两个核函数并行执行的百分比较低,最好使用更多的核函数在不同的grid执行
4、少量内存复制没有发挥出GPU主机到设备的带宽优势
5、较低的内存通道,内存复制没有使用全部的主机到设备的带宽,仅达到1.542GB/s,现在GPU一般能达到几十GB/s,这是最基础也是最有效地优化方式