Toybrick

3399Pro Jni NPU 主动模式被动模式

lalapay

注册会员

积分
65
发表于 2021-1-29 18:06:58    查看: 8800|回复: 2 | [复制链接]    打印 | 显示全部楼层
各位大佬,问一个入门级的问题,请赐教:

1、当使用1808进行npu模拟时,有主动模式和被动模式之分,无论论坛还是wiki都说得很清楚。也有相应的demo可以运行确认。都实验可行。
2、当直接使用3399Pro上的NPU,在Android系统环境下,是否还可以使用主动模式呢?如何使用
参考android demo,使用RKNN API,感觉就是标准的被动模式,通过npu_transfer_proxy来与NPU通信。这一点通过学习demo,自己编写JNI程序也实现了,确认有效。
但是想使用主动模式来提高效率时【主要是减少输入输出消耗】,发现:
android系统上没有找到进入NPU的方法------------有这种方法吗?
所以也就更没有办法在NPU内部加载模块并进行相应的处理了。

3、关于RKNN API 异步模式的说明,感觉不是很清晰
是不是说,如果采用异步模式,如果连续传递图像【inputs】,outputs除了第一帧会后滞后,后续的帧是连续的对应这inputs,只是有滞后而已,本质上就是将传输时间和计算时间实现了异步并行?【对于NPU,边接收,边计算,边会送】
建议能有一个图示化的机制说明,对小白很重要。

另外,关于RKNN API,大佬是否也能开个主题贴?这部分的内容社区里好像不多。

请大佬指导。

回复

使用道具 举报

jefferyzhang

版主

积分
13007
发表于 2021-1-30 08:38:41 | 显示全部楼层
不是很明白,你是想用1808计算棒的主动模式在 3399pro上,还是想用3399pro的npu做主动模式。
1808计算棒做主动模式那是肯定可以在3399pro Android上用的。
3399pro的npu肯定是做不了主动模式的,那颗npu自己没带emmc,你程序咋弄进去跑

异步模式就是用同步接口做到异步获取,方便上位机单线程开发调用而已。
如果你上位机喂数据和取数据本身就是2个线程,那就不存在什么rknn异步模式。
但你上位机喂数据和取数据是单个线程,那为了不block住那么久,异步模式下每次都是返回上一次的计算结果。
回复

使用道具 举报

lalapay

注册会员

积分
65
 楼主| 发表于 2021-1-30 17:35:39 | 显示全部楼层
多谢大佬!
理解如下:
1、是3399pro上用npu,使用android系统jni开发。
2、3399pro的npu不存在主动模式,老老实实照API手册开发即可。
3、异步模式只是在同步接口做到异步获取,每次返回上一次结果,以降低获取结果数据的block时间。【说明有cache机制】
4、喂数据/收数据如果使用2个独立线程,不需要异步模式。


回复

使用道具 举报

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

本版积分规则

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


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