Toybrick

rknn-api-1.3.0 内存泄露

buyishengun

中级会员

积分
394
发表于 2020-4-10 17:07:40    查看: 14666|回复: 10 | [复制链接]    打印 | 显示全部楼层
调用rknn-api加载yolov3模型不断循环调用rknn_init,然后rknn_destroy

while(1)
        {
                printf("rknn_init...\r\n");
                //ret = rknn_init(&ctx,model,model_len,RKNN_FLAG_PRIOR_MEDIUM);
                ret = rknn_init(&ctx,model,model_len,RKNN_FLAG_PRIOR_HIGH);
                if(ret < 0)
                {
                        printf("rknn_init fail! ret=%d\r\n", ret);
                        return -1;
                }
                printf("rknn_destroy...\r\n");
                rknn_destroy(ctx);
                sleep(1);
        }

通过free命令,发现使用内存不断上涨,大概循环两三次涨个1M,是不是存在内存泄露?
我看rknn_init是创建了一个线程,是不是在线程退出时,没有清理干净导致的?
回复

使用道具 举报

jefferyzhang

版主

积分
13016
发表于 2020-4-10 19:59:36 | 显示全部楼层
我报给相关同事看看。
一般来说不至于,不确定你说的涨1M是哪里看到的,linux有cache机制,free memory + cache才是空闲内存。
如果按你这么测,那应该训练几百次就会OOM,可以试试会不会出现OOM。
回复

使用道具 举报

jefferyzhang

版主

积分
13016
发表于 2020-4-13 09:01:53 | 显示全部楼层
本帖最后由 jefferyzhang 于 2020-4-13 09:22 编辑

NPU部门同事问,这个是在1808上还是在3399pro上跑发现内存泄漏的?

我们在x86上测试了下,测试进程并无内存泄露。
linux,跟3399pro应该没区别,代码都是一样的,也看了代码,都有释放。

回复

使用道具 举报

buyishengun

中级会员

积分
394
 楼主| 发表于 2020-4-13 09:22:07 | 显示全部楼层
rknn_init...
rknn_destroy...
rknn_init...
rknn_destroy...
rknn_init...
rknn_destroy...
rknn_init...
rknn_destroy...
rknn_init...
rknn_destroy...
rknn_init...
rknn_destroy...
rknn_init...
rknn_destroy...
rknn_init...
rknn_destroy...
rknn_init...
Killed
[root@rk1808 yolov3_test]#

我这边跑个20分钟左右,就OOM了
我是用命令行:free看内存使用情况
回复

使用道具 举报

buyishengun

中级会员

积分
394
 楼主| 发表于 2020-4-13 09:23:57 | 显示全部楼层
jefferyzhang 发表于 2020-4-13 09:01
NPU部门同事问,这个是在1808上还是在3399pro上跑发现内存泄漏的?

我们在x86上测试了下,测试进程并无内 ...

1808上跑的。
回复

使用道具 举报

jefferyzhang

版主

积分
13016
发表于 2020-4-13 09:54:36 | 显示全部楼层

我们这边测了1808的,使用的模型是mobilenetv1,好像也没有发现泄露。
怀疑跟模型有关,你们的模型是用哪个?
回复

使用道具 举报

buyishengun

中级会员

积分
394
 楼主| 发表于 2020-4-13 10:14:23 | 显示全部楼层
jefferyzhang 发表于 2020-4-13 09:54
我们这边测了1808的,使用的模型是mobilenetv1,好像也没有发现泄露。
怀疑跟模型有关,你们的模型是用哪 ...

用的是yolov3,coco数据集,416的,
rknn名称:yolov3_416x416_pre.rknn
这个也是你们转好的,直接拿来用。
回复

使用道具 举报

jefferyzhang

版主

积分
13016
发表于 2020-4-13 17:19:57 | 显示全部楼层
我们从上午跑到现在,都没发现yolov3 416的模型init/release会出现内存泄漏。。。。

请问下你计算棒的DRV和API版本是多少?
回复

使用道具 举报

buyishengun

中级会员

积分
394
 楼主| 发表于 2020-4-14 09:48:26 | 显示全部楼层
jefferyzhang 发表于 2020-4-13 17:19
我们从上午跑到现在,都没发现yolov3 416的模型init/release会出现内存泄漏。。。。

请问下你计算棒的DRV ...

要怎么看那些版本
回复

使用道具 举报

jefferyzhang

版主

积分
13016
发表于 2020-4-14 09:53:08 | 显示全部楼层
buyishengun 发表于 2020-4-14 09:48
要怎么看那些版本

运行时候不是应该会print出来么。你也可以用rknn toolkit去跑下,就会打印了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表