【发布时间】:2013-08-17 02:19:02
【问题描述】:
我正在使用 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() 调用和断点无法与英特尔 SDK for OpenCL 一起使用?
【问题讨论】:
-
您是否通过在语句前的某处添加
#pragma OPENCL EXTENSION cl_intel_printf : enable来启用 printf? -
@MatthiasHolzapfel 是的,我试过了。
-
您好,我遇到了与您之前遇到的相同的问题。我无法调试我的内核并且断点没有被命中。我正在使用 Intel OpenCL SDK 2014 和 Visual Studio 2010。如果您找到了解决方案,如果您能分享解决方案,将不胜感激
标签: visual-studio opencl gpu gpgpu intel