首页 > 解决方案 > 即使释放了父缓冲区,是否必须显式释放 OpenCL 子缓冲区?

问题描述

我想知道释放包含子缓冲区 A1、A2、... 的 OpenCL 缓冲区 A 是否也会自动释放子缓冲区——尤其是在主机上,而不是在设备上。

标签: opencl

解决方案


规范clCreateSubBuffer没有引用子缓冲区的一般对象创建和引用计数规则的任何例外。它进一步指出,

返回的缓冲区对象引用了为缓冲区分配的数据存储

所以我认为可以肯定地说您需要单独释放每个子缓冲区以及父缓冲区,并且一旦最后一个子缓冲区对象被释放,实现就可以自由地释放完整的父数据存储。

我自己当然没有遇到任何遵循这种模式的问题。


推荐阅读