diff --git a/README.md b/README.md
index 632697a871c480e9f603a77bfb504532039dabd9..47237ea0ae188f4d55ec5416a9d9a0ae8dcd6c7f 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,19 +48,19 @@ ascend-transformer-boost
├── scripts //脚本文件存放目录
├── src //主体源代码目录
│ ├── atb
-│ ├── cinterface //包含 C 接口部分的源代码
-│ ├── include
│ ├── kernels
│ │ ├── configs //支持的配置说明
│ │ ├── document //文档目录
-│ │ ├── include
+│ │ ├── include //存放各算子的头文件
│ │ ├── kernels //单算子存放目录
+│ │ ├── lcal //通信算子存放目录
│ │ ├── 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 //测试代码
@@ -99,7 +99,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 +120,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 +171,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 +225,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 +234,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 f4f3d1916dbe5e4b78a2f8241d8ec53038381499..48de6e290eb2a48289c1fad8a24bd08a93febbe9 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接口实现
@@ -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信息完成所有数据的搬运和计算。
@@ -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,14 +585,14 @@ 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"
#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/\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 00063cc1b4310c0989122e64482b57d8c8fc03b1..d098b72397dba72bcad7b80f47188061a8a68c83 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接口实现
@@ -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`,新增
@@ -466,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`
完整内容可根据路径在代码仓中查看。
**代码说明:**
@@ -502,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`
完整内容可根据文件路径查看。
@@ -519,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++
@@ -697,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`
完整内容可根据路径在代码仓中查看。
@@ -712,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`
完整代码可根据路径查看文件获得。
**代码说明:**
@@ -730,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
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 08deec06118f24da81ab6e884f6abb37eb49d89e..8bccca5becf33ca2bf4683a54144040589630e25 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)。