首页 > 解决方案 > opencl:如何将 3d 纹理从主机传递到设备

问题描述

将一些 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 支持。

有没有其他方法可以将 3d 纹理传递给设备并能够修改它们?

谢谢。

标签: opencl

解决方案


write_imagef自 1.0 起已支持 3D 图像,但仅当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它。


推荐阅读