我将一些CUDA代码移植到opencl 1.2,并在cuda代码中将结构定义为:
struct Info{
cudaTextureObject_t in[10];
cudaSurfaceObject_t out[10];
};
我需要从主机传递到设备。
设备需要从in
读取并写入out
。
我使用image3d_t
作为纹理/表面数据类型,并打算使用write_imagef
来修改out
,但是write_imagef
似乎仅受opencl 2.0支持。 / p>
还有什么其他方法可以将3d纹理传递到设备并能够对其进行修改?
谢谢。
答案 0 :(得分:0)
write_imagef
,但仅在设备支持cl_khr_3d_image_writes
扩展名的情况下。参见https://www.khronos.org/registry/OpenCL/sdk/1.0/docs/man/xhtml/cl_khr_3d_image_writes.html
此外,write_imagef
是从内核写入映像的方式。您的标题为“如何将3d纹理从主机传递到设备”,因此您应该使用clEnqueueWriteImage
。