专栏算法工具链如何通过增加线程数量假加快推理速度

如何通过增加线程数量假加快推理速度

已解决
红鲤鱼绿鲤鱼与驴2025-09-04
48
7

地平线J3芯片

遇到问题: hrt_model_exec infer --frame_count 2000 --thread_num=1 --core_id 0 --profiler_path ./    各位大佬好,请问设置thread_num数量为什么可以提升推理速度呢,我应该如何将多线程用到我的C++代码推理中,额能否提供一下示例,多线程与用BPU双核推理的加速有什么不同呢?

另外问一下,如果训练代码中有归一化的操作,转换模型需要设置scale,yaml中还设置了remove Quantize的算子,是不是本身不会产生归一化再饭归一化,而是直接使用YUV的uint8数据在BPU上及逆行推理,不需要CPU算子进行量化呢?

算法工具链
征程3技术深度解析
评论4
0/1000
  • Huanghui
    Lv.5

    你好,thread_num设置大于1能提高推理速度是因为多个线程能将Bpu无间断运行,在一个模型推理任务当中,要经过前处理,模型推理,后处理三个阶段。前后处理所用的都是cpu,中间模型推理用的是bpu。但是一旦这个任务开启,在前后处理阶段用的是cpu,此时bpu是空闲的,如果设置成多线程,在第二个线程开启时刻,第二个线程的前处理与第一个现成的BPU推理时间会重合,这样,等第二个线程前处理完成,刚好无缝衔接到BPU推理阶段,这样BPU利用率就拉满了,不会断断续续的被占用。

    2025-09-04
    0
    1
    • 红鲤鱼绿鲤鱼与驴回复Huanghui:

      好的,感谢

      2025-09-04
      0
  • Huanghui
    Lv.5

    归一化只是你的数据前处理的过程,在推理时候,yuv是你的原始数据类型,需要转换成你训练时候这个模型的输入数据,如RGB,你若在yaml文件中指定input_type_train=rgb,input_type_rt=yuv,模型会自动插入转换节点在模型内部转换

    2025-09-04
    0
    0
  • 费小财
    Lv.5

    --thread_num=1的参数应该可以支持多线程的

    2025-09-08
    0
    0
  • DR_KAN
    Lv.4

    hrt_model_exec应该是提供了源码,可以参考里面的视线。提升推理速度本质是提升了吞吐量/FPS,一个线程的模型在运行到CPU部分的时候,可以运行另一个线程的模型的BPU部分,这样BPU占用就高了。

    2025-09-08
    0
    2
    • 红鲤鱼绿鲤鱼与驴回复DR_KAN:

      方便提供一下源码位置吗,谢谢啦

      2025-09-08
      0
    • DR_KAN回复红鲤鱼绿鲤鱼与驴:

      你下个比较新的J3 OE包,然后/ddk/package/board/hrt_tools/src就是

      2025-09-08
      0