同步执行Graph
介绍该场景涉及的主要接口以及调用示例。
功能介绍
Atlas 200/300/500 推理产品、Atlas 200/500 A2推理产品不支持该特性。
构建完Graph之后,如果您希望直接编译并运行Graph,得到图的执行结果,可以参考本节内容。涉及的主要接口为:
开发示例
- 包含的头文件。
1
#include "ge_api.h"
- 申请系统资源。
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参数说明。
- 添加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中。
- 图运行完之后,通过GEFinalize释放资源。
1
ret = ge::GEFinalize();
父主题: 编译并运行Graph