1

我正在使用 Intel SDK for OpenCL 和 Intel HD Graphics 4000 GPU 来成功运行 OpenCL 程序。因为我还安装了 Nvidia 库,所以我确保链接到 Intel OpenCL 库。

但是,printf()在内核中调用会导致 OpenCL 编译器错误

错误:OpenCL 中不允许函数“printf”的隐式声明

此外,我在 Visual Studio 2012 插件中启用了 OpenCL 内核调试,并将以下选项传递给 clBuildProgram:

"-g -s C:\\Path\\to\\my\\program.cl"

但是,内核断点被跳过。将鼠标悬停在断点上会显示以下消息:

当前不会命中断点。没有为此文档加载任何符号。

我的内核位于一个单独的 .cl 文件中,并且我正在按照 C/C++ 代码的方式设置断点。这是使用英特尔 SDK for OpenCL 调试器设置断点的正确方法吗?

为什么printf()调用和断点不适用于面向 OpenCL 的英特尔 SDK?

4

1 回答 1

2

在 OCL 版本 1.2 中引入了函数 printf()。英特尔不久前发布了这个版本。我敢打赌,你仍然有 1.1 版本。

关于调试器,我几乎从未使用过它,但根据本文档,路径应该是这样给出的:

"-g -s \"C:\\Path\\to\\my\\program.cl\""

您还应该选择要调试的线程。

于 2013-08-15T08:36:26.130 回答