如何在 opencl 中正确使用 printf?
how can i use printf in opencl correctly?
我使用 Intel FPGA SDK for OpenCL
和 OpenCL 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 实现中,我真的会感到惊讶.
我使用 Intel FPGA SDK for OpenCL
和 OpenCL 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 实现中,我真的会感到惊讶.