编译并运行Graph
功能介绍
构建完Graph之后,如果您希望直接编译并运行Graph,得到图的执行结果,可以参考本节内容。涉及的主要接口为:
- 调用GEInitialize进行系统初始化(也可在Graph构建前调用),申请系统资源。
- 调用Session构造函数创建Session类对象,申请session资源。
- 调用AddGraph在Session类对象中添加定义好的图。
- 调用RunGraph运行图。
- 调用GEFinalize,释放系统资源。
开发示例
- 包含的头文件。
#include "ge_api.h"
- 申请系统资源。
Graph定义完成后,调用GEInitialize进行系统初始化(也可在Graph定义前调用),申请系统资源。示例代码如下:
std::map<Ascendstring, Ascendstring>config = {{"ge.exec.deviceId", "0"}, {"ge.graphRunMode", "1"}}, {"ge.exec.precision_mode", "allow_fp32_to_fp16"}; Status ret = ge::GEInitialize(config);
可以通过config配置传入ge运行的初始化信息,当前必选的配置参数为sample中的三个,分别用于指定GE实例运行设备,图执行模式(在线推理请配置为0,训练请配置为1),以及算子精度模式。更多配置请参考表1。
- 添加Graph对象并运行Graph。
若想使定义好的Graph运行起来,首先,要创建一个session对象,然后调用AddGraph接口添加图,再调用RunGraph接口执行图。示例代码如下:
std::map <Ascendstring, Ascendstring> options; ge::Session *session = new Session(options); if(session == nullptr) { std::cout << "Create session failed." << std::endl; return FAILED; } Status ret = session->AddGraph(conv_graph_id, conv_graph); if(ret != SUCCESS) { return FAILED; } ret = session->RunGraph(conv_graph_id, input_cov, output_cov); if(ret != SUCCESS) { return FAILED; }
用户可以通过传入options配置图运行相关配置信息,相关配置请参考Session构造函数。
其中图运行完之后的数据保存在Tensor output_cov中。
- 图运行完之后,通过GEFinalize释放资源。
ret = ge::GEFinalize();