opencl - 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 纹理传递给设备并能够修改它们?
谢谢。
解决方案
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
它。
推荐阅读
- python-3.x - PostGIS 地理不支持“~=”函数/运算符
- bootstrap-4 - 为什么我不能将鼠标悬停在引导元素上?
- angular - Angular 页面未显示我的数组项
- css - 使用 CSS 网格将图像与基线对齐
- javascript - 在 React 中使用带有 useEffect 的 querySelectors 来修改 HTML 元素
- javascript - 如何在执行ajax函数的循环结束后运行函数?
- java - 在 Flink 中使用 mysql-connector-java:连接到 mysql >= 8.0.16 时找不到合适的驱动程序
- javascript - 为什么在对象数组中搜索不起作用?
- android - 如何将 contentDescription 提供给 SwitchPreference 以进行 Accessibilty/Talkback?
- regex - Google Sheets RegEx:在不允许字母的情况下设置数字范围