如何在Xcode 4.1中调试OpenCL内核?

时间:2011-08-27 05:33:20

标签: xcode macos debugging opencl

我有一些OpenCL内核没有做他们应该做的事情,我很乐意在Xcode中调试它们。这可能吗?

如果没有,有什么办法可以在基于CPU的内核中使用printf()吗?当我在我的内核中使用printf()时,OpenCL编译器总是给我一大堆错误。

4 个答案:

答案 0 :(得分:3)

将格式字符串转换为const char *似乎可以解决此问题。

这适用于Lion:

printf((char const *)"%d %d\n", dl, dll);

这有上述错误:

printf("%d %d\n", dl, dll);

答案 1 :(得分:1)

您可能还想尝试使用Quartz Composer来测试您的内核。如果您可以访问WWDC 2010 videos,我相信他们会在会话416中展示如何使用Quartz Composer快速构建OpenCL内核:“在应用程序中利用OpenCL”或418:“最大化OpenCL性能”。在WWDC 2009和2008期间也有一些很好的会议,可能也可以通过iTunes上的ADC获得。

使用Quartz Composer,您可以快速设置内核的输入和输出,然后实时监控结果。您可以避免更改 - 编译 - 测试周期,因为所有内容都是在您键入时编译的。更改代码时会弹出语法错误等,这使得识别错误很容易。

我已经使用这个工具来开发和测试OpenGL着色器,它们与OpenCL内核有许多共同之处。

答案 2 :(得分:0)

您是否已经尝试gDEBugger了?我认为这是目前唯一的选择,适用于Mac上的OpenCL调试。

英特尔在其新的OpenCL 1.1 SDK中提供了printf,但这仅适用于Linux和Windows。 Lion有OpenCL 1.1,但至少我的Core 2 Duo不支持printf扩展。

AMD目前仍在开发他们的OpenCL工具,据我所知,Nvidia调试工具仅适用于CUDA。

答案 3 :(得分:0)

您是否尝试过添加此pragma以启用printf?

#pragma OPENCL EXTENSION cl_amd_printf : enable