Toybrick

rk3588 多线程推理延时问题?

baozhiqiang

新手上路

积分
39
楼主
发表于 2024-11-18 14:12:30    查看: 3470|回复: 7 | [复制链接]    打印 | 只看该作者
       看到版主说到瑞芯微的NPU采用多线程推理可以提高推理速度,但本质NPU是分时复用系统,谁抢到时间片就先跑谁,我有个疑问想请版主解释一下,既然是分时复用,那么如果输入都采用零内存拷贝技术,那么使用一个线程对视频推理,和采用多个线程处理视频推理,节省的是什么时间?按理说应该用时是相同的,不甚理解,请版主解惑。
        另外,多线程推理技术,会不会对系统造成一个固定的整体延时?也就是说,假设多线程推理模型的时间是20ms(50帧/s),0时刻开始,按照顺序输入视频帧 ,帧率是30帧/s(推理速度大于帧率),输出端是可以达到实时处理,但是是否有一个整体延时,也就是说必须在100ms(假设)后才能够拿到第一帧的推理结果,之后才能每20ms拿到推理结果?请版主答疑解惑,多谢多谢!!!!
回复

使用道具 举报

jefferyzhang

版主

积分
14925
沙发
发表于 2024-11-18 14:39:26 | 只看该作者
你理解的没错,如果能多线程,0拷贝意义是不大的,特别是输入尺寸比较小的模型。
其实绝大多数产品是无法满足0拷贝需求的,因为需要自行对输入进行前处理,效率也不一定会有rknn写的高。
这个适合那种成本控制的非常严格的小芯片用的比较多,例如1106,1103这种,本身性能就做不到多线程推理,再不做0拷贝那效率就会低很多很多。
回复

使用道具 举报

baozhiqiang

新手上路

积分
39
板凳
 楼主| 发表于 2024-11-18 14:47:18 | 只看该作者
jefferyzhang 发表于 2024-11-18 14:39
你理解的没错,如果能多线程,0拷贝意义是不大的,特别是输入尺寸比较小的模型。
其实绝大多数产品是无法满 ...

多谢版主回复,那么多线程推理技术,会不会对系统造成一个固定的整体延时,这个延时是否和线程的多少有关呢?
回复

使用道具 举报

jefferyzhang

版主

积分
14925
地板
发表于 2024-11-19 08:37:11 | 只看该作者
baozhiqiang 发表于 2024-11-18 14:47
多谢版主回复,那么多线程推理技术,会不会对系统造成一个固定的整体延时,这个延时是否和线程的多少有关 ...

这个取决于线程抢占时间,非实时系统线程调度时间看kernel的调度策略。但这个时间对你程序来说可以忽略不计。
回复

使用道具 举报

baozhiqiang

新手上路

积分
39
5#
 楼主| 发表于 2024-11-19 12:57:54 | 只看该作者
jefferyzhang 发表于 2024-11-19 08:37
这个取决于线程抢占时间,非实时系统线程调度时间看kernel的调度策略。但这个时间对你程序来说可以忽略不 ...

收到,多谢多谢!!
回复

使用道具 举报

cccc

新手上路

积分
14
6#
发表于 2025-6-4 17:10:21 | 只看该作者
请问我使用多线程时帧率虽然提升了,但是cpu占用也相应增加了,使用3线程时cpu占用从不使用线程的90%变成250%,请问有什么办法能让cpu不增加这么多吗
回复

使用道具 举报

jefferyzhang

版主

积分
14925
7#
发表于 2025-6-5 10:47:41 | 只看该作者
cccc 发表于 2025-6-4 17:10
请问我使用多线程时帧率虽然提升了,但是cpu占用也相应增加了,使用3线程时cpu占用从不使用线程的90%变成25 ...

取决于你的模型是否有CPU算子。想要降低cpu占用,就应该优化模型本身,尽可能的用NPU算子
回复

使用道具 举报

cccc

新手上路

积分
14
8#
发表于 2025-6-9 14:58:45 | 只看该作者
jefferyzhang 发表于 2025-6-5 10:47
取决于你的模型是否有CPU算子。想要降低cpu占用,就应该优化模型本身,尽可能的用NPU算子 ...

我的模型运行时打印的信息中OutputOperator是cpu算子,而且时间较长,
OpType             CallNumber   CPUTime(us)  GPUTime(us)  NPUTime(us)  TotalTime(us)  TimeRatio(%)  
---------------------------------------------------------------------------------------------------
ConvExSwish        66           0            0            49313        49313          76.65%        
Concat             13           0            0            4505         4505           7.00%         
OutputOperator     13           3362         0            0            3362           5.23%
但是我在05_RKNN_Compiler_Support_Operator_List_V2.3.2.pdf文档里面并没有找到与OutputOperator相关的,因此想请问OutputOperator是cpu算子吗,是否可以NPU化
回复

使用道具 举报

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

本版积分规则

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


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