-
Notifications
You must be signed in to change notification settings - Fork 1.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
多个模型串行共享一个runtime,内存没有复用反倒增加 #2760
Comments
|
内存池不是提前优化分配好的内存吗?想串行的多个模型能够复用内存有什么办法(最好不增加耗时)? |
内存池是用于分配内存的,但模型中的静态内存(卷积的权重)是不能共用的,这部分无法共用。动态部分可以共用,就是通过共享运行时方式 |
先看下你的模型有多大,是否量化过(量化过实际所需内存需要乘以 4) |
两个模型都是大约14M ,都是没有量化过的浮点模型, |
模型发一下吧 |
diff --git a/source/backend/cpu/CPUBackend.cpp b/source/backend/cpu/CPUBackend.cpp ErrorCode CPUBackend::onResizeEnd() {
这么修改看一下 静态内存和动态内存大小 |
请提供下邮箱?还是什么 |
Hi: |
最新代码上两个模型 getSessionInfo memory 是多少,共享 runtime 之后 getSessionInfo memory 是多少? |
分别是77M和43M,共享runtime之后分别是77M和120M |
确实动态内存部分没有复用,还在解决中 |
期待解决方案 |
分析了你的情况,已经讨论出解决方案了;后续需要时间实现和测试~ |
请问是否有patch提前 发我们测试下 |
Marking as stale. No activity in 60 days. |
未使用runtime时,两个模型通过getsessioninfo查看内存信息分别为129.395508 MB和60.189285 MB
使用共享一个runtime时,两个模型通过getsessioninfo查看内存信息分别为129.395508 MB和189.584808 MB
共享runtime的作用应该为两者最大129.395508 MB才对,这怎么像是还累积了呢?
使用共享一个runtime方式如下:
ScheduleConfig config;
config.numberThread = 4;
auto runtimeInfo = Interpreter::createRuntime({config});
/创建第一个模型/
std::shared_ptr net1 = Interpreter::createFromFile("1.mnn");
auto session1 = net1->createSession(config, runtimeInfo);
//获取第一个模型内存信息
net1->getSessionInfo(session1, Interpreter::MEMORY, &memoryUsage1);
/创建第二个模型/
std::shared_ptr net2 = Interpreter::createFromFile("2.mnn");
auto session2 = net2->createSession(config, runtimeInfo);
//获取第二个模型内存信息
net2->getSessionInfo(session2, Interpreter::MEMORY, &memoryUsage2);
/使用/
/* 填充输入1..... */
net1->runSession(session1);
/* 读取输出1 填充输入2..... */
net2->runSession(session2);
The text was updated successfully, but these errors were encountered: