首页 > 解决方案 > 如何释放在 halide 中定义的 CPU 缓冲区

问题描述

我的项目在 GPU 和 CPU 中都使用了缓冲区。

代码类似这样:

xxx = HalideBuffer_n(width, heght, 1); // buffer in CPU
xxx.device_malloc(device); // buffer in GPU
PS: using HalideBuffer_n = Halide::Runtime::Buffer<uint8_t, 3>

我可以用

 xxx.device_free();

释放 GPU 中的缓冲区。但是我可以选择哪个 API 来释放 CPU 中的缓冲区?</p>

我使用过诸如 free 或 deallocate 之类的,但它似乎不起作用。

标签: cpuhalide

解决方案


Halide::Buffer 是指向底层分配的共享指针。xxx.deallocate() 删除对它的引用。如果这是该 HalideBuffer_n 对象的唯一副本,那么它也会释放底层内存。如果它没有释放,则意味着该 HalideBuffer_n 对象的另一个副本存在于某处。


推荐阅读