更新时间:2021-10-26 GMT+08:00
分享

配置、创建与销毁Graph

Graph主要功能是描述业务包含的Engine及Engine间的数据传输关系,Matrix框架通过Protobuf定义了Graph的数据结构,用户以配置文件的方式来定义Graph配置。

Graph关键字含义请参考Graph关键字,详情请参考《Matrix API参考》。

下文提供了一个简单的graph配置文件,该graph文件会创建一个id为1000的graph业务流,该业务流包含三个Engine,Engine间的数据传输关系如图1所示。

图1 Engine间的数据传输关系
graphs {
    graph_id: 1000           # 单芯片支持多graph,graph id需大于0,且不能重复
    device_id: "0"           # graph运行的芯片id
    priority: 1              # 优先级

    # 用户自定义Engine,可实例化多个Engine,以id区分
    engines {
        id: 2001                                 # 引擎ID
        engine_name: "ObjectDetectionEngine"     # 用户自定义Engine的类名
        side: DEVICE                             # 指定引擎运行在Host/Device侧
        so_name: "./libObjectDetectionEngine.so" # 动态链接库名称及在Host侧的路径,由Matrix框架拷贝到Device侧
        # 用户可自定义配置参数
        ai_config{
            items{
                name: "model"                   # 模型名称
                value: "./FaceDetection.om"     # 模型路径在Host侧的路径,由Matrix框架拷贝到Device侧
            }
            items{
                name: "mode"
                value: "test"
            }
        }
    }
    engines {
        id: 1000
        engine_name: "DecodeEngine"
        side: DEVICE
        so_name: "./libDecodeEngine.so"
    }
    engines {
        id: 2002
        engine_name: "PostProcess"
        side: HOST
    }

    # 描述Engine间的端口连接
    connects {
        src_engine_id: 1000                     #数据传输源引擎ID
        src_port_id: 0                          #数据传输源端口号
        target_engine_id: 2001                  #数据传输目的引擎ID
        target_port_id: 0                       #数据传输目的端口号
    }
    connects {
        src_engine_id: 2001
        src_port_id: 0
        target_engine_id: 2002
        target_port_id: 0
    }
}

Matrix提供的三个常用Graph接口如表1所示,详细介绍请参考《Matrix API参考》。

表1 接口说明

接口

说明

HIAI_StatusT HIAI_Init(uint32_t deviceID)

Ascend 310芯片初始化,请注意此处的芯片ID编号是Ascend 310芯片的绝对编号,在Atlas 500上始终为“0”,npu-smi查询的芯片ID是相对编号。

static HIAI_StatusT Graph::CreateGraph(const std::string& configFile)

读取Graph配置文件,初始化Engine,创建线程和数据传输通道,完成业务流初始化。

static HIAI_StatusT Graph::DestroyGraph(uint32_t graphID)

销毁Graph,运行Engine的析构函数等。

分享:

    相关文档

    相关产品