如何在 Nvidia GPU 上调试 OpenCL?

Posted

技术标签:

【中文标题】如何在 Nvidia GPU 上调试 OpenCL?【英文标题】:How to debug OpenCL on Nvidia GPUs? 【发布时间】:2013-08-18 09:39:24 【问题描述】:

有没有办法在 Nvidia GPU 上调试 OpenCL 内核,即设置断点和检查变量?我的理解是Nvidia's tool不允许OpenCL调试,AMD's和Intel's只允许在自己的设备上调试。

【问题讨论】:

我还没有找到解决这个问题的方法,但是我们经常在 AMD 平台上使用 CodeXL 进行调试,以确保我们的代码正常工作,然后在没有调试支持的情况下进行特定于 Nvidia 平台的最终修改和优化.这工作得相当好,但显然需要购买与您的 Nvidia 卡相似的 AMD 卡。这不是一个理想的解决方案,但对我们来说往往效果很好。 支持 CodeXL 工具,AMD 的优秀工具,除了你在 NVIDIA 上不走运,你可能可以使用 printf 命令(khronos.org/registry/cl/sdk/1.2/docs/man/xhtml/…)作为查看本地人的肮脏方式,我建议你转向 AMD GPU,那里的工具和支持要好得多 【参考方案1】:

gDEBugger 可能会对您有所帮助(虽然从未使用过),但除此之外,我所知道的没有任何工具可以设置断点或检查内核中的变量。如果它是一个长内核,也许尝试保存内核的中间输出。对不起,我不能给你一个神奇的解决方案,调试 OpenCL 很难。

【讨论】:

This post 提到以前版本的 gDEBugger 支持 Nvidia 卡,但这项工作被放弃了。这个版本以及支持它的驱动程序是否仍然可用? 似乎我应该在发布之前从 Graphic Remedy 检查 gDEBugger 的状态。他们发布的最后一个版本是 2010 年的(仍然可以下载),AMD 的版本现在已被 CodeXL 取代。我不知道旧版本的 gDEBugger 是否有效,但我会尝试并报告。 您可能需要找到较早的版本,因为他们显然在最新版本之前放弃了一些 Nvidia 支持。 我试过 gDEBugger 5.8.1,它似乎只支持 OpenCL 库函数的断点,而不是内核。 我自己试过了,我发现它在下一次 OpenCL 调用时也无法成功暂停应用程序,因此它无法向我显示有关缓冲区等的任何信息。结论 - 没有可用的Nvidia 用户调试 OpenCL 代码。

以上是关于如何在 Nvidia GPU 上调试 OpenCL?的主要内容,如果未能解决你的问题,请参考以下文章

可以仅将 AMD gDEBugger 6.0 用于 OpenCL CPU 内核调试吗? NVIDIA GPU 似乎推迟了这一点

Linux Arch OpenCL ICD 加载器 - Nvidia GPU、Intel CPU

OpenCL 同时用于 Intel CPU 和 Nvidia GPU

在 64 位 Ubuntu 14.04 中使用 Nvidia *和* AMD GPU 进行 OpenCL 开发

如何创建 NVIDIA OpenCL 项目

需要为 CPU 和 GPU 平台安装 opencl?