【发布时间】:2016-11-03 12:45:05
【问题描述】:
我正在尝试使用 nvvp 来分析 opencl 内核。
我正在运行带有 GTX 580 的 ubuntu 12.04 64b 并已验证 CUDA 工具包工作正常(我可以运行和分析 cuda 代码)。
尝试调试我的 opencl 代码时,我得到:Warning: No CUDA application was profiled, exiting
有什么提示吗?
【问题讨论】:
我正在尝试使用 nvvp 来分析 opencl 内核。
我正在运行带有 GTX 580 的 ubuntu 12.04 64b 并已验证 CUDA 工具包工作正常(我可以运行和分析 cuda 代码)。
尝试调试我的 opencl 代码时,我得到:Warning: No CUDA application was profiled, exiting
有什么提示吗?
【问题讨论】:
Nvidia 的可视化分析器 (nvvp) 可用于分析 OpenCL 程序,但它比直接在 CUDA 中进行分析更痛苦。
Simon McIntosh's布里斯托大学的高性能计算小组提出了最初的解决方案 (here),我可以验证它是否有效。
我将总结基础知识:
COMPUTE_PROFILE=1完成的
其次,必须提供COMPUTE_PROFILE_CONFIG,我使用的样本(称为nvvp.cfg)包含:
profilelogformat CSV
streamid
gpustarttimestamp
gpuendtimestamp
接下来执行实际的分析,在这种情况下,我将分析一个名为 HuffFramework 的 OpenCL 应用程序,使用:
COMPUTE_PROFILE=1 COMPUTE_PROFILE_CONFIG=nvvp.cfg ./HuffFramework
这会生成一系列 opencl_profile_*.log 文件,其中 * 是线程数。
nvvp 无法加载这些日志文件,因为所有内核函数符号都有一个前导 OPENCL_,而不是预期的 CUDA_,因此用这样的快速脚本替换这些符号:
sed 's/OPENCL_/CUDA_/g' opencl_profile_0.log > cuda_profile_0.log
现在 cuda_profile_0.log 现在可以通过 nvvp 导入了,方法是启动 nvvp 并转到 File->Import...->Command-line Profiler,将其指向 cuda_profile_0.log 并预先设置!
【讨论】:
nvvp 只能分析 CUDA 应用程序。
【讨论】: