# metadef **Repository Path**: dannyays/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**: 2024-07-20 - **Last Updated**: 2024-07-20 ## 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软件包支持的操作系统”与“安装开发环境”章节。 **说明:** Metadef仓源代码与CANN软件包存在配套关系,源码编译前请获取并安装对应版本的CANN软件包。 - 源码编译依赖如下依赖,若环境中不存在,请自行安装。 - gcc:7.5.0版本及以上 (建议7.5.0) - cmake:3.20.0版本及以上 (建议3.20.0) - compile cache,编译器缓存优化工具,加快二次编译速度 ``` sudo apt-get install ccache ``` - `graph-easy` (可选) ```bash sudo apt-get install libgraph-easy-perl ``` ## 编译第三方开源库 `Metadef`仓依赖一些第三方开源库, 在正式编译`Metadef`之前,需要首先完成依赖的三方库编译: ```bash bash build_third_party.sh ``` 此命令下载所有依赖的第三方库源码,并完成完成编译。如果不指定任何选项,上述脚本从`gitee`下载三方库源代码,完成编译后,二进制生成到`./output/third_party`目录。您可以通过`-h`查看脚本选项,选择期望的下载方式和生成路径。该脚本仅需在编译`Metadef`前调用一次,生成的二进制目录不会被其他脚本删除。 当指定源代码目录为本地目录时,本地目录的组织形式为: ``` some-path-name └── libs ├── abseil-cpp │ └── abseil-cpp-20220623.1.tar.gz ├── benchmark │ └── v1.5.5.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 └── zlib └── zlib-v1.2.13.tar.gz ``` ## 编译 Metadef仓提供一键式编译能力,具体可以通过`bash build.sh -h`查看: ```bash bash build.sh --ascend_install_path=${CANN_INSTALL_PATH} ``` `--ascend_install_path`选项的默认值为`/usr/local/Ascend/ascend-tools/latest`,编译完成后会在`output/package`目录下生成`CANN-metadef-linux.{x86_64/aarch64}.run`包 `build.sh`脚本默认从`./output/third_party`下查找三方库,若在执行`build_third_party.sh`时,指定了其他生成三方库的目录,可以通过`build.sh --ascend_3rd_lib_path=<指定的三方库路径>`选项做配置 ## 本地验证(UT/ST) Metadef仓提供一键式编译执行开发者测试,详细配置可通过`bash tests/run_test.sh -h`查看 ```bash bash tests/run_test.sh -u --ascend_install_path=${CANN_INSTALL_PATH} ``` `--ascend_install_path`选项的默认值为`/usr/local/Ascend/ascend-tools/latest` `tests/run_test.sh`脚本查找三方库的方法与`build.sh`脚本相同 ## 安装 编译完成后,可通过如下命令安装或回滚: ```shell # 安装: ./CANN-metadef-linux.{x86_64/aarch64}.run --full --quiet --install-path=${CANN_INSTALL_PATH} # 回滚: ./CANN-metadef-linux.{x86_64/aarch64}.run --rollback --quiet --install-path=${CANN_INSTALL_PATH} ``` ## 贡献指南 针对Metadef仓,开发者准备本地代码与提交PR时需要重点关注如下几点: 1. 请输出满足Google编程规范的代码,详细可参见[Google 开源项目风格指南 ](https://zh-google-styleguide.readthedocs.io/en/latest/)。 2. 提交PR时,请按照PR模板仔细填写本次PR的业务背景、目的、方案等信息。 3. 若您的修改不是简单的bug修复,而是涉及到新增特性、新增接口、新增配置参数或者修改代码流程等,请务必先通过Issue进行方案讨论,以避免您的代码被拒绝合入。若您不确定本次修改是否可被归为“简单的bug修复”,亦可通过提交Issue进行方案讨论。 ### 开发环境配置 开发环境(例如clion)一般直接解析CMakeLists.txt,此时需要配置CMakeLists options: ```bash -DENABLE_OPEN_SRC=True -DENABLE_METADEF_UT=True -DENABLE_METADEF_ST=True -DASCEND_3RD_LIB_PATH=/path/to/thid_paity_lib/build -DASCEND_INSTALL_PATH=/path/to/cann/install ``` 配置方法: * `-DASCEND_3RD_LIB_PATH`: 若在`bash build_third_party.sh`编译第三方库时,通过`--output_path`指定了输出目录,那么将指定的目录配置在该处;若使用了默认目录,则不需要配置该选项 * `-DASCEND_INSTALL_PATH`:使用`bash install_newest_packages.sh`完成CANN包安装后,会打印该选项的配置方法。规则为<指定的CANN包安装目录>/latest