首页 文章

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

提问于
浏览
1

我正在使用英特尔SDK for OpenCL与英特尔高清显卡4000 GPU成功运行OpenCL程序 . 由于我还安装了Nvidia库,因此我确保链接到英特尔OpenCL库 .

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

错误:OpenCL中不允许隐式声明函数'printf'

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

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

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

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

我的内核是在一个单独的.cl文件中,我正在设置断点,就像我对C / C代码一样 . 这是使用英特尔SDK for OpenCL调试器设置断点的正确方法吗?

Why are printf() calls and breakpoints not working with the Intel SDK for OpenCL?

1 回答

  • 2

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

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

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

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

相关问题