opencl:如何将3d纹理从主机传递到设备

opencl:如何将3d纹理从主机传递到设备,opencl,Opencl,我正在将一些CUDA代码移植到opencl 1.2,在CUDA代码中,我有一个结构定义为: struct Info{ cudaTextureObject_t in[10]; cudaSurfaceObject_t out[10]; }; 我需要从主机传递到设备。 设备需要从中读取并写入中。 我正在使用image3d\u t作为纹理/曲面数据类型,并打算使用write\u imagef修改out,但是write\u imagef似乎只受opencl

我正在将一些CUDA代码移植到opencl 1.2,在CUDA代码中,我有一个结构定义为:

    struct Info{
    cudaTextureObject_t     in[10];
    cudaSurfaceObject_t     out[10];    
};
我需要从主机传递到设备。 设备需要从
中读取
并写入
。 我正在使用
image3d\u t
作为纹理/曲面数据类型,并打算使用
write\u imagef
修改
out
,但是
write\u imagef
似乎只受opencl 2.0支持

是否有其他方法可以将3d纹理传递到设备并修改它们


谢谢。

write\u imagef
从1.0开始就支持3D图像,但只有在您的设备支持
cl\u khr\u 3D\u image\u write
扩展时才支持。看


另外,
write\u imagef
是从内核写入映像的方式。您的标题是“如何将3d纹理从主机传递到设备”,因此您应该使用
clEnqueueWriteImage
来实现此目的。

谢谢。但似乎并非所有NVIDIA卡都支持此扩展。我得到:警告:未知“#pragma OPENCL扩展”-已忽略