Toybrick

【已解决】同样模型C++版本的inference时间要比Python版本慢

protossw512

中级会员

积分
252
发表于 2019-3-7 09:51:17    查看: 1446|回复: 1 | [复制链接]    打印 | 显示全部楼层
本帖最后由 protossw512 于 2019-3-8 07:11 编辑

已经发现了问题所在,原因是我在init模型的时候加入了RKNN_FLAG_COLLECT_PERF_MASK的flag,导致模型inference的速度变慢,其实不加这个flag也能够测速。

我们在将代码从python移植到c++的时候发现同样的模型在c++上要比python的速度慢一倍左右,不知道具体是什么原因。我们的模型在python上能跑到101216us,但是在c++上只能跑到197029us

除了在我们的模型上做测试,我们还在官方给出的example上进行了测试。
同样的mobilenet_v1模型,python上面的eval_perf的结果是4733um,把转好的.rnkk文件用c++的mobilenet code sample读进去跑perf_run则需要10067um。


c++的sample代码是在rk3399pro上直接编译的,并不是交叉编译的。
是因为c++的rknn版本过低么?

另外我在python mobilenet_v1的example script上面,自己测试了时间:
  1. for _ in range(20):
  2.     start = time.time()
  3.     outputs = rknn.inference(inputs=[img])
  4.     end = time.time()
  5.     print('eval time: {}'.format(end-start))
复制代码
发现实际inference的时间是115ms左右,和eval_perf的结果(47ms)相差的比较远,是因为调用的overhead吗?
回复

使用道具 举报

protossw512

中级会员

积分
252
 楼主| 发表于 2019-3-7 16:48:33 | 显示全部楼层
有官方大佬能帮忙确认下这个问题不。。。
回复

使用道具 举报

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

本版积分规则

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


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