将Graph编译为离线模型涉及的主要接口为:
当前支持在一个进程中连续调用模型编译和模型文件保存接口,用于编译和保存多个离线模型。
1 2 |
#include "ge_ir_build.h" #include "ge_api_types.h" |
创建完Graph以后,通过aclgrphBuildInitialize接口进行系统初始化,并申请资源。示例代码如下:
1 2 3 4 |
std::map<AscendString, AscendString> global_options = { {ge::ir_option::SOC_VERSION, "${soc_version}"}, }; auto status = aclgrphBuildInitialize(global_options); |
可以通过传入global_options参数配置离线模型编译初始化信息,当前支持的配置参数请参见aclgrphBuildInitialize支持的配置参数。
其中SOC_VERSION为必选配置,用于指定目标芯片版本,值${soc_version}需要根据实际情况替换。其他参数请用户根据实际需要可选配置。
1 2 3 4 5 6 7 8 9 10 11 |
ModelBufferData model; std::map<AscendString, AscendString> options; PrepareOptions(options); status = aclgrphBuildModel(graph, options, model); if(status == GRAPH_SUCCESS) { cout << "Build Model SUCCESS!" << endl; } else { cout << "Build Model Failed!" << endl; } |
可以通过传入options参数配置离线模型编译配置信息,当前支持的配置参数请参见aclgrphBuildModel支持的配置参数。配置举例:
1 2 3 4 5 |
void PrepareOptions(std::map<AscendString, AscendString>& options) { options.insert({ {ge::ir_option::EXEC_DISABLE_REUSED_MEMORY, "1"} // close resue memory }); } |
1 2 3 4 5 6 7 |
status = aclgrphSaveModel("ir_build_sample", model); if(status == GRAPH_SUCCESS) { cout << "Save Offline Model SUCCESS!" << endl; } else { cout << "Save Offline Model Failed!" << endl; } |
1
|
aclgrphBuildFinalize(); |