Toybrick

rk3399pro npu支持多线程跑同一个模型吗?

111223

新手上路

积分
38
楼主
发表于 2019-3-13 20:26:21    查看: 30366|回复: 11 | [复制链接]    打印 | 只看该作者
在android 应用层开多线程调用c层的rknnapi进行推理,(只初始化了一次),报以下错

03-13 10:32:02.631 19395-19697/com.example. D/mytest: rknn_input_set fail! ret=-3
03-13 10:32:02.631 19395-19699/com.example. D/NPUTransfer: ERROR: socket write fd = 49, n = -1: Bad file descriptor
03-13 10:32:02.631 19395-19699/com.example. E/RKNNAPI: rknn_input_set,  send(MsgInput 0) fail, -9 != 520311!
03-13 10:32:02.631 19395-19700/com.example. E/RKNNAPI: rknn_input_set,  context = 0 except at p_ctx->thread_exit == true, force destory context!
    rknn_input_set,  index = 0 is not in [0, -1]!
03-13 10:32:02.631 19395-19700/com.example. D/mytest: rknn_input_set fail! ret=-5
03-13 10:32:02.633 19395-19699/com.example D/mytest: rknn_input_set fail! ret=-3


    --------- beginning of crash
03-13 10:32:02.634 19395-19696/com.example. A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x8 in tid 19696 (Thread-10), pid 19395 (314.scanproject)
03-13 10:32:02.647 19395-19702/com.example. E/RKNNAPI: rknn_input_set,  context = 0 has been destory, p_ctx = nullptr!
03-13 10:32:02.647 19395-19702/com.example. D/mytest: rknn_input_set fail! ret=-7
03-13 10:32:02.651 19395-19703/com.example. E/RKNNAPI: rknn_input_set,  context = 0 has been destory, p_ctx = nullptr!
03-13 10:32:02.651 19395-19703/com.example. D/mytest: rknn_input_set fail! ret=-7
03-13 10:32:02.661 19395-19708/com.example. E/RKNNAPI: rknn_input_set,  context = 0 has been destory, p_ctx = nullptr!
03-13 10:32:02.661 19395-19708/com.example. D/mytest: rknn_input_set fail! ret=-7
03-13 10:32:02.673 19395-19706/com.example. E/RKNNAPI: rknn_input_set,  context = 0 has been destory, p_ctx = nullptr!
03-13 10:32:02.673 19395-19709/com.example. E/RKNNAPI: rknn_input_set,  context = 0 has been destory, p_ctx = nullptr!
03-13 10:32:02.673 19395-19706/com.example. D/mytest: rknn_input_set fail! ret=-7
03-13 10:32:02.673 19395-19709/com.example. D/mytest: rknn_input_set fail! ret=-7

回复

使用道具 举报

jefferyzhang

版主

积分
13580
沙发
发表于 2019-3-14 09:00:59 | 只看该作者
npu不支持mini batch输入,输入只能是一次一个。
回复

使用道具 举报

shopping

中级会员

积分
410
板凳
发表于 2019-9-16 11:50:32 | 只看该作者
jefferyzhang 发表于 2019-3-14 09:00
npu不支持mini batch输入,输入只能是一次一个。

你好,看了社区其他帖子,问一句。你说 npu 不支持 多线程跑同一个模型,但是支持 多模型一起跑。目前我司的想法是,一块板子两个摄像头(不同视角)同时输入视频数据,同时返回结果(先不考虑硬件计算能力)。那我的技术实现就要同时运行两个算法模型,这个需要利用 opencl来完成,是吗?
回复

使用道具 举报

jefferyzhang

版主

积分
13580
地板
发表于 2019-9-17 09:04:23 | 只看该作者
shopping 发表于 2019-9-16 11:50
你好,看了社区其他帖子,问一句。你说 npu 不支持 多线程跑同一个模型,但是支持 多模型一起跑。目前我 ...

1.2已经支持mini batch输入了。
我们支持多模型同时跑,NPU是分时复用的,跟cl没啥关系。你两个模型都可以跑npu上
回复

使用道具 举报

gwjjj35

注册会员

积分
108
5#
发表于 2019-9-17 11:24:48 | 只看该作者
jefferyzhang 发表于 2019-9-17 09:04
1.2已经支持mini batch输入了。
我们支持多模型同时跑,NPU是分时复用的,跟cl没啥关系。你两个模型都可 ...

那想请问一下,多模型可否是同一个模型呢?一次同时跑两个一样的模型?
回复

使用道具 举报

jefferyzhang

版主

积分
13580
6#
发表于 2019-9-17 11:28:00 | 只看该作者
gwjjj35 发表于 2019-9-17 11:24
那想请问一下,多模型可否是同一个模型呢?一次同时跑两个一样的模型?
...

可以
回复

使用道具 举报

shopping

中级会员

积分
410
7#
发表于 2019-9-17 15:34:48 | 只看该作者

所以如果我想同时跑两个 mobilenet-ssd 模型,我要打开两个终端窗口,在不同窗口下运行 mobilenet-ssd demo或者将两个摄像头的输入组成一个 batch 输入到模型中。本人小白,所以问的比较多,麻烦谅解。
回复

使用道具 举报

jefferyzhang

版主

积分
13580
8#
发表于 2019-9-17 17:59:20 | 只看该作者
shopping 发表于 2019-9-17 15:34
所以如果我想同时跑两个 mobilenet-ssd 模型,我要打开两个终端窗口,在不同窗口下运行 mobilenet-ssd de ...

1.2版本开始已经支持batch输入了,这种做法没有问题。
或者两个进程(线程)单独送自己的数据给不同模型都可以
回复

使用道具 举报

shopping

中级会员

积分
410
9#
发表于 2019-10-18 12:16:18 | 只看该作者
jefferyzhang 发表于 2019-9-17 09:04
1.2已经支持mini batch输入了。
我们支持多模型同时跑,NPU是分时复用的,跟cl没啥关系。你两个模型都可 ...

你好,老哥你说的这个NPU的 “分时复用” ,是不是类似于加了把互斥锁,一个 线程/进程 调用了NPU ,其他 线程/进程  只能等待?
回复

使用道具 举报

jefferyzhang

版主

积分
13580
10#
发表于 2019-10-18 12:20:17 | 只看该作者
shopping 发表于 2019-10-18 12:16
你好,老哥你说的这个NPU的 “分时复用” ,是不是类似于加了把互斥锁,一个 线程/进程 调用了NPU ,其他 ...

NPU是一个IP核,跟你单核CPU是一样的。单核CPU也是分时复用机制,一样可以写多线程代码
回复

使用道具 举报

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

本版积分规则

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


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