如何在 opencl 中正确使用 printf?

how can i use printf in opencl correctly?

我使用 Intel FPGA SDK for OpenCLOpenCL 1.0。 我在内核中定义了几个向量数据int8,从PrintFunction中发现可以用printf("data_vec_wr1: %10v8hld\n",data_vec_wr1);显示值

控制台与一个 printf

data_vec_wr1: %10v8hld

最后还是没有正确显示数值,所以想知道如何使用printf打印Vector Data

的数值

据我了解,OpenCL 1.0 不支持 printf,除非可能是扩展。在某些显卡上测试我的 OpenCL 代码时,我 运行 遇到了类似的问题。编译器毫无怨言地接受了它,但是由于它没有得到官方支持,实现被打破了。您链接到的文档来自 OpenCL 1.2

作为替代方案,您可以考虑传入一个额外的缓冲区,然后您可以将您的值写入其中,以便在可能的情况下在内核执行后由 cpu 打印。

此外,我怀疑 fpga 上的 printf 实现会占用大量节点,从而限制 fpga 的实用性,所以如果他们将它包含在 fpga 的 opencl 实现中,我真的会感到惊讶.