专栏底层软件多阶段模型

多阶段模型

已解决
lzsinzju2022-10-11
110
3

多阶段模型在runtime C++程序开发过程中,

1. 二阶段的输入是一阶段的输出是不是可以直接用一阶段的output_Tensor,作为二阶段的input_Tensor?

2. hbDNNWaitTaskDone能否只运行一次和multi_model_batch的sample中一样?但一二阶段有强制的先后顺序.

比如能否通过改写infer_ctrl_param中的priority保证一阶段运行结束才开始二阶段?

3. 有没有诸如Cuda_stream等流式操作的标志位,可以保证内存数据按时序顺序被不同的自定义函数和dnn网络读写。

底层软件
征程3
评论3
0/1000
  • 颜值即正义
    Lv.2

    你好,针对你的几个问题我依次回复下哈:

    问题1:二阶段的输入是一阶段的输出是不是可以直接用一阶段的output_Tensor,作为二阶段的input_Tensor?

    是的,作为数据内存来说是可以直接被调用的,不过你需要确认好数据的类型、尺寸、大小等都是匹配正确的

    2022-12-02
    0
    0
  • 颜值即正义
    Lv.2

    问题2:hbDNNWaitTaskDone能否只运行一次和multi_model_batch的sample中一样?但一二阶段有强制的先后顺序.比如能否通过改写infer_ctrl_param中的priority保证一阶段运行结束才开始二阶段?

    1. multi_model_batch 示例是用于将推理速度非常快的一些小模型打包在一起同时处理,来减少多次中断和调度的开销(因为这些耗时相对小模型来说会显得比较明显),使得 BPU 只需要响应一次中断即可

    2. 而 hbDNNWaitTaskDone 只是一个异步阻塞接口,用来等待当前帧任务执行结束,类似于conditional_varible::wait

    3. infer_ctrl_param 中的 priority 参数仅用于控制不同推理任务的优先级,但这和你所关心的问题应该不太相关。业务逻辑上的数据依赖关系应该由用户自行控制,可以参考下我们的 AI-Benchmark 示例,code/src/simple_example.cc 中其实也会用到 3 个数据依次依赖的组件,就类似于你说的这种情形。

    2022-12-02
    0
    0
  • 颜值即正义
    Lv.2

    问题3:有没有诸如Cuda_stream等流式操作的标志位,可以保证内存数据按时序顺序被不同的自定义函数和dnn网络读写。

    目前没有,业务逻辑上的数据关系需要由用户自行控制。

    2022-12-02
    0
    0