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

时间:2018-06-19 14:52:05

标签: opencl

我将一些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纹理传递到设备并能够对其进行修改?

谢谢。

1 个答案:

答案 0 :(得分:0)

从1.0开始,对于3D图像支持

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