
ES API 生成说明【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge本文档说明当前测试框架下Eager Style (ES) API的生成方式以及当需要其它算子的 ES API 构图时应修改的位置。一、ES API 当前是如何生成的1.1 整体流程ES API 采用“算子原型 generate_es_package.cmake函数”的方式生成算子原型在proto/test_ops.h中用REG_OP(OpName)...OP_END_FACTORY_REG(OpName)添加算子原型。原型库将上述文件编译为动态库test_ops_proto该库在加载时会向 GE 注册其中所有算子。代码生成CMake 在配置/构建时调用gen_esb工具为每个算子生成 C / C 的 ES 构图 API。产物生成es_ge_test_ops.h、es_ge_test_ops_c.h以及每个算子对应的es_OpType.cpp、es_OpType.h等并编译成库es_ge_test。因此能参与 ES API 生成的算子必须先在proto/test_ops.h里用 REG_OP 注册。1.2 关键组件与路径组件路径/说明算子原型定义tests/framework/eager_style_graph_builder/proto/test_ops.h及同目录test_ops.cc生成脚本cmake/generate_es_package.cmake提供add_es_library本目录 CMaketests/framework/eager_style_graph_builder/CMakeLists.txt生成产物目录构建目录下eager_style_graph_builder/build/es_output/头文件在include/es_ge_test/1.3 生成触发方式CMake在tests/framework/eager_style_graph_builder/CMakeLists.txt中通过include(generate_es_package.cmake)引入生成算子的cmake函数。先定义并编译算子原型库test_ops_proto源文件为proto/test_ops.cc会包含test_ops.h中的 REG_OP。再调用add_es_library( ES_LINKABLE_AND_ALL_TARGET es_ge_test OPP_PROTO_TARGET test_ops_proto OUTPUT_PATH ${ES_OUTPUT_PATH} )add_es_library会根据test_ops_proto的输出路径得到算子原型所在目录在构建时设置ASCEND_OPP_PATH并执行gen_esb。gen_esb 加载该路径下的算子库生成 C/C 代码。将生成代码编译为es_ge_test的动态库并安装到ES_OUTPUT_PATH。因此ES API 的算子集合完全由“被 gen_esb 加载的那份算子原型”决定当前就是test_ops_proto所包含的 REG_OP。1.4 与 gen_esb 的对应关系gen_esb 的输入环境变量ASCEND_OPP_PATH指向的目录即由test_ops_proto推导出的 OPP 路径。gen_esb 会加载该路径下的算子 .so读取其中通过 REG_OP 注册的算子元信息然后为每个算子生成C 接口es_OpType.cpp 声明在es_ge_test_ops_c.hC 接口es_OpType.h汇总在es_ge_test_ops.h二、需要其它算子的 ES API 构图时该改哪里若希望用更多算子的 ES API 构图只需保证这些算子在 gen_esb 运行时的“算子原型库”里被注册。当前该库就是由本目录下的proto/构建出的test_ops_proto。2.1 增加新算子修改位置tests/framework/eager_style_graph_builder/proto/test_ops.h或配合proto/test_ops.cc操作在test_ops.h中按现有格式增加一行REG_OP(NewOpName)...OP_END_FACTORY_REG(NewOpName)定义好输入/输出/属性可参考同文件中的算子原型。若仅头文件即可完成注册则只需改test_ops.h。若该算子在其他模块已有 REG_OP 定义也可在test_ops.cc里#include对应头文件保证链接进test_ops_proto.so。保存后重新构建gen_esb 会生成 对应的es算子并纳入es_ge_test_ops.h/es_ge_test_ops_c.h。测试用例中即可使用 C#include es_ge_test_ops.h调用es::NewOpName(...)等。使用 C#include es_ge_test_ops_c.h调用生成的 C 函数。更多add_es_library参数与行为见cmake/generate_es_package.cmake内注释。【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考