文档
注册

同步执行Graph

介绍该场景涉及的主要接口以及调用示例。

功能介绍

Atlas 200/300/500 推理产品Atlas 200/500 A2推理产品不支持该特性

构建完Graph之后,如果您希望直接编译并运行Graph得到图的执行结果,可以参考本节内容。涉及的主要接口为:

  1. 调用GEInitialize进行系统初始化(也可在Graph构建前调用),申请系统资源。
  2. 调用Session构造函数创建Session类对象,申请Session资源。
  3. 调用AddGraph在Session类对象中添加定义好的图。
  4. 调用RunGraph运行图。
  5. 调用GEFinalize,释放系统资源。

开发示例

  1. 包含的头文件。
    1
    #include "ge_api.h"
    
  2. 申请系统资源。

    Graph定义完成后,调用GEInitialize进行系统初始化(也可在Graph定义前调用),申请系统资源。示例代码如下:

    1
    2
    3
    std::map<AscendString, AscendString>config = {{"ge.exec.deviceId", "0"},
                                                  {"ge.graphRunMode", "1"}};
    Status ret = ge::GEInitialize(config);
    

    可以通过config配置传入ge运行的初始化信息,配置参数ge.exec.deviceId和ge.graphRunMode,分别用于指定GE实例运行设备,图执行模式(在线推理请配置为0,训练请配置为1)。更多配置请参考options参数说明

  3. 添加Graph对象并运行Graph。
    若想使定义好的Graph运行起来,首先,要创建一个session对象,然后调用AddGraph接口添加图,再调用RunGraph接口执行图。示例代码如下:
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    std::map <AscendString, AscendString> options;
    ge::Session *session = new Session(options);
    if(session == nullptr) {
      std::cout << "Create session failed." << std::endl;
      ...
      ...
      //释放资源
      ge::GEFinalize();  
      return FAILED;
    }
    uint32_t conv_graph_id = 0;
    ge::Graph conv_graph;
    Status ret = session->AddGraph(conv_graph_id, conv_graph);
    if(ret != SUCCESS) {
      ...
      ...
      //释放资源
      ge::GEFinalize();
      delete session;
      return FAILED;
    }
    std::vector<ge::Tensor> input_cov;
    std::vector<ge::Tensor> output_cov;
    ret = session->RunGraph(conv_graph_id, input_cov, output_cov);
    if(ret != SUCCESS) {
      ...
      ...
      //释放资源
      ge::GEFinalize();
      delete session;
      return FAILED;
    }
    

    用户可以通过传入options配置图运行相关配置信息,相关配置请参考Session构造函数

    其中图运行完之后的数据保存在Tensor output_cov中。

  4. 图运行完之后,通过GEFinalize释放资源。
    1
    ret = ge::GEFinalize();
    
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词