# metadef **Repository Path**: jiangRun1_admin/metadef ## Basic Information - **Project Name**: metadef - **Description**: Ascend Metadata Definition - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 415 - **Created**: 2022-03-23 - **Last Updated**: 2025-04-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # metadef ## 概述 `metadef`,即昇腾元数据定义,即相关数据结构以及对外接口定义. ## 目录结构说明 ```angular2html metadef ├── error_manager # 相关错误码定义 ├── exe_graph | ├── lowering # 执行图构图接口相关实现 | ├── runtime # 执行图执行接口相关实现 ├── graph # 图相关接口实现,包括图缓存模块、序列化 ├── inc | ├── common # 一些公共头文件 | ├── exe_graph # 执行图头文件 | ├── external # 对外发布的头文件(保证兼容性) | ├── graph # 图接口相关头文件 | ├── register # 算子注册头文件 ├── proto # 图相关proto定义 ├── register # 算子注册实现 ├── tests # 开发者测试目录 ``` ## 环境准备 在源码编译前,请确保环境满足如下要求: - 已安装CANN开发套件包(Ascend-cann-toolkit_\\_linux-\)。 CANN开发套件软件包请从[Link](https://www.hiascend.com/developer/download/community/result?module=cann)获取,支持的安装方式及操作系统请参见配套版本的[用户手册](https://hiascend.com/document/redirect/CannCommunityInstSoftware)。 **CANN开发套件包安装命令示例:** - 使用默认路径安装 ```shell ./Ascend-cann-toolkit__linux-.run --install ``` - 若使用root用户安装,安装完成后相关软件存储在`/usr/local/Ascend/ascend-toolkit/latest`路径下。 - 若使用非root用户安装,安装完成后相关软件存储在`$HOME/Ascend/ascend-toolkit/latest`路径下。 - 指定路径安装 ```bash # CANN开发套件包安装命令示例: ./Ascend-cann-toolkit__linux-.run --install --install-path=${install_path} ``` 安装完成后,相关软件存储在`${install_path}`指定路径下。 - 已安装以下依赖: - 源码编译依赖如下依赖,若环境中不存在,请自行安装。 - gcc:7.5.0版本及以上 (建议7.5.0) - cmake:3.20.0版本及以上 (建议3.20.0) - compile cache,编译器缓存优化工具,加快二次编译速度 ```bash # 安装命令示例: sudo apt-get install ccache ``` - `graph-easy` (可选) ```bash # 安装命令示例: sudo apt-get install libgraph-easy-perl ``` ## 源码下载 ```bash git clone https://gitee.com/ascend/metadef.git ``` ## 配置环境变量 配置`ASCEND_INSTALL_PATH`环境变量,指定`Ascend-cann-toolkit`安装后相关软件存储路径。 - `Ascend-cann-toolkit`使用root用户、默认路径安装场景,配置示例: ```shell export ASCEND_INSTALL_PATH=/usr/local/Ascend/ascend-toolkit/latest ``` - `Ascend-cann-toolkit`使用非root用户、默认路径安装场景,配置示例: ```shell export ASCEND_INSTALL_PATH=$HOME/Ascend/ascend-toolkit/latest ``` - `Ascend-cann-toolkit`指定路径安装场景,若安装路径为${install_path},配置示例: ```shell export ASCEND_INSTALL_PATH=${install_path}/ascend-toolkit/latest ``` **说明:** 若开发者使用IDE CLion进行后续的源码编译与测试用例执行,编译执行前需要进行CLion的CMake配置,详细请参见[CLion配置](#clion_set)。 ## 编译第三方库 `Metadef`仓依赖一些第三方库, 在正式编译之前,需要先完成三方库的编译操作,其命令为: ```bash bash build_third_party.sh --output_path=${THIRD_LIB_PATH} ``` 此命令下载所有依赖的第三方库源码包,然后执行编译操作,并将编译结果复制到输出目录。 - `third_party_pkg_path`参数 如果指定了此参数,则脚本会从其指定的目录下取第三方库源码包,否则就会在线下载。 - `enable_github`参数 在线下载的第三方库源码包有两个来源,分别是`gitee`和`github`。当没有指定`third_party_pkg_path`参数时,脚本就会在线下载第三方库源码包,此时如果指定了`enable_github`参数,就会从`github`下载,否则从`gitee`下载。 - `output_path`参数 编译结果目录由此参数指定,其默认值为`./output/third_party`。编译第三方库的输出结果目录可以长期保存,不需要每次重新编译,除非所依赖的第三方库有变更。 您可以通过`bash build_third_party.sh -h`命令查看脚本选项的详细描述。 当指定的源码目录为本地目录时,要求其目录结构为: ```angular2html some-path-name └── libs ├── abseil-cpp │ └── abseil-cpp-20220623.1.tar.gz ├── benchmark │ └── v1.5.5.tar.gz ├── boost │ └── boost_1_82_0.tar.gz ├── cares │ └── c-ares-cares-1_18_1.tar.gz ├── ge_gtest │ └── release-1.11.0.tar.gz ├── ge_nlohmann_json │ └── v3.11.2 │ └── include.zip ├── grpc │ └── grpc-v1.41.1.tar.gz ├── libjpeg-turbo │ └── 2.1.1.tar.gz ├── openssl │ └── openssl-3.0.9.tar.gz ├── protobuf │ └── v3.13.0.tar.gz ├── pybind11 │ └── v2.10.3.tar.gz ├── re2 │ └── re2-2021-11-01.tar.gz ├── symengine │ └── v0.10.1.zip └── zlib └── zlib-v1.2.13.tar.gz ``` ## 编译 `Metadef`提供一键式编译能力,可通过如下命令进行编译: ```shell bash build.sh --ascend_install_path=${ASCEND_INSTALL_PATH} --ascend_3rd_lib_path=${THIRD_LIB_PATH} ``` `--ascend_install_path`选项的默认值为`/usr/local/Ascend/ascend-toolkit/latest`,编译完成后会在`output/package`目录下生成`CANN-metadef-linux..run`软件包,其中``表示操作系统架构,取值包括`x86_64`与`aarch64`。 `build.sh`脚本默认从`./output/third_party`下查找三方库,若在执行`build_third_party.sh`时,指定了其他生成三方库的目录,可以通过`build.sh --ascend_3rd_lib_path=<指定的三方库路径>`选项做配置。 更多编译参数可以通过`bash build.sh -h`查看。 ## 本地验证(UT/ST) `Metadef`仓提供一键式编译执行开发者测试,详细配置可通过`bash tests/run_test.sh -h`查看 ```bash bash tests/run_test.sh -u --ascend_install_path=${ASCEND_INSTALL_PATH} --ascend_3rd_lib_path=${THIRD_LIB_PATH} ``` `--ascend_install_path`选项的默认值为`/usr/local/Ascend/ascend-toolkit/latest` `tests/run_test.sh`脚本查找三方库的方法与`build.sh`脚本相同 ## 安装 编译完成后,可通过如下命令安装: ```shell ./CANN-metadef-linux..run --full --install-path=${install_path}/ascend-toolkit ``` ## 回滚 若您想回退安装的自定义`metadef`软件包,恢复到安装`Ascend-cann-toolkit`后的状态,可执行如下命令。 ```shell ./CANN-metadef-linux..run --rollback --install-path=${install_path}/ascend-toolkit ``` ## 贡献指南 针对`Metadef`仓,开发者准备本地代码与提交PR时需要重点关注如下几点: 1. 请输出满足Google编程规范的代码,详细可参见[Google 项目风格指南 ](https://zh-google-styleguide.readthedocs.io/en/latest/)。 2. 提交PR时,请按照PR模板仔细填写本次PR的业务背景、目的、方案等信息。 3. 若您的修改不是简单的bug修复,而是涉及到新增特性、新增接口、新增配置参数或者修改代码流程等,请务必先通过Issue进行方案讨论,以避免您的代码被拒绝合入。若您不确定本次修改是否可被归为“简单的bug修复”,亦可通过提交Issue进行方案讨论。 ## 附录 ### CLion配置 若开发者使用IDE CLion编译源码并执行测试用例,编译执行前需要进行如配置: 1. 在菜单栏选择“File -> Settings”,进入“Settings”配置页面。 2. 在“Settings”窗口左侧选择“Build,Execution,Deployment -> CMake”,进入“CMake”配置界面。 3. 在“CMake”配置界面进行如下配置。 - Build type,设置为“GCOV”。 - CMake options,设置为如下值: ```bash -DENABLE_OPEN_SRC=True -DENABLE_METADEF_UT=True -DENABLE_METADEF_ST=True -DASCEND_INSTALL_PATH=${ASCEND_INSTALL_PATH} -DASCEND_3RD_LIB_PATH=${THIRD_LIB_PATH} ``` 关于`ASCEND_INSTALL_PATH`的取值说明请参见[配置环境变量](#env_set)。