cuda - 如何将 NVidia Visual Profiler 与 OpenCL(在 Linux 上)一起使用?

标签 cuda opencl

我正在尝试使用 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,这是通过 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
    
  • 最后,现在可以通过 nvvp 导入 cuda_profile_0.log,通过启动 nvvp 并转到 File->Import...->Command-line Profiler,将其指向 cuda_profile_0.log 和 preso!

  • enter image description here

    关于cuda - 如何将 NVidia Visual Profiler 与 OpenCL(在 Linux 上)一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12094917/

    相关文章:

    并发流中的 CUDA cuFFT API 行为

    c++ - 如何在 NVIDIA GPU 上处理来自 CPU 的 RGB 数据并使用 OpenGL 纹理可视化数据

    design-patterns - CUDA 设计模式

    ubuntu - 安装在 USB 驱动器上的 ubuntu 上的 CUDA/OpenCL

    sdk - 如何获取OpenCL SDK?

    c++ - 为什么 OpenCL 在 cpp 中使用 0xdeadbeef?

    c++ - 如何修改 CUDA 代码以获得 100% GPU 负载

    arrays - 在cuda GPU cudamalloc中将3D数组转换为1D

    c - (OpenCL+OpenCV) 如何使用clEnqueueWriteBuffer的偏移量?

    compiler-errors - OpenCL解析错误,仅在GPU设备上