如何释放在 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 对象的另一个副本存在于某处。
我的项目在 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 对象的另一个副本存在于某处。