Toybrick

标题: 3399Pro Jni NPU 主动模式被动模式 [打印本页]

作者: lalapay    时间: 2021-1-29 18:06
标题: 3399Pro Jni NPU 主动模式被动模式
各位大佬,问一个入门级的问题,请赐教:

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    时间: 2021-1-30 08:38
不是很明白,你是想用1808计算棒的主动模式在 3399pro上,还是想用3399pro的npu做主动模式。
1808计算棒做主动模式那是肯定可以在3399pro Android上用的。
3399pro的npu肯定是做不了主动模式的,那颗npu自己没带emmc,你程序咋弄进去跑

异步模式就是用同步接口做到异步获取,方便上位机单线程开发调用而已。
如果你上位机喂数据和取数据本身就是2个线程,那就不存在什么rknn异步模式。
但你上位机喂数据和取数据是单个线程,那为了不block住那么久,异步模式下每次都是返回上一次的计算结果。
作者: lalapay    时间: 2021-1-30 17:35
多谢大佬!
理解如下:
1、是3399pro上用npu,使用android系统jni开发。
2、3399pro的npu不存在主动模式,老老实实照API手册开发即可。
3、异步模式只是在同步接口做到异步获取,每次返回上一次结果,以降低获取结果数据的block时间。【说明有cache机制】
4、喂数据/收数据如果使用2个独立线程,不需要异步模式。







欢迎光临 Toybrick (https://t.rock-chips.com/) Powered by Discuz! X3.3