当前位置: 首页 > news >正文

昇腾/GE ES图构建器生成工具指南

ES (Eager Style) Generator

【免费下载链接】geGE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力,并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge

前置要求

  1. 通过安装指导正确安装toolkit包,并按照指导正确配置环境变量
  2. 通过安装指导正确安装算子ops包(ES 依赖算子原型进行 API 生成),并按照指导正确配置环境变量

环境变量要求

gen_esb 所需环境变量列表:

  • ASCEND_OPP_PATH: 指向安装目录下的opp路径
  • LD_LIBRARY_PATH: 指定动态链接库搜索路径的环境变量

注:上述环境变量无需也不推荐单独配置,默认前置要求中已经配置过的环境变量即满足要求

功能说明

本程序支持两种生成模式

  1. 代码生成模式 生成 ES 图构建器的 C、C++、Python 代码,包括:
  • 所有支持的算子(ops)的C接口
  • 所有支持的算子的C++接口
  • 所有支持的算子的Python接口
  • 聚合头文件,方便用户一次性包含所有算子
  • 聚合Python文件,方便用户一次性导入所有算子
  1. 历史原型库生成模式 生成历史原型结构化数据,包括:
  • 版本索引
  • 版本元信息
  • 该版本的算子原型数据

使用方法

代码生成模式

gen_esb [--output_dir=DIR] [--module_name=NAME] [--h_guard_prefix=PREFIX] [--exclude_ops=OP_TYPE1,OP_TYPE2] [--history_registry=PKG_DIR] [--release_version=VER]

历史原型库生成模式

gen_esb --es_mode=extract_history --release_version=VER [--output_dir=DIR] [--release_date=YYYY-MM-DD] [--branch_name=BRANCH]

注:因为前置要求中已经配置过环境变量,此时gen_esb已经被添加到了PATH环境变量中,因此可直接执行

参数说明

  • --es_mode:可选参数,指定生成模式,支持codegenextract_history如果不指定,默认codegen
  • --output_dir:可选参数,指定生成的目标目录 如果不指定,默认输出到当前目录
  • --module_name:可选参数,控制聚合头文件的命名
    • "math" -> es_math_ops_c.h, es_math_ops.h, es_math_ops.py
    • "all" -> es_all_ops_c.h, es_all_ops.h, es_all_ops.py
    • 不传递 -> 默认为"all"
  • --h_guard_prefix:可选参数,控制生成的头文件保护宏前缀,用于可能的内外部算子同名情况的区分
    • 如果不指定,使用默认前缀
    • 指定时,拼接默认前缀
    • python文件不感知此参数,同名场景通过不同的路径避免冲突
  • --exclude_ops:可选参数,控制排除代码生成的算子
    • 根据,分隔算子名
  • --history_registry:可选参数,指定代码生产的历史原型库目录
    • 如果不指定,默认不启用历史原型库
    • 指定时,生成的C++接口会包含历史原型库中兼容的版本信息
  • --release_version:
    • 代码生成模式:可选参数,与--history_registry配合使用,指定当前版本号,生成的C++接口包含该版本的兼容版本信息;如果不指定,生成当前日期为基准兼容的历史版本
    • 历史原型库生成模式:必填参数,指定当前历史原型数据对应的版本号
  • --release_date:可选参数,控制历史原型结构化数据的发布日期,格式YYYY-MM-DD
    • 如果不指定,使用当前日期
  • --branch_name:可选参数,控制历史原型结构化数据的发布分支名

输出文件说明

代码生成模式输出
  • es_ _ops_c.h:C接口聚合头文件
  • es_ _ops.h:C++接口聚合头文件
  • es_ _ops.py:Python接口聚合文件
  • es_<op_type>_c.h:单个算子的C接口头文件
  • es_<op_type>.cpp:单个算子的C接口实现文件
  • es_<op_type>.h:单个算子的C++接口头文件
  • es_<op_type>.py:单个算子的Python接口文件
历史原型库生成模式输出
  • index.json:版本索引
  • registry/ /metadata.json:版本元信息
  • registry/ /operators.json:该版本算子原型数据

使用示例

生成代码到当前目录,使用默认模块名"all",默认保护宏前缀

gen_esb

生成代码到指定目录,使用默认模块名"all",默认保护宏前缀

gen_esb --output_dir=./output

生成代码到指定目录,使用"math"模块名,默认保护宏前缀

gen_esb --output_dir=./output --module_name=math

生成代码到指定目录,使用"all"模块名,默认保护宏前缀

gen_esb --output_dir=./output --module_name=all

生成代码到指定目录,使用"math"模块名,自定义保护宏前缀"MY_CUSTOM"

gen_esb --output_dir=./output --module_name=math --h_guard_prefix=MY_CUSTOM

生成代码到指定目录,使用"math"模块名,自定义保护宏前缀"MY_CUSTOM",并排除 Add 算子生成

gen_esb --output_dir=./output --module_name=math --h_guard_prefix=MY_CUSTOM --exclude_ops=Add

生成代码到指定目录,使用"math"模块名,默认保护宏前缀,生成的C++接口会包含math历史原型目录中以当前日期为基准筛选的兼容版本信息

./gen_esb --output_dir=./output --module_name=math --history_registry=/${CANN_INSTALL_PATH}/cann/opp/history_registry/math

生成代码到指定目录,使用"math"模块名,默认保护宏前缀,生成的C++接口会包含math历史原型目录中"8.0.RC2"版本兼容的历史版本信息

./gen_esb --output_dir=./output --module_name=math --history_registry=/${CANN_INSTALL_PATH}/cann/opp/history_registry/math --release_version=8.0.RC2

生成历史原型结构化数据到当前目录,发布版本为"8.0.RC1",默认发布日期为当前日期

./gen_esb --es_mode=extract_history --release_version=8.0.RC1

生成历史原型结构化数据到指定目录,发布版本为"8.0.RC1",默认发布日期为当前日期

./gen_esb --es_mode=extract_history --release_version=8.0.RC1 --output_dir=/${CANN_INSTALL_PATH}/cann/opp/history_registry/math

生成历史原型结构化数据到指定目录,发布版本为"8.0.RC1",自定义发布日期"2024-09-30",分支名为"master"

./gen_esb --es_mode=extract_history --release_version=8.0.RC1 --output_dir=/${CANN_INSTALL_PATH}/cann/opp/history_registry/math --release_date=2024-09-30 --branch_name=master

注意事项

  1. 确保环境变量已正确设置
  2. 确保有足够的磁盘空间存储生成的代码文件
  3. 生成的代码文件数量取决于系统中注册的算子数量
  4. 保护宏前缀应该以大写字母和下划线组成,避免与C++关键字冲突

错误处理

  • 如果环境变量未设置,程序会提示错误并退出
  • 如果输出目录创建失败,会回退到当前目录
  • 不支持的算子会被记录在生成的代码注释中

【免费下载链接】geGE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力,并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/1120527/

相关文章:

  • 5分钟掌握DuckLake:SQL原生数据湖的现代数据管理方案
  • 为什么选择JupyterHub部署Docker?单主机多用户Jupyter环境终极解决方案
  • 特种电路板镀覆工艺与表面处理关键技术解析
  • 国内合规使用GPT-4级AI的5种实测方案
  • Tailor vs 传统hprof工具:为什么它能让你的异常分析效率提升10倍
  • 计算机毕业设计之springboot智能停车场管理系统的设计与实现
  • ReScript genType 与 JavaScript 互操作:导入导出双向绑定的完整解析
  • Flipper Zero Unleashed固件NFC功能终极指南:从入门到精通掌握NFC密钥管理
  • Java计算机毕设之智慧医院医疗器械全生命周期管理系统的设计与实现 医疗机构设备采购招投标与入库管理系统(完整前后端代码+说明文档+LW,调试定制等)
  • 5步快速上手Autoware:全球领先的开源自动驾驶框架终极指南
  • ReScript genType 核心功能详解:从基础类型到复杂组件的自动转换
  • 3步搞定Saber手写笔记:跨平台安装终极指南
  • Spirit Web Player入门教程:从安装到第一个动画播放的5个简单步骤
  • 告别繁琐:postcss-write-svg让SVG与CSS无缝融合的5个技巧
  • 2026大模型选型实战指南:性能、延迟与成本的动态平衡
  • JMeter+InfluxDB+Grafana性能测试监控平台搭建与实战
  • d3-annotation API完全参考:掌握注释配置的终极指南
  • AI网课摘要工具实测:语义压缩率与复习触发智能度深度解析
  • 终极指南:10分钟快速掌握AI语音克隆神器RVC
  • Packtpub-crawler性能优化:提升下载速度和稳定性的10个技巧
  • Python-Backdoor高级技巧:利用LaZagne和WinPwnage实现密码窃取与权限提升
  • 如何用Spotube打造你的专属音乐世界:5个超实用技巧
  • 如何用switch.vim提升编程效率:从true/false到复杂模式的完整指南
  • 如何快速解决多系统iOS应用包管理问题:终极实战指南
  • 如何使用CSS-Filters-Polyfill:从声明式到编程式的终极实现方案
  • 如何在macOS菜单栏实现农历日历功能:LunarBar终极指南
  • Packtpub-crawler故障排除:10个常见问题及解决方案完全手册
  • 3步搞定Hermes WebUI三容器部署:为什么选择微服务架构更高效?
  • 让AI助手变身金融分析师:Financial Datasets MCP Server深度解析
  • [智能体-632]:OpenClaw web_search /web_fetch/browser 完整使用详解(含配置、两种调用方式、实战示例)