Toybrick

在rk3399pro上接上rk1808,rk3399pro init_runtime失败

lijie

注册会员

积分
89
楼主
发表于 2020-2-17 17:55:23    查看: 13030|回复: 9 | [复制链接]    打印 | 只看该作者
在rk3399pro的一个usb接口接入rk1808。运行/home/toybrick/rknn-toolkit-v1.3.0/examples/tflite/mobilenet_v1/test.py
1. ret = rknn.init_runtime(target='rk1808', device_id='TS018082190800508')
用rk1808能够成功运行

2. ret = rknn.init_runtime(target='rk3399pro', device_id='f4feda64a23dbb51')
用rk3399pro会有如下错误:
--> Init runtime environment
E Only support ntb mode on ARM64 platform. But can not find device with ntb mode.
E Catch exception when init runtime!
E Traceback (most recent call last):
E   File "rknn/api/rknn_base.py", line 963, in rknn.api.rknn_base.RKNNBase.init_runtime
E   File "rknn/api/rknn_runtime.py", line 161, in rknn.api.rknn_runtime.RKNNRuntime.__init__
E   File "rknn/api/rknn_platform_utils.py", line 268, in rknn.api.rknn_platform_utils.start_ntp_or_adb
E Exception: Init runtime environment failed!
E Current device id is: f4feda64a23dbb51
E Devices connected:
E ['f4feda64a23dbb51', 'TS018082190800508']
Init runtime environment failed


但是list_device返回的结果是两个硬件都是ntb模式:
>>> rknn.list_devices()
*************************
all device(s) with ntb mode:
f4feda64a23dbb51,TS018082190800508
*************************
([], ['f4feda64a23dbb51', 'TS018082190800508'])


请问版主,这个问题该如何解决?谢谢!


回复

使用道具 举报

jefferyzhang

版主

积分
13578
沙发
发表于 2020-2-18 09:07:08 | 只看该作者
当前板子的NPU target是不用写的,写了就变成外接的rk3399pro了
回复

使用道具 举报

lijie

注册会员

积分
89
板凳
 楼主| 发表于 2020-2-18 17:48:46 | 只看该作者
非常感谢版主的信息,问题解决了!

但是,我们花了有两个多小时看文档做实验,最后来这问的,如果这些信息能在文档里指明就更完美了。

还有一个问题就是计算棒插上后需要重启rk3399pro才能用。

回复

使用道具 举报

ztfmars

注册会员

积分
108
地板
发表于 2020-9-17 17:21:02 | 只看该作者
感谢版主,感谢楼主。我也是今天有同样的困惑。开始还想着通过多个神经棒扩展rk3399pro的算力水平的,结果插上神经棒就报错了。
看来rknn.init_runtime的参数target是针对外部插入的设备NPU的,rknn3399pro内部版本的不能指定为“rk3399pro”。
正确的写法是:

在rk3399pro的一个usb接口接入rk1808。运行/home/toybrick/rknn-toolkit-v1.3.0/examples/tflite/mobilenet_v1/test.py
使用1808s0神经棒----
1. ret = rknn.init_runtime(target='rk1808', device_id='TS018082190800508')
用rk1808能够成功运行

在插入神经棒之后,还仍然使用rk3399pro的NPU
2. ret = rknn.init_runtime(device_id='f4feda64a23dbb51')

两者在使用上并不需要互相影响,即使用rk3399pro,同时可以使用rk1808。这样的话在性能上,等于增加到了6T的算力(当然也需要考虑CPU使用情况下)
回复

使用道具 举报

ztfmars

注册会员

积分
108
5#
发表于 2020-9-17 17:26:05 | 只看该作者
同时,再抛出一个问题:
在rk3399pro上面插入一个1808神经棒,这个1808貌似没有看到进行主动模式的吧,debian10好像的设置成主动模式好像没看到(wifi好像没有看到出现相同MAC地址的内容,名称啊; 后续设置貌似也没有写rknn和1808在主动模式是如何工作的)。
请问这个可以实现么?
@jefferyzhang
回复

使用道具 举报

ztfmars

注册会员

积分
108
6#
发表于 2020-9-18 09:10:45 | 只看该作者
jefferyzhang 发表于 2020-2-18 09:07
当前板子的NPU target是不用写的,写了就变成外接的rk3399pro了

同时,再抛出一个问题:
在rk3399pro上面插入一个1808神经棒,这个1808貌似没有看到进行主动模式的吧,debian10好像的设置成主动模式好像没看到(wifi好像没有看到出现相同MAC地址的内容,名称啊; 后续设置貌似也没有写rknn和1808在主动模式是如何工作的)。
请问这个可以实现么?
@jefferyzhang
回复

使用道具 举报

jefferyzhang

版主

积分
13578
7#
发表于 2020-9-18 09:12:03 | 只看该作者
ztfmars 发表于 2020-9-18 09:10
同时,再抛出一个问题:
在rk3399pro上面插入一个1808神经棒,这个1808貌似没有看到进行主动模式的吧,de ...

不知道你什么意思。
主动模式其实就是把1808当一个单独开发版用。
被动模式就是当usb计算棒用
回复

使用道具 举报

ztfmars

注册会员

积分
108
8#
发表于 2020-9-18 09:42:02 | 只看该作者
jefferyzhang 发表于 2020-9-18 09:12
不知道你什么意思。
主动模式其实就是把1808当一个单独开发版用。
被动模式就是当usb计算棒用 ...

不好意思,表述不清楚。
1rk3399pro和rk1808既可以被动模式运行,又支持主动模式运行,是么?
2 将rk3399pro作为宿主机, wifi设定和网络共享和ubuntu1804差的有点大: rk3399pro(debian10系统, api/drv 1.3.2)插入1808之后,并没有看到mac地址相同的网络。http://t.rock-chips.com/wiki.php?mod=view&id=62#h1_1(web网络配置-> 宿主机网络配置和web登录 -> 第3步)。请问,这个该如何处理?

感谢勤劳的版主回复,多谢
回复

使用道具 举报

jefferyzhang

版主

积分
13578
9#
发表于 2020-9-18 10:03:11 | 只看该作者
ztfmars 发表于 2020-9-18 09:42
不好意思,表述不清楚。
1rk3399pro和rk1808既可以被动模式运行,又支持主动模式运行,是么?
2 将rk3399 ...

1. 3399pro 没有被动模式,只能当开发版主动模式使用;  1808可主动也可被动
2. 网络配置请参看wiki结合自身知识使用,我无法手把手为所有客户解释这个。
    他的网络模型其实就是一台设备通过上位机上网而已。要么NAT要么桥接。这些属于基础知识。
回复

使用道具 举报

kiwifruit

注册会员

积分
95
10#
发表于 2021-9-18 15:12:16 | 只看该作者
ztfmars 发表于 2020-9-17 17:21
感谢版主,感谢楼主。我也是今天有同样的困惑。开始还想着通过多个神经棒扩展rk3399pro的算力水平的,结果 ...

你好,这里所说的6T的算力应该不是一起使用的吧?
代码中这样写:
ret = rknn.init_runtime(target='rk1808', device_id='TS018082190800508')
ret = rknn.init_runtime(device_id='f4feda64a23dbb51')
你能确定下面的定义的ret不会覆盖上面的ret吗?
我的理解是:RK3399Pro的USB口连接一个RK1808S0在只有一个模型分析一路视频内容的前提下根本就不是所谓的6T的算力,因为他们两个内部都是一样的NPU,况且在ret = rknn.init_runtime()定义的时候,你只能定义一个ret去分析模型,也就相当于还是使用的是一个NPU在运算,另一个NPU根本就没有工作,不知道我这样理解对还是不对?@jefferyzhang
回复

使用道具 举报

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

本版积分规则

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


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