OpenCL 1.2 读取/写入图像数据

问题描述 投票:0回答:2

我正在使用标志

CL_MEM_READ_WRITE
在主机上创建一个 Image2d 对象。该图像是一个内核的输出,我希望将其用作“不同”内核的输入。我也在用cl_image_format = {CL_INTENSITY, CL_FLOAT};

这在 OpenCL 1.2 中可能吗?我没有读过任何地方说你不能这样做,但是当我尝试我的第二个内核时,它返回全零,但没有错误。

我还尝试使用

clEnqueueCopyImage

将第一个内核的输出复制到不同的 Image2d (也是使用

CL_MEM_READ_WRITE
创建的)并将其用作第二个内核的输入,但这也不起作用。

我已经验证了我的第一个内核的输出是正确的。

感谢您的任何见解。

opencl
2个回答
2
投票
是的

,一个内核的输出图像可以用作后续内核的输入。 只要图像是

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 - 传递 image2d_t 两次以从内核读取和写入?


0
投票
在你的情况下,你不需要模数,因为你知道你总是在边界之外小于nx或在边界之内。

你的解决方案,如果它能按预期工作,速度会一样快,只是除法会让它慢一点。但我认为不会,因为坐标在你的方程中是二次的。

© www.soinside.com 2019 - 2024. All rights reserved.