如何在宿主c++函数之间传递cl::Buffer对象
How do I pass cl::Buffer object between host c++ functions?
我使用OpenCL与c++包装器,使用GPU进行繁重的计算。
数据在cl::Buffer对象中,例如
std::vector<float> host_z_vec(100, 0.0f);
cl::Buffer device_z_vec;
device_z_vec = cl::Buffer(*context_ptr,
CL_MEM_READ_WRITE | CL_MEM_COPY_HOST_PTR,
sizeof(float)*host_z_vec.size(),
&host_z_vec.at(0),
&status);
如何在宿主c++函数之间传递cl::Buffer对象device_z_vec ?-我不想复制device_z_vec,只是传递它。
void run_on_gpu(cl::Buffer device_z_vec){ ... }
或
void run_on_gpu(const cl::Buffer& device_z_vec){ ... }
?
这样可以吗?
class StoreBuffer{
cl::Buffer device_z_vec;
public:
cl::Buffer provide_access_to_device_z_vec(){ return device_z_vec; };
}
或者我应该传递一个指针到cl::Buffer对象?
按值将cl::Buffer
传递给函数或将其作为类成员存储都是可以的。cl::Buffer
类的复制构造函数只是增加底层OpenCL分配的引用计数(通过clRetainMemObject
)。对于cl.hpp
中的所有其他OpenCL对象类也是如此。
相关文章:
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 当我编译webrtc服务器时,Windows上只支持clang-cl
- 使用 cl 构建代码并连接到 sqlite 库
- 如何"buffer" UNIX 信号
- MSYS2 MinGW64 在 Windows 上构建 GMP/MPFR 作为静态库,并将它们链接到使用 CL 编译的
- NMAKE:致命错误 U1077:cl.exe 和 nmake.exe 返回代码'0x2'
- Clang-CL 警告 strnicmp 已弃用,请使用 ISO C 并C++符合标准的名称_strnicmp
- 在 OpenCL 库中找不到 cl::Error 类
- 什么是 Direct3D 12.0 上的"Map Default Buffer"?
- visual MSVC cl.exe尝试使用C++标头范例(定义与声明)
- cl::Event::waitForEvents returns -7 (CL_EXEC_STATUS_ERROR_ F
- VC++ wcscpy_s随机断言"Buffer is too small"
- 将uint8_t*buffer和size_tbufferlen从C++传递到C中的API函数的最佳方式是什么
- gcc中cl/NODEFAULTLIB的替代方案是什么
- cl.exe在哪里?(MS 构建工具 '13)
- cmake 将 clang-cl 检测为 clang
- 如何在 Azure 应用服务中使用 cl.exe 编译 C++ 代码并生成可执行文件
- OpenCL/C++ - 返回一个 cl::Buffer 对象
- 可以使用Cuda设备指针来代替cl::Buffer
- 如何在宿主c++函数之间传递cl::Buffer对象