10.7 使用printf调试

OpenCL C内核语言也实现了C语言中著名的printf()函数。printf()函数也可以用来进行调试,这种调试方式对于C/C++开发者来说并不陌生。

当内核调用完成时,设备会执行所有调用的printf()对输出流进行刷新。对命令队列使用clFinish()能将所有入队内核中的printf()进行执行,打印出对应变量的信息。这里需要注意的是,和多线程程序一样,printf()打印出来的信息并不是顺序的。

OpenCL-C标准文档中说明,OpenCL-C与C99标准的实现由所不同。