如何释放在 halide 中定义的 CPU 缓冲区

how to free a CPU buffer defined in halide

我的项目在 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 中的缓冲区?

我用过 free 或 deallocate 之类的,但好像没用。

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