cpu - 如何释放在 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 之类的,但它似乎不起作用。
解决方案
Halide::Buffer 是指向底层分配的共享指针。xxx.deallocate() 删除对它的引用。如果这是该 HalideBuffer_n 对象的唯一副本,那么它也会释放底层内存。如果它没有释放,则意味着该 HalideBuffer_n 对象的另一个副本存在于某处。
推荐阅读
- java - 无法根据 EmailID 从 DocuSign 获取用户信息
- angular - ngx-emoji-mart backgroundImageFn 指令
- python - 在 Linux 上使用 Python 从子进程中杀死父进程
- mysql - MySQL“where”条件没有返回正确的数据
- python - 理解 for 循环中的 range()
- php - PHP rename() 函数:文字字符串与变量
- android - Android - 获取不同的 UTC 时间
- asp.net - 如何从 SharePoint 应用程序和 WPF 配置和调用非匿名 WCF 服务?
- rx-java - RxJava:如果源太慢,则插入额外的发射
- c# - 我们可以将 HTML 存储在附件中吗?