OpenCL C++开发:如何将二进制数据及长度存入Binaries向量
解决方案
你查阅到的文档里「二进制对象指针+长度的pair向量」是OpenCL C层API的入参定义,C++封装层对入参做了适配,你代码里std::vector<std::vector<unsigned char>>是完全合法的入参类型,绑定内部会自动读取每个子vector的data()作为二进制指针、size()作为二进制长度,不需要手动构造pair。
如果你的device_list只有1个设备,直接按如下方式拷贝数据即可:
// 拷贝二进制数据到Binaries,和device_list的设备顺序一一对应 Binaries.emplace_back(binaries, binaries + binaries_size);
注意事项
Binaries的长度必须和device_list的长度完全一致,如果你有N个目标设备,就要存入N个二进制数据,顺序严格和device_list的设备顺序匹配- 数据拷贝完成后,原
binaries指针如果是堆上分配的内存,请按你自己的业务逻辑完成释放,避免内存泄漏 - 建议提前做合法性校验,确认
binaries不为空指针、binaries_size大于0再执行拷贝操作
内容的提问来源于stack exchange,提问作者AKRA
相关产品推荐
相关产品推荐

