From 5789040f11ecd18986be56fb2fb97a096ff43cc0 Mon Sep 17 00:00:00 2001 From: qq_44359711 Date: Wed, 24 Sep 2025 16:36:02 +0800 Subject: [PATCH 1/4] fix readme --- README.md | 35 +++++++++---------- ...27\345\255\220\345\207\272\345\217\221.md" | 10 +++--- ...21\344\270\216\346\236\204\345\273\272.md" | 2 +- 3 files changed, 23 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index 632697a8..d6fd70f7 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ Ascend Transformer Boost加速库(下文简称为ATB加速库)是一款高 ## 什么是ATB ### ATB介绍 -Ascend Transformer Boost加速库(下文简称为ATB加速库)是一款高效、可靠的加速库,基于华为Ascend AI处理器,专门为Transformer模型的训练和推理而设计。 +Ascend Transformer Boost加速库是一款高效、可靠的加速库,基于华为Ascend AI处理器,专门为Transformer模型的训练和推理而设计。 ### 软件架构 加速库接口功能主要分成三部分: - 提供基础原生的算子(Operation),用户可以根据需求使用对应的算子完成计算功能。 @@ -48,13 +48,12 @@ ascend-transformer-boost ├── scripts //脚本文件存放目录 ├── src //主体源代码目录 │ ├── atb -│ ├── cinterface //包含 C 接口部分的源代码 -│ ├── include │ ├── kernels │ │ ├── configs //支持的配置说明 │ │ ├── document //文档目录 -│ │ ├── include +│ │ ├── include //存放各算子的头文件 │ │ ├── kernels //单算子存放目录 +│ │ ├── lcal //通信算子存放目录 │ │ ├── mixkernels //融合算子存放目录 │ │ ├── tbe_adapter //TBE 适配器相关的源代码 │ │ └── CMakeLists.txt @@ -99,7 +98,7 @@ pip3 install attrs cython 'numpy>=1.19.2,<=1.24.0' decorator sympy cffi pyyaml p ### 基础工具版本要求与安装 -安装CANN之后,还需要安装一些工具方便后续开发,参见以下内容: +安装CANN之后,您可安装一些工具方便后续开发,参见以下内容: * [CANN依赖列表](https://www.hiascend.com/document/detail/zh/canncommercial/82RC1/softwareinst/instg/instg_0045.html?Mode=PmIns&InstallType=local&OS=Debian&Software=cannToolKit) * [CANN安装后操作](https://www.hiascend.com/document/detail/zh/canncommercial/82RC1/softwareinst/instg/instg_0094.html?Mode=PmIns&InstallType=local&OS=Debian&Software=cannToolKit) @@ -120,22 +119,22 @@ pip3 install attrs cython 'numpy>=1.19.2,<=1.24.0' decorator sympy cffi pyyaml p ``` 注意:该编译过程涉及①拉取算子库/MKI并编译②加速库的编译两个过程。更多命令介绍可查看ATB仓`scripts/build.sh`文件。 - 无法获取ascend-op-common-lib代码仓时,可通过安装nnal软件包获取对应so文件
- - 安装步骤可参考 `run包使用` - - 代码及软件包版本对应关系:
+ - 安装步骤可参考[run包使用](#run-package-usage) + - 代码及软件包版本对应关系: nnal软件包需保持和toolkit及kernels软件包版本一致 - |CANN|代码分支| - |-|-| - |CANN 8.1.RC1|br_feature_cann_8.2.RC1_0515POC_20250630| + | CANN | 代码分支 | + | ------------ | ---------------------------------------- | + | CANN 8.1.RC1 | br_feature_cann_8.2.RC1_0515POC_20250630 | - 执行 ```sh source {install path}/nnal/atb/set_env.sh export ATB_BUILD_DEPENDENCY_PATH=${ATB_HOME_PATH} ``` - - run包使用
+ - run包使用 - run包获取 - 1. 进入网址:https://www.hiascend.com/developer/download/commercial - 2. 产品系列选择服务器,产品型号根据设备型号选择,选择所需解决方案版本,随后在CANN区域选择软件包跟随指引即可获取相关run包 + 1. 进入网址:https://www.hiascend.com/developer/download/commercial + 2. 产品系列选择服务器,产品型号根据设备型号选择,选择所需解决方案版本,随后在CANN区域选择软件包跟随指引即可获取相关run包 - 软件包名为:Ascend-cann-atb_{version}_linux-{arch}.run
其中,{version}表示软件版本号,{arch}表示CPU架构。 - 安装run包(需要依赖cann环境) @@ -171,11 +170,11 @@ outputs = op.forward([x, y]) torch.npu.synchronize() ``` -代码编写指导可访问[算子使用指导(ATB Python API)-CANN商用版8.2.RC1-昇腾社区](https://www.hiascend.com/document/detail/zh/canncommercial/82RC1/acce/ascendtb/ascendtb_0077.html)。 +代码编写指导可访问[算子使用指导(ATB Python API)-昇腾社区](https://www.hiascend.com/document/detail/zh/canncommercial/82RC1/acce/ascendtb/ascendtb_0077.html)。 #### C++ -在ATB仓库的`example/op_demo`目录下,存放了多个不依赖测试框架、即编可用的算子调用Demo示例。进入对应目录执行如下命令就可完成一个算子的调用执行。代码完整内容可参考`example\op_demo\faupdate\faupdate_demo.cpp`,下面仅展示其核心内容: +在ATB仓库的`example/op_demo`目录下,存放了多个不依赖测试框架、即编可用的算子调用Demo示例。进入对应目录执行如下命令就可完成一个算子的调用执行。代码完整内容可参考`example/op_demo/faupdate/faupdate_demo.cpp`,下面仅展示其核心内容: ```c++ // 设置卡号、创建context、设置stream atb::Context *context = nullptr; @@ -225,7 +224,7 @@ CHECK_STATUS(DestroyContext(context)); // context,全局资源,后释放 CHECK_STATUS(aclFinalize()); ``` 文件编译说明:进入`example/op_demo/faupdate`,执行`bash build.sh`完成编译和执行。 -代码编写指导:可访问[单算子-CANN商用版8.2.RC1-昇腾社区](https://www.hiascend.com/document/detail/zh/canncommercial/82RC1/acce/ascendtb/ascendtb_0046.html)。 +代码编写指导:可访问[单算子-昇腾社区](https://www.hiascend.com/document/detail/zh/canncommercial/82RC1/acce/ascendtb/ascendtb_0046.html)。 #### 样例安全声明 `example`目录下的样例旨在提供快速上手、开发和调试ATB特性的最小化实现,其核心目标是使用最精简的代码展示ATB核心功能,**而非提供生产级的安全保障**。与成熟的生产级使用方法相比,此样例中的安全功能(如输入校验、边界校验)相对有限。 @@ -234,8 +233,8 @@ ATB不推荐用户直接将样例作为业务代码,也不保证此种做法 ### 日志和环境变量说明 - 加速库日志现在已经部分适配CANN日志,环境变量说明请参考 - **[CANN商用版文档/环境变量参考](https://www.hiascend.com/document/detail/zh/canncommercial/82RC1/maintenref/envvar/envref_07_0119.html)**。 -- 由于CANN日志暂时没有ATB模块,ASCEND_MODULE_LOG_LEVEL请勿设置ATB + **[CANN商用版文档/环境变量参考](https://www.hiascend.com/document/detail/zh/canncommercial/82RC1/maintenref/envvar/envref_07_0119.html)**; +- 由于CANN日志暂时没有ATB模块,ASCEND_MODULE_LOG_LEVEL请勿设置ATB。 ## 自定义算子开发 您可参考以下文档进行自定义算子的开发: diff --git "a/docs/\344\273\216\345\274\200\345\217\221\344\270\200\344\270\252\347\256\200\345\215\225\347\256\227\345\255\220\345\207\272\345\217\221.md" "b/docs/\344\273\216\345\274\200\345\217\221\344\270\200\344\270\252\347\256\200\345\215\225\347\256\227\345\255\220\345\207\272\345\217\221.md" index f4f3d191..88bb1f93 100644 --- "a/docs/\344\273\216\345\274\200\345\217\221\344\270\200\344\270\252\347\256\200\345\215\225\347\256\227\345\255\220\345\207\272\345\217\221.md" +++ "b/docs/\344\273\216\345\274\200\345\217\221\344\270\200\344\270\252\347\256\200\345\215\225\347\256\227\345\255\220\345\207\272\345\217\221.md" @@ -118,7 +118,7 @@ ATB的算子开发流程如图所示: return paramsJson; } ``` -- `src/atb/core/param_compare.cpp`文件中增加`ASDOPS_PARAM_COMPARE_MAP`的键值对: +- `src/atb/utils/param_compare.cpp`文件中增加`ASDOPS_PARAM_COMPARE_MAP`的键值对: ```c++ {typeid(AsdOps::OpParam::Addcustom).hash_code(), ParamCompareFuncImpl}, ``` @@ -128,7 +128,7 @@ ATB的算子开发流程如图所示: ## ATB算子实现 ATB算子实现主要包括:kernel侧算子实现和host侧tiling实现。 ### tiling开发 -tiling开发的核心概念:`TilingData`、`Workspace`、`TilingKey`、`BlockDim`等,可访问[术语表-CANN商用版8.2.RC1-昇腾社区](https://www.hiascend.com/document/detail/zh/canncommercial/82RC1/opdevg/Ascendcopdevg/atlas_ascendc_10_00013.html)查看。 +tiling开发的核心概念:`TilingData`、`Workspace`、`TilingKey`、`BlockDim`等,可访问[术语表-昇腾社区](https://www.hiascend.com/document/detail/zh/canncommercial/82RC1/opdevg/Ascendcopdevg/atlas_ascendc_10_00013.html)查看。 #### tiling_data.h @@ -222,7 +222,7 @@ Status AddcustomTiling(const LaunchParam &launchParam, KernelInfo &kernelInfo) } // namespace AsdOps ``` ### kernel开发 -kernel相关的`Compute`、`CopyIn`、`CopyOut`等概念,可访问[术语表-CANN商用版8.2.RC1-昇腾社区](https://www.hiascend.com/document/detail/zh/canncommercial/82RC1/opdevg/Ascendcopdevg/atlas_ascendc_10_00013.html)查看。 +kernel相关的`Compute`、`CopyIn`、`CopyOut`等概念,可访问[术语表-昇腾社区](https://www.hiascend.com/document/detail/zh/canncommercial/82RC1/opdevg/Ascendcopdevg/atlas_ascendc_10_00013.html)查看。 #### addcustom.cpp 文件路径:`src/kernels/kernels/addcustom/op_kernel/addcustom.cpp` 主要功能:根据tiling信息完成所有数据的搬运和计算。 @@ -591,8 +591,8 @@ private: #include "addcustom_operation.h" #include "addcustom_ops_runner.h" -#include "atb/core/atb_operation_ir_cfg.h" -#include "atb/core/op_param_funcs.h" +#include "atb/operation/atb_operation_ir_cfg.h" +#include "atb/operation/op_param_funcs.h" #include "atb/utils/operation_util.h" #include "atb/utils/param_to_json.h" #include "atb/utils/singleton.h" diff --git "a/docs/\347\274\226\350\257\221\344\270\216\346\236\204\345\273\272.md" "b/docs/\347\274\226\350\257\221\344\270\216\346\236\204\345\273\272.md" index 08deec06..8bccca5b 100644 --- "a/docs/\347\274\226\350\257\221\344\270\216\346\236\204\345\273\272.md" +++ "b/docs/\347\274\226\350\257\221\344\270\216\346\236\204\345\273\272.md" @@ -78,4 +78,4 @@ ATB的基本编译命令是`bash build.sh`,默认构建模式下生成版本 ​**文件名**​:`scripts/set_env.sh` 加速库安装完成后,提供进程级环境变量设置脚本`set_env.sh`,以自动完成环境变量设置,用户进程结束后自动失效。 -若想查看相关变量含义说明,可访问[环境变量参考-CANN商用版8.2.RC1-昇腾社区](https://www.hiascend.com/document/detail/zh/canncommercial/82RC1/acce/ascendtb/ascendtb_0032.html)。 +若想查看相关变量含义说明,可访问[环境变量参考-昇腾社区](https://www.hiascend.com/document/detail/zh/canncommercial/82RC1/maintenref/envvar/envref_07_0119.html)。 -- Gitee From 17660ca242f0d68362c9132a8c1626a01dfc659e Mon Sep 17 00:00:00 2001 From: qq_44359711 Date: Thu, 25 Sep 2025 19:06:07 +0800 Subject: [PATCH 2/4] update --- ...345\274\200\345\217\221\346\214\207\345\215\227.md" | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git "a/docs/\345\274\200\345\217\221\346\214\207\345\215\227.md" "b/docs/\345\274\200\345\217\221\346\214\207\345\215\227.md" index 00063cc1..c767169c 100644 --- "a/docs/\345\274\200\345\217\221\346\214\207\345\215\227.md" +++ "b/docs/\345\274\200\345\217\221\346\214\207\345\215\227.md" @@ -167,7 +167,15 @@ ``` - 在该文件的`g_funcMap`、`g_update_funcMap`中也要增加对应键值对。 + 在该文件的`g_funcMap`中增加对应键值对: + ```c++ + {"FastSoftMaxOperation", &FastSoftMaxOperationCreate}, + ``` + + 在该文件的`g_update_funcMap`增加对应键值对: + ``` + {"FastSoftMaxOperation", &FastSoftMaxOperationUpdate}, + ``` * 在`include/atb/train_op_params.h`,新增 -- Gitee From 658c9a2c82015776e19fa3536a7b74e71180fc13 Mon Sep 17 00:00:00 2001 From: qq_44359711 Date: Thu, 25 Sep 2025 20:12:15 +0800 Subject: [PATCH 3/4] update --- ...6\227\345\255\220\345\207\272\345\217\221.md" | 10 +++++----- ...4\200\345\217\221\346\214\207\345\215\227.md" | 16 ++++++++-------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git "a/docs/\344\273\216\345\274\200\345\217\221\344\270\200\344\270\252\347\256\200\345\215\225\347\256\227\345\255\220\345\207\272\345\217\221.md" "b/docs/\344\273\216\345\274\200\345\217\221\344\270\200\344\270\252\347\256\200\345\215\225\347\256\227\345\255\220\345\207\272\345\217\221.md" index 88bb1f93..48de6e29 100644 --- "a/docs/\344\273\216\345\274\200\345\217\221\344\270\200\344\270\252\347\256\200\345\215\225\347\256\227\345\255\220\345\207\272\345\217\221.md" +++ "b/docs/\344\273\216\345\274\200\345\217\221\344\270\200\344\270\252\347\256\200\345\215\225\347\256\227\345\255\220\345\207\272\345\217\221.md" @@ -21,7 +21,7 @@ ATB的算子开发流程如图所示: └── addcustom_operation.cpp // shape验证 ``` -- 在`src/ops_infer`下新增目录`addcustom`,该目录下主要存放addcustom算子接入ATB框架部分的代码,文件具体内容见后文,目录结构如下: +- 在`src/ops/ops_infer`下新增目录`addcustom`,该目录下主要存放addcustom算子接入ATB框架部分的代码,文件具体内容见后文,目录结构如下: ``` addcustom ├── addcustom_operation.cpp // atb接口实现 @@ -459,7 +459,7 @@ ATB算子开发相比其它非ATB算子开发的过程,在ATB算子实现之 ### Runner #### addcustom_ops_runner.h -文件路径:`src/ops_infer/addcustom/addcustom_ops_runner.h` +文件路径:`src/ops/ops_infer/addcustom/addcustom_ops_runner.h` 主要功能:后端处理逻辑函数声明头文件。 ```c++ #ifndef ATB_ADDCUSTOM_OPS_RUNNER_H @@ -486,7 +486,7 @@ private: #endif // ATB_ADDCUSTOM_OPS_RUNNER_H ``` #### addcustom_ops_runner.cpp -文件路径:`src/ops_infer/addcustom/addcustom_ops_runner.cpp` +文件路径:`src/ops/ops_infer/addcustom/addcustom_ops_runner.cpp` 主要功能:后端处理逻辑。 ```c++ #include "addcustom_ops_runner.h" @@ -546,7 +546,7 @@ Status AddcustomOpsRunner::SetupKernelGraphAddInt32() ### Operation #### addcustom_operation.h -文件路径:`src/ops_infer/addcustom/addcustom_operation.h` +文件路径:`src/ops/ops_infer/addcustom/addcustom_operation.h` 主要功能:创建和管理算子函数的声明头文件。 ```c++ #ifndef ATB_Addcustom_OPERATION_H @@ -585,7 +585,7 @@ private: #endif ``` #### addcustom_operation.cpp -文件路径:`src/ops_infer/addcustom/addcustom_operation.cpp` +文件路径:`src/ops/ops_infer/addcustom/addcustom_operation.cpp` 主要功能:创建和管理算子函数的实现。 ```c++ #include "addcustom_operation.h" diff --git "a/docs/\345\274\200\345\217\221\346\214\207\345\215\227.md" "b/docs/\345\274\200\345\217\221\346\214\207\345\215\227.md" index c767169c..d098b723 100644 --- "a/docs/\345\274\200\345\217\221\346\214\207\345\215\227.md" +++ "b/docs/\345\274\200\345\217\221\346\214\207\345\215\227.md" @@ -112,7 +112,7 @@ ##### 新增文件说明 -- 根据算子类型属于推理还是训练,分别选择在`src/ops_infer`或`src/ops_train`目录下新增算子名称的目录。对于`fastsoftmax`的OP,在`src/ops_train`下新增目录`fast_soft_max`,文件具体内容见后文,目录结构如下: +- 根据算子类型属于推理还是训练,分别选择在`src/ops/ops_infer`或`src/ops/ops_train`目录下新增算子名称的目录。对于`fastsoftmax`的OP,在`src/ops/ops_train`下新增目录`fast_soft_max`,文件具体内容见后文,目录结构如下: ``` fast_soft_max ├── fastsoftmax_operation.cpp // atb接口实现 @@ -474,12 +474,12 @@ REG_KERNEL_BASE(FastSoftMaxKernel); ###### fastsoftmax_ops_runner.h -文件路径:`src/ops_train/fast_soft_max/fastsoftmax_ops_runner.h` +文件路径:`src/ops/ops_train/fast_soft_max/fastsoftmax_ops_runner.h` 完整内容可根据路径在代码仓中查看。 ###### fastsoftmax_ops_runner.cpp -**文件路径**:`src/ops_train/fast_soft_max/fastsoftmax_ops_runner.cpp` +**文件路径**:`src/ops/ops_train/fast_soft_max/fastsoftmax_ops_runner.cpp` 完整内容可根据路径在代码仓中查看。 **代码说明:** @@ -510,7 +510,7 @@ e. `AsdOps::OpDesc`配置时,需确保`OpName`配置正确,否则可能会 ###### fastsoftmax_operation.h -**文件路径:**`src/ops_train/fast_soft_max/fastsoftmax_operation.h` +**文件路径:**`src/ops/ops_train/fast_soft_max/fastsoftmax_operation.h` 完整内容可根据文件路径查看。 @@ -527,7 +527,7 @@ c. 如果OP支持输入为空Tensor,重写`GetEmptyInTensorPermissions`函数 ###### fastsoftmax_operation.cpp -**文件路径:**`src/ops_train/fast_soft_max/fastsoftmax_operation.cpp` +**文件路径:**`src/ops/ops_train/fast_soft_max/fastsoftmax_operation.cpp` 检验功能的相关函数可直接返回值,主要编写非校验函数的内容。 ```c++ @@ -705,7 +705,7 @@ REG_OPERATION(FastSoftMaxOperation); ###### fastsoftmax_operation.h -**文件路径:**`src/ops_train/fast_soft_max/fastsoftmax_operation.h` +**文件路径:**`src/ops/ops_train/fast_soft_max/fastsoftmax_operation.h` 完整内容可根据路径在代码仓中查看。 @@ -720,7 +720,7 @@ b. 如果OP支持输入为空Tensor,重写`GetEmptyInTensorPermissions`函数 ###### fastsoftmax_operation.cpp -**文件路径:**`src/ops_train/fast_soft_max/fastsoftmax_operation.cpp` +**文件路径:**`src/ops/ops_train/fast_soft_max/fastsoftmax_operation.cpp` 完整代码可根据路径查看文件获得。 **代码说明:** @@ -738,7 +738,7 @@ c. `Setup`校验: * 校验各个输出Tensor的维度数和维度; * 建议先校验输入Tensor,再校验输出Tensor,防止出现输出Tensor受输入Tensor约束时出现数组访问越界等问题; -d. 当Tensor数较多、校验约束条件较复杂时,可参考`src/ops_train/laser_attention/laser_attention_operation.cpp`中的代码,根据实际情况调整代码结构。 +d. 当Tensor数较多、校验约束条件较复杂时,可参考`src/ops/ops_train/laser_attention/laser_attention_operation.cpp`中的代码,根据实际情况调整代码结构。 ###### fastsoftmax_operation.cpp -- Gitee From 0882c28dfa96a6f768a08528279e7227f50daeb9 Mon Sep 17 00:00:00 2001 From: qq_44359711 Date: Fri, 26 Sep 2025 15:06:57 +0800 Subject: [PATCH 4/4] update --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index d6fd70f7..47237ea0 100644 --- a/README.md +++ b/README.md @@ -57,9 +57,10 @@ ascend-transformer-boost │ │ ├── mixkernels //融合算子存放目录 │ │ ├── tbe_adapter //TBE 适配器相关的源代码 │ │ └── CMakeLists.txt -│ ├── ops_common -│ ├── ops_infer //推理OP -│ ├── ops_train //训练OP +│ ├── ops +│ │ ├── ops_common +│ │ ├── ops_infer //推理OP +│ │ └── ops_train //训练OP │ ├── torch_atb //与PyTorch相关的atb库文件 │ └── CMakeLists.txt ├── tests //测试代码 -- Gitee