我使用标记CL_MEM_READ_WRITE
在主机上创建Image2d对象。这个图像是一个内核的输出,我希望它用作不同内核的输入。我还使用cl_image_format = {CL_INTENSITY, CL_FLOAT};
这在OpenCL 1.2中是否可行?我无处可读,说你无法做到这一点,但是当我尝试我的第二个内核返回所有零,但没有错误。
我还尝试使用clEnqueueCopyImage
将第一个内核的输出复制到另一个Image2d(也使用CL_MEM_READ_WRITE
创建)并将其用作第二个内核的输入,但是也行不通。
我已经验证了我的第一个内核的输出是正确的。
感谢您的任何见解。
答案 0 :(得分:1)
是,来自一个内核的输出图像可以用作后续内核的输入。
只要图片为CL_MEM_READ_WRITE
,它就可以在OpenCL 1.x的内核中读取__read_only
或 __write_only
。
OpenCL 2.0进一步允许图像为__read_write
,但必须遵循特殊规则(如障碍)才能获得正确的结果。
有关读/写图像的更多信息,请参阅https://software.intel.com/en-us/articles/using-opencl-20-read-write-images
不要试图欺骗(OpenCL - Pass image2d_t twice to get both read and write from kernel?)