ES (Eager Style) Graph Builder Code Generator
前置要求
环境变量要求
注:环境变量在前置要求中已经被配置,仅列出 gen_esb 所需环境变量列表
- ASCEND_OPP_PATH: 指向安装目录下的opp路径
- LD_LIBRARY_PATH: 指定动态链接库搜索路径的环境变量
功能说明
本程序用于生成 ES 图构建器的 C、C++、Python 代码,包括:
- 所有支持的算子(ops)的C接口
- 所有支持的算子的C++接口
- 所有支持的算子的Python接口
- 聚合头文件,方便用户一次性包含所有算子
- 聚合Python文件,方便用户一次性导入所有算子
使用方法
./gen_esb [--output_dir=DIR] [--module_name=NAME] [--h_guard_prefix=PREFIX] [--exclude_ops=OP_TYPE1,OP_TYPE2]
参数说明
- --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:可选参数,控制排除生成的算子
- 根据
,分隔算子名
- 根据
输出文件说明
- es_<module>_ops_c.h:C接口聚合头文件
- es_<module>_ops.h:C++接口聚合头文件
- es_<module>_ops.py:Python接口聚合文件
- es_<op_type>_c.h:单个算子的C接口头文件
- es_<op_type>.cpp:单个算子的C接口实现文件
- es_<op_type>.h:单个算子的C++接口头文件
- es_<op_type>.py:单个算子的Python接口文件
使用示例
生成到当前目录,使用默认模块名"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
检查环境变量
echo $ASCEND_OPP_PATH
注意事项
- 确保ASCEND_OPP_PATH环境变量已正确设置
- 确保有足够的磁盘空间存储生成的代码文件
- 生成的代码文件数量取决于系统中注册的算子数量
- 保护宏前缀应该以大写字母和下划线组成,避免与C++关键字冲突
错误处理
- 如果环境变量未设置,程序会提示错误并退出
- 如果输出目录创建失败,会回退到当前目录
- 不支持的算子会被记录在生成的代码注释中