怎么主动释放已经加载的模型
问一个小白问题, 为什么所有模型都只有加载的接口, 没有释放的接口.
如果有释放的接口的话请说一下在哪里, 谢谢
我尝试使用智能指针, 但是类析构了, 占用的内存/显存没有释放 (jetson, trt 后端)
// load
auto det_model = std::make_unique<detection::PPYOLOE>(model, params, config, option);
if (!det_model->Initialized())
std::exit();
// free
det_model.reset();
大佬们帮忙看看 @jiangjiajun @rainyfly
今天也是等待回复的一天...
今天也是等待回复的一天...
https://github.com/PaddlePaddle/FastDeploy/blob/develop/fastdeploy/runtime/backends/tensorrt/trt_backend.cc 把这个里面context_、engine_ destroy()掉试试
https://github.com/PaddlePaddle/FastDeploy/blob/develop/fastdeploy/runtime/backends/tensorrt/trt_backend.cc 把这个里面context_、engine_ destroy()掉试试
在 fastdeploy/runtime/backends/tensorrt/trt_backend.h 添加
~TrtBackend() {
if (parser_) {
parser_.reset();
}
if (context_) {
context_.reset();
engine_.reset();
builder_.reset();
network_.reset();
}
}
在 fastdeploy/runtime/runtime.h 添加
~Runtime() {
if (backend_)
backend_.reset();
}
在 fastdeploy/fastdeploy_model.h 添加
virtual void Release() {
if (runtime_)
runtime_.reset();
}
实测均无法释放显存
是不是我的修改不正确? 还有其它可能有用的建议吗? @rainyfly
等待回复...
......