Toybrick

RK1808入门教程(1)1808多计算棒并行运算思路分析

sanshin

注册会员

积分
125
楼主
发表于 2019-8-26 11:11:18 | 显示全部楼层

楼主,请问一个具体问题,请给出一点建议?
》1.  每个计算棒拥有同样的一个或多个完整模型,通过负载均衡分配每个计算棒推理任务。
》2.  每个计算棒只运行模型的一部分,多个计算棒流水线作业,共同计算完成一个模型。
》3.  每个计算棒拥有不同的模型,一个上位机通过连接多个计算棒同时进行多种模型的计算。(DEMO主要提供这种)
2和1,3还有一个区别。就是模型的大小不同。
1和3都是针对那些可以完整的下载到1808里面的模型。
2的话可以下载更大的模型。比如跑在jetson上的模型分割后放在几个1808上。
除了分割模型,还有几个问题
  a,目前的API是否够用?(目前API有没有验证过可以实现?)
在目前的API下,客户是否可以自由的操作INT8 MAC?
客户需要把数据送到每一个1808,然后再把中间结果读出来,再写到下一级1808里面,这个读写过程有2个问题
  b,根INT8 MAC运算相比,这个读写(USB/PCIe)如果消耗时间太长,那么这个方法本身就不现实。(不若直接在一个jetson上面装一个大模型)
  理想状态应该是几个1808级连以后可以达到一个jetson的功能以及算力,如果不管多少个1808级连在一起,只会越来越慢(USB/PCI3太慢),这个方法本身就不可取。
我不知道INT8MAC运算需要多少clock,估计应该比USB/PCIe更快,
c,rockchip有没有计划提供一个把模型拆分成多个子模型,分布在不同的计算棒上做成流水线串行运算的sample?
回复

使用道具 举报

sanshin

注册会员

积分
125
沙发
发表于 2019-8-26 12:35:21 | 显示全部楼层
jefferyzhang 发表于 2019-8-26 11:19
a. 目前API完全够用,我们经常有将网络拆分使用的情况(例如不支持的op会拆到上位机中cpu或者gpu运算), ...

[url]谢谢,可以问另外一个具体问题吗?
我用一台电脑接3个1808stick(一个直接接电脑,另外2个通过USB3.0 hub接同一台电脑)做测试的时候发现一个问题。请帮忙确认一下,
log data:
E Catch exception when getting outputs.
T Traceback (most recent call last):
T   File "rknn\api\rknn_base.py", line 817, in rknn.api.rknn_base.RKNNBase.inference
T   File "rknn\api\rknn_base.py", line 701, in rknn.api.rknn_base.RKNNBase.get_outputs
T   File "rknn\api\rknn_runtime.py", line 390, in rknn.api.rknn_runtime.RKNNRuntime.get_output
T Exception: RKNN get output failed. Error code: RKNN_ERR_DEVICE_UNAVAILABLE
Traceback (most recent call last):
  File "rknn_camera_tiny_custom.py", line 234, in <module>
    out_boxes, out_boxes2 = rknn.inference(inputs=[image])
TypeError: 'NoneType' object is not iterable
实际使用的命令(由于没有这么多USB相机接口,就用了本地的录像文件)
python3 rknn_camera_tiny_custom.py TS018080190600024 ./movie1.mp4 movie1
python3 rknn_camera_tiny_custom.py TS018080190600158 ./movie2.mp4 movie2
python3 rknn_camera_tiny_custom.py TS018080190600137 ./movie3.mp4 movie3

linux/windows都测试了,结果一样
代码也上传了,请确认一下。
rknn_camera_tiny_custom.py

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

sanshin

注册会员

积分
125
板凳
发表于 2019-8-26 13:54:21 | 显示全部楼层
jefferyzhang 发表于 2019-8-26 12:36
请看一楼FAQ,目前python的被动模式API是不支持多计算棒的。
请使用c api;或者计算棒主动模式 ...

谢谢,
请问是否可以提供一个动作测试用的3个1808 stick分别跑不同模型的c api的sample吗?
回复

使用道具 举报

sanshin

注册会员

积分
125
地板
发表于 2019-8-26 15:06:49 | 显示全部楼层
jefferyzhang 发表于 2019-8-26 14:10
自己写吧,我们API文档都有提供那么详细了。。。。

请问你们没有测试代码吗?测试代码也可以?
我们自己写也可以,但是没有找到说明文档,都是python的。
怎么用c api来指定不同1808的ID? 用什么API?
回复

使用道具 举报

sanshin

注册会员

积分
125
5#
发表于 2019-8-26 16:35:15 | 显示全部楼层
jefferyzhang 发表于 2019-8-26 15:32
请参看rknn-api 文档《RK3399Pro_Linux&Android_RKNN_API_V0.9.8_20190626》
第3.1.1节:  rknn_init & r ...

Thanks a lot. We will have a try.
回复

使用道具 举报

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

本版积分规则

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


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