无法在英特尔SDK for OpenCL中使用printf或调试器

时间:2013-08-14 22:32:43

标签: visual-studio opencl gpu gpgpu intel

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

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

  

错误:OpenCL

中不允许隐含声明函数'printf'

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

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

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

  

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

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

为什么printf()调用和断点无法与英特尔SDK for OpenCL一起使用?

1 个答案:

答案 0 :(得分:2)

函数printf()是在OCL 1.2版中引入的。英特尔很久以前就发布了这个版本。我敢打赌你还有1.1版本。

关于调试器,我几乎从未使用它,但基于此document,路径应该是这样给出的:

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

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