别着急,坐和放宽
Ascend C 算子开发文档目录 - 雲間録
Ascend C 算子开发文档目录
2025 年 10 月 30 日 星期四
(已编辑)
文档
4
这篇文章上次修改于 2025 年 11 月 5 日 星期三,可能部分内容已经不适用,如有疑问可询问作者。
Ascend C 算子开发文档目录
转换到旧版评论
使用社交账号登录
免登录评论
Loading...
Loading...
Loading...
Loading...
Loading...
基于 CANN 社区版 8.2.RC1 制作
Ascend C 算子开发
Ascend C简介
环境准备
快速入门
3.1.
HelloWorld
3.2.
基于Kernel直调工程的算子开发
3.3.
基于自定义算子工程的算子开发
抽象硬件架构
编程模型
5.1.
SPMD模型
5.2.
核函数
5.3.
编程范式
5.4.
编程接口概述
算子实现
6.1.
概述
6.2. 矢量编程
6.2.1.
概述
6.2.2.
基础矢量算子
6.2.3.
TBuf的使用
6.2.4. 多核&Tiling切分
6.2.4.1.
概述
6.2.4.2.
多核Tiling
6.2.4.3.
尾块Tiling
6.2.4.4.
尾核Tiling
6.2.4.5.
尾核&尾块
6.2.5.
DoubleBuffer场景
6.2.6.
Broadcast场景
6.2.7.
非对齐场景
6.3. 矩阵编程(高阶API)
6.3.1.
基础知识
6.3.2.
算子实现
6.3.3. 特性场景
6.3.3.1.
Matmul特性介绍
6.3.3.2.
多核对齐切分
6.3.3.3.
多核非对齐切分
6.3.3.4.
异步场景处理
6.3.3.5.
矩阵乘输出的量化/反量化
6.3.3.6.
矩阵乘输出的Channel拆分
6.3.3.7.
矩阵向量乘
6.3.3.8.
4:2稀疏矩阵乘
6.3.3.9.
TSCM输入的矩阵乘
6.3.3.10.
矩阵乘输出的N方向对齐
6.3.3.11.
单次矩阵乘局部输出
6.3.3.12.
AIC和AIV独立运行机制
6.3.3.13.
Batch Matmul基础功能
6.4. 矩阵编程(基础API)
6.4.1.
耦合架构
6.4.2.
分离架构
6.5. 融合算子编程
6.5.1.
基础知识
6.5.2.
算子实现
6.6. Kernel直调算子开发
6.6.1.
概述
6.6.2.
Kernel直调
6.6.3.
Pybind调用
6.7. 工程化算子开发
6.7.1.
概述
6.7.2.
创建算子工程
6.7.3.
算子原型定义
6.7.4.
Kernel侧算子实现
6.7.5.
Host侧tiling实现
6.7.6. 算子包编译
6.7.6.1.
算子工程编译
6.7.6.2.
算子包部署
6.7.7.
算子动态库编译
6.7.8.
单算子API调用
算子调试调优
7.1.
孪生调试简介
7.2.
CPU域调试
7.3.
NPU域调试调优
算子入图(GE图)开发
8.1.
概述
8.2.
开发流程
8.3.
Tiling下沉
8.4.
图编译和图执行
AI框架算子适配
9.1.
概述
9.2.
PyTorch框架
9.3. ONNX框架
9.3.1.
适配插件开发
9.3.2.
调用样例
9.4.
TensorFlow框架
概念原理和术语
10.1.
术语表
10.2. 神经网络和算子
10.2.1.
算子基本概念
10.2.2.
数据排布格式
10.3. 硬件架构与数据处理原理
10.3.1.
基本架构
10.3.2.
计算单元
10.3.3.
存储单元
10.3.4.
控制单元
10.4.
编程模型设计原理
10.5. 性能优化技术原理
10.5.1.
DoubleBuffer
常用操作
11.1.
如何开发动态输入算子
11.2.
如何在矢量编程时使能Vector Core
11.3.
如何开发通算融合算子
11.4.
如何使用Tensor高维切分计算API
11.5.
如何使用归约指令
11.6.
如何使用掩码操作API
11.7.
如何使用workspace
11.8.
如何进行Tiling调测
11.9.
如何使用SPM Buffer
11.10.
如何使用更底层编程方式提升算子性能
11.11.
如何使用Tensor原地操作提升算子性能
附录
12.1.
简易自定义算子工程
12.2.
show
kernel
debug_data工具
12.3.
msobjdump工具
FAQ
13.1.
核函数运行验证时算子存在精度问题
13.2.
运行验证时AllocTensor/FreeTensor失败
13.3.
kernel侧获取Tiling信息不正确
13.4.
Kernel编译时报错“error: out of jump/jumpc imm range”
13.5.
使用跨版本的自定义算子包时,含有Matmul高阶API的算子存在编译或执行报错
13.6.
含有Matmul高阶API的算子精度问题
13.7.
算子工程编译时出现文件名过长报错
13.8.
调用算子时出现无法打开config.ini的报错
13.9.
算子包部署时出现权限不足报错
Ascend C API
Ascend C API列表
通用约束
数据类型定义
3.1. LocalTensor
3.1.1.
简介
3.1.2.
构造函数
3.1.3.
SetValue
3.1.4.
GetValue
3.1.5.
operator[]
3.1.6.
operator()
3.1.7.
SetSize
3.1.8.
GetSize
3.1.9.
SetUserTag
3.1.10.
GetUserTag
3.1.11.
ReinterpretCast
3.1.12.
GetPhyAddr
3.1.13.
GetPosition
3.1.14.
GetLength
3.1.15.
SetShapeInfo
3.1.16.
GetShapeInfo
3.1.17.
SetAddrWithOffset
3.1.18.
SetBufferLen
3.1.19.
ToFile
3.1.20.
Print
3.2. GlobalTensor
3.2.1.
简介
3.2.2.
构造函数
3.2.3.
SetGlobalBuffer
3.2.4.
GetPhyAddr
3.2.5.
GetValue
3.2.6.
operator()
3.2.7.
SetValue
3.2.8.
GetSize
3.2.9.
operator[]
3.2.10.
SetShapeInfo
3.2.11.
GetShapeInfo
3.2.12.
SetL2CacheHint
3.3.
ShapeInfo
3.4.
ListTensorDesc
3.5. TensorDesc
3.5.1.
简介
3.5.2.
构造和析构函数
3.5.3.
SetShapeAddr
3.5.4.
GetDim
3.5.5.
GetIndex
3.5.6.
GetShape
3.5.7.
GetDataPtr
3.5.8.
GetDataObj
3.6.
TensorTrait
3.7. Layout
3.7.1.
简介
3.7.2.
构造函数
3.7.3.
layout
3.7.4.
GetShape
3.7.5.
GetStride
3.7.6.
MakeShape
3.7.7.
MakeStride
3.7.8.
MakeLayout
3.7.9.
is_layout
3.8. LocalMemAllocator
3.8.1.
简介
3.8.2.
构造函数
3.8.3.
GetCurAddr
3.8.4.
Alloc
3.9.
UnaryRepeatParams
3.10.
BinaryRepeatParams
基础API
4.1. 标量计算
4.1.1.
ScalarGetCountOfValue
4.1.2.
ScalarCountLeadingZero
4.1.3.
ScalarCast
4.1.4.
CountBitsCntSameAsSignBit
4.1.5.
ScalarGetSFFValue
4.1.6.
ToBfloat16
4.1.7.
ToFloat
4.2. 矢量计算
4.2.1. 单目指令
4.2.1.1.
Exp
4.2.1.2.
Ln
4.2.1.3.
Abs
4.2.1.4.
Reciprocal
4.2.1.5.
Sqrt
4.2.1.6.
Rsqrt
4.2.1.7.
Not
4.2.1.8.
Relu
4.2.1.9.
VectorPadding(ISASI)
4.2.1.10.
更多样例
4.2.2. 双目指令
4.2.2.1.
Add
4.2.2.2.
Sub
4.2.2.3.
Mul
4.2.2.4.
Div
4.2.2.5.
Max
4.2.2.6.
Min
4.2.2.7.
And
4.2.2.8.
Or
4.2.2.9.
AddRelu
4.2.2.10.
AddReluCast
4.2.2.11.
AddDeqRelu
4.2.2.12.
SubRelu
4.2.2.13.
SubReluCast
4.2.2.14.
MulAddDst
4.2.2.15.
MulCast
4.2.2.16.
FusedMulAdd
4.2.2.17.
FusedMulAddRelu
4.2.2.18.
BilinearInterpolation(ISASI)
4.2.2.19.
更多样例
4.2.3. 标量双目指令
4.2.3.1.
Adds
4.2.3.2.
Muls
4.2.3.3.
Maxs
4.2.3.4.
Mins
4.2.3.5.
ShiftLeft
4.2.3.6.
ShiftRight
4.2.3.7.
LeakyRelu
4.2.3.8.
更多样例
4.2.4. 标量三目指令
4.2.4.1.
Axpy
4.2.4.2.
更多样例
4.2.5. 比较指令
4.2.5.1.
Compare
4.2.5.2.
Compare(结果存入寄存器)
4.2.5.3.
CompareScalar
4.2.5.4.
GetCmpMask(ISASI)
4.2.5.5.
SetCmpMask(ISASI)
4.2.6. 选择指令
4.2.6.1.
Select
4.2.6.2.
GatherMask
4.2.7. 精度转换指令
4.2.7.1.
Cast
4.2.7.2.
CastDeq
4.2.8. 归约指令
4.2.8.1.
ReduceMax
4.2.8.2.
ReduceMin
4.2.8.3.
ReduceSum
4.2.8.4.
WholeReduceMax
4.2.8.5.
WholeReduceMin
4.2.8.6.
WholeReduceSum
4.2.8.7.
BlockReduceMax
4.2.8.8.
BlockReduceMin
4.2.8.9.
BlockReduceSum
4.2.8.10.
PairReduceSum
4.2.8.11.
RepeatReduceSum
4.2.8.12.
GetAccVal(ISASI)
4.2.8.13.
GetReduceMaxMinCount(ISASI)
4.2.9. 数据转换
4.2.9.1.
Transpose
4.2.9.2.
TransDataTo5HD
4.2.10. 数据填充
4.2.10.1.
Duplicate
4.2.10.2.
Brcb
4.2.10.3.
CreateVecIndex
4.2.11. 排序组合(ISASI)
4.2.11.1.
ProposalConcat
4.2.11.2.
ProposalExtract
4.2.11.3.
RpSort16
4.2.11.4.
MrgSort4
4.2.11.5.
Sort32
4.2.11.6.
MrgSort
4.2.11.7.
GetMrgSortResult
4.2.12. 数据分散/数据收集
4.2.12.1.
Gather
4.2.12.2.
Gatherb(ISASI)
4.2.12.3.
Scatter(ISASI)
4.2.13. 掩码操作
4.2.13.1.
SetMaskCount
4.2.13.2.
SetMaskNorm
4.2.13.3.
SetVectorMask
4.2.13.4.
ResetMask
4.2.14. 量化设置
4.2.14.1.
SetDeqScale
4.3. 数据搬运
4.3.1. DataCopy
4.3.1.1.
普通数据搬运
4.3.1.2.
增强数据搬运
4.3.1.3.
切片数据搬运
4.3.1.4.
随路格式转换
4.3.2.
Copy
4.3.3.
DataCopyPad(ISASI)
4.3.4.
SetPadValue(ISASI)
4.3.5.
SetFixPipeConfig(ISASI)
4.3.6.
SetFixpipeNz2ndFlag(ISASI)
4.3.7.
SetFixpipePreQuantFlag(ISASI)
4.3.8.
SetFixPipeClipRelu(ISASI)
4.3.9.
SetFixPipeAddr(ISASI)
4.4. 内存管理与同步控制
4.4.1. TPipe
4.4.1.1.
TPipe构造函数
4.4.1.2.
Init
4.4.1.3.
Destroy
4.4.1.4.
InitBuffer
4.4.1.5.
Reset
4.4.1.6.
AllocEventID
4.4.1.7.
ReleaseEventID
4.4.1.8.
FetchEventID
4.4.1.9.
GetBaseAddr
4.4.1.10.
InitBufPool
4.4.2.
GetTPipePtr
4.4.3. TBufPool
4.4.3.1.
简介
4.4.3.2.
构造函数
4.4.3.3.
InitBufPool
4.4.3.4.
InitBuffer
4.4.3.5.
Reset
4.4.4. 自定义TBufPool
4.4.4.1.
EXTERN
IMPL
BUFPOOL宏
4.4.4.2.
Reset
4.4.4.3.
Init
4.4.4.4.
GetBufHandle
4.4.4.5.
SetCurAddr
4.4.4.6.
GetCurAddr
4.4.4.7.
SetCurBufSize
4.4.4.8.
GetCurBufSize
4.4.5. TQue
4.4.5.1.
简介
4.4.5.2.
AllocTensor
4.4.5.3.
FreeTensor
4.4.5.4.
EnQue
4.4.5.5.
DeQue
4.4.5.6.
VacantInQue
4.4.5.7.
HasTensorInQue
4.4.5.8.
GetTensorCountInQue
4.4.5.9.
HasIdleBuffer
4.4.6. TQueBind
4.4.6.1.
简介
4.4.6.2.
构造函数
4.4.6.3.
AllocTensor
4.4.6.4.
FreeTensor
4.4.6.5.
EnQue
4.4.6.6.
DeQue
4.4.6.7.
VacantInQue
4.4.6.8.
HasTensorInQue
4.4.6.9.
GetTensorCountInQue
4.4.6.10.
HasIdleBuffer
4.4.6.11.
FreeAllEvent
4.4.6.12.
InitBufHandle
4.4.6.13.
InitStartBufHandle
4.4.7. TBuf
4.4.7.1.
TBuf简介
4.4.7.2.
构造函数
4.4.7.3.
Get
4.4.7.4.
GetWithOffset
4.4.8. SPM Buffer
4.4.8.1.
InitSpmBuffer
4.4.8.2.
WriteSpmBuffer
4.4.8.3.
ReadSpmBuffer
4.4.9. workspace
4.4.9.1.
GetSysWorkSpacePtr
4.4.9.2.
SetSysWorkSpace
4.4.9.3.
GetUserWorkspace
4.4.10. 核内同步
4.4.10.1. TQueSync
4.4.10.1.1.
同步控制简介
4.4.10.1.2.
模板参数
4.4.10.1.3.
SetFlag/WaitFlag
4.4.10.2.
SetFlag/WaitFlag(ISASI)
4.4.10.3.
PipeBarrier(ISASI)
4.4.10.4.
DataSyncBarrier(ISASI)
4.4.11. 核间同步
4.4.11.1.
IBSet
4.4.11.2.
IBWait
4.4.11.3.
SyncAll
4.4.11.4.
CrossCoreSetFlag(ISASI)
4.4.11.5.
CrossCoreWaitFlag(ISASI)
4.4.11.6.
InitDetermineComputeWorkspace
4.4.11.7.
NotifyNextBlock
4.4.11.8.
WaitPreBlock
4.4.12. 任务间同步
4.4.12.1.
SetNextTaskStart
4.4.12.2.
WaitPreTaskEnd
4.4.13.
TPosition
4.5. 缓存处理
4.5.1.
DataCachePreload
4.5.2.
DataCacheCleanAndInvalid
4.5.3.
ICachePreLoad(ISASI)
4.5.4.
GetICachePreloadStatus(ISASI)
4.6. 系统变量访问
4.6.1.
GetBlockNum
4.6.2.
GetBlockIdx
4.6.3.
GetDataBlockSizeInBytes
4.6.4.
GetArchVersion
4.6.5.
GetTaskRation
4.6.6.
InitSocState
4.6.7.
GetProgramCounter(ISASI)
4.6.8.
GetSubBlockNum(ISASI)
4.6.9.
GetSubBlockIdx(ISASI)
4.6.10.
GetSystemCycle(ISASI)
4.7. 原子操作
4.7.1.
SetAtomicAdd
4.7.2.
SetAtomicType
4.7.3.
SetAtomicNone
4.7.4.
SetAtomicMax(ISASI)
4.7.5.
SetAtomicMin(ISASI)
4.7.6.
SetStoreAtomicConfig(ISASI)
4.7.7.
GetStoreAtomicConfig(ISASI)
4.8. 矩阵计算(ISASI)
4.8.1.
InitConstValue
4.8.2.
LoadData
4.8.3.
LoadDataWithTranspose
4.8.4.
SetAippFunctions
4.8.5.
LoadImageToLocal
4.8.6.
LoadUnzipIndex
4.8.7.
LoadDataUnzip
4.8.8.
LoadDataWithSparse
4.8.9.
SetFmatrix
4.8.10.
SetLoadDataBoundary
4.8.11.
SetLoadDataRepeat
4.8.12.
SetLoadDataPaddingValue
4.8.13.
Mmad
4.8.14.
MmadWithSparse
4.8.15.
Fixpipe
4.8.16.
SetHF32Mode
4.8.17.
SetHF32TransMode
4.8.18.
SetMMLayoutTransform
4.8.19.
CheckLocalMemoryIA
4.8.20.
Conv2D
4.8.21.
Gemm
4.9. 资源管理(ISASI)
4.9.1. CubeResGroupHandle
4.9.1.1.
使用说明
4.9.1.2.
CubeResGroupHandle构造函数
4.9.1.3.
CreateCubeResGroup
4.9.1.4.
AssignQueue
4.9.1.5.
AllocMessage
4.9.1.6.
PostMessage
4.9.1.7.
PostFakeMsg
4.9.1.8.
SetQuit
4.9.1.9.
Wait
4.9.1.10.
FreeMessage
4.9.1.11.
SetSkipMsg
4.9.2. GroupBarrier
4.9.2.1.
使用说明
4.9.2.2.
GroupBarrier构造函数
4.9.2.3.
Arrive
4.9.2.4.
Wait
4.9.2.5.
GetWorkspaceLen
4.9.3. KfcWorkspace
4.9.3.1.
构造函数与析构函数
4.9.3.2.
UpdateKfcWorkspace
4.9.3.3.
GetKfcWorkspace
4.10. Kernel Tiling
4.10.1.
GET
TILING
DATA
4.10.2.
GET
TILING
DATA
WITH
STRUCT
4.10.3.
GET
TILING
DATA_MEMBER
4.10.4.
TILING
KEY
IS
4.10.5.
REGISTER
TILING
DEFAULT
4.10.6.
REGISTER
TILING
FOR_TILINGKEY
4.10.7.
设置kernel类型
高阶API
5.1. 数学库
5.1.1. Tanh
5.1.1.1.
Tanh
5.1.1.2.
GetTanhMaxMinTmpSize
5.1.1.3.
GetTanhTmpBufferFactorSize
5.1.2. Asin
5.1.2.1.
Asin
5.1.2.2.
GetAsinMaxMinTmpSize
5.1.2.3.
GetAsinTmpBufferFactorSize
5.1.3. Sin
5.1.3.1.
Sin
5.1.3.2.
GetSinMaxMinTmpSize
5.1.3.3.
GetSinTmpBufferFactorSize
5.1.4. Acos
5.1.4.1.
Acos
5.1.4.2.
GetAcosMaxMinTmpSize
5.1.4.3.
GetAcosTmpBufferFactorSize
5.1.5. Cos
5.1.5.1.
Cos
5.1.5.2.
GetCosMaxMinTmpSize
5.1.5.3.
GetCosTmpBufferFactorSize
5.1.6. Log
5.1.6.1.
Log
5.1.6.2.
GetLogMaxMinTmpSize
5.1.6.3.
GetLogTmpBufferFactorSize
5.1.7. Atan
5.1.7.1.
Atan
5.1.7.2.
GetAtanMaxMinTmpSize
5.1.7.3.
GetAtanTmpBufferFactorSize
5.1.8. Power
5.1.8.1.
Power
5.1.8.2.
GetPowerMaxMinTmpSize
5.1.8.3.
GetPowerTmpBufferFactorSize
5.1.9. Sinh
5.1.9.1.
Sinh
5.1.9.2.
GetSinhMaxMinTmpSize
5.1.9.3.
GetSinhTmpBufferFactorSize
5.1.10. Cosh
5.1.10.1.
Cosh
5.1.10.2.
GetCoshMaxMinTmpSize
5.1.10.3.
GetCoshTmpBufferFactorSize
5.1.11. Tan
5.1.11.1.
Tan
5.1.11.2.
GetTanMaxMinTmpSize
5.1.11.3.
GetTanTmpBufferFactorSize
5.1.12. Trunc
5.1.12.1.
Trunc
5.1.12.2.
GetTruncMaxMinTmpSize
5.1.12.3.
GetTruncTmpBufferFactorSize
5.1.13. Frac
5.1.13.1.
Frac
5.1.13.2.
GetFracMaxMinTmpSize
5.1.13.3.
GetFracTmpBufferFactorSize
5.1.14. Erf
5.1.14.1.
Erf
5.1.14.2.
GetErfMaxMinTmpSize
5.1.14.3.
GetErfTmpBufferFactorSize
5.1.15. Erfc
5.1.15.1.
Erfc
5.1.15.2.
GetErfcMaxMinTmpSize
5.1.15.3.
GetErfcTmpBufferFactorSize
5.1.16. Sign
5.1.16.1.
Sign
5.1.16.2.
GetSignMaxMinTmpSize
5.1.16.3.
GetSignTmpBufferFactorSize
5.1.17. Atanh
5.1.17.1.
Atanh
5.1.17.2.
GetAtanhMaxMinTmpSize
5.1.17.3.
GetAtanhTmpBufferFactorSize
5.1.18. Asinh
5.1.18.1.
Asinh
5.1.18.2.
GetAsinhMaxMinTmpSize
5.1.18.3.
GetAsinhTmpBufferFactorSize
5.1.19. Acosh
5.1.19.1.
Acosh
5.1.19.2.
GetAcoshMaxMinTmpSize
5.1.19.3.
GetAcoshTmpBufferFactorSize
5.1.20. Floor
5.1.20.1.
Floor
5.1.20.2.
GetFloorMaxMinTmpSize
5.1.20.3.
GetFloorTmpBufferFactorSize
5.1.21. Ceil
5.1.21.1.
Ceil
5.1.21.2.
GetCeilMaxMinTmpSize
5.1.21.3.
GetCeilTmpBufferFactorSize
5.1.22. Clamp
5.1.22.1.
ClampMax
5.1.22.2.
ClampMin
5.1.22.3.
GetClampMaxMinTmpSize
5.1.22.4.
GetClampTmpBufferFactorSize
5.1.23. Round
5.1.23.1.
Round
5.1.23.2.
GetRoundMaxMinTmpSize
5.1.23.3.
GetRoundTmpBufferFactorSize
5.1.24. Axpy
5.1.24.1.
Axpy
5.1.24.2.
GetAxpyMaxMinTmpSize
5.1.24.3.
GetAxpyTmpBufferFactorSize
5.1.25. Exp
5.1.25.1.
Exp
5.1.25.2.
GetExpMaxMinTmpSize
5.1.25.3.
GetExpTmpBufferFactorSize
5.1.26. Lgamma
5.1.26.1.
Lgamma
5.1.26.2.
GetLgammaMaxMinTmpSize
5.1.26.3.
GetLgammaTmpBufferFactorSize
5.1.27. Digamma
5.1.27.1.
Digamma
5.1.27.2.
GetDigammaMaxMinTmpSize
5.1.27.3.
GetDigammaTmpBufferFactorSize
5.1.28. Xor
5.1.28.1.
Xor
5.1.28.2.
GetXorMaxMinTmpSize
5.1.28.3.
GetXorTmpBufferFactorSize
5.1.29. CumSum
5.1.29.1.
CumSum
5.1.29.2.
GetCumSumMaxMinTmpSize
5.1.30. Fmod
5.1.30.1.
Fmod
5.1.30.2.
GetFmodMaxMinTmpSize
5.1.30.3.
GetFmodTmpBufferFactorSize
5.1.31.
更多样例
5.2. Matmul
5.2.1. Matmul
5.2.1.1.
使用说明
5.2.1.2.
Matmul模板参数
5.2.1.3.
MatmulConfig
5.2.1.4.
MatmulCallBackFunc
5.2.1.5.
MatmulPolicy
5.2.1.6.
Matmul特性场景
5.2.1.7.
GetNormalConfig
5.2.1.8.
GetMDLConfig
5.2.1.9.
GetSpecialMDLConfig
5.2.1.10.
GetIBShareNormConfig
5.2.1.11.
GetBasicConfig
5.2.1.12.
GetSpecialBasicConfig
5.2.1.13.
GetMMConfig
5.2.1.14.
REGIST
MATMUL
OBJ
5.2.1.15.
Init
5.2.1.16.
SetTensorA
5.2.1.17.
SetTensorB
5.2.1.18.
SetBias
5.2.1.19.
DisableBias
5.2.1.20.
GetBatchTensorC
5.2.1.21.
Iterate
5.2.1.22.
GetTensorC
5.2.1.23.
IterateAll
5.2.1.24.
WaitIterateAll
5.2.1.25.
IterateBatch
5.2.1.26.
WaitIterateBatch
5.2.1.27.
IterateNBatch
5.2.1.28.
End
5.2.1.29.
SetHF32
5.2.1.30.
SetTail
5.2.1.31.
SetBatchNum
5.2.1.32.
SetQuantScalar
5.2.1.33.
SetQuantVector
5.2.1.34.
SetOrgShape
5.2.1.35.
SetSingleShape
5.2.1.36.
SetLocalWorkspace
5.2.1.37.
SetWorkspace
5.2.1.38.
SetAntiQuantScalar
5.2.1.39.
SetAntiQuantVector
5.2.1.40.
WaitGetTensorC
5.2.1.41.
GetOffsetC
5.2.1.42.
AsyncGetTensorC
5.2.1.43.
SetUserDefInfo
5.2.1.44.
SetSelfDefineData
5.2.1.45.
GetMatmulApiTiling
5.2.1.46.
ClearBias
5.2.1.47.
GetBatchC
5.2.1.48.
SetSparseIndex
5.2.2. Matmul Tiling
5.2.2.1. Matmul Tiling类
5.2.2.1.1.
使用说明
5.2.2.1.2.
构造函数
5.2.2.1.3.
TCubeTiling结构体
5.2.2.1.4.
SetAType
5.2.2.1.5.
SetBType
5.2.2.1.6.
SetCType
5.2.2.1.7.
SetBiasType
5.2.2.1.8.
SetSingleShape
5.2.2.1.9.
SetShape
5.2.2.1.10.
SetOrgShape
5.2.2.1.11.
SetFixSplit
5.2.2.1.12.
EnableMultiCoreSplitK
5.2.2.1.13.
EnableBias
5.2.2.1.14.
SetBufferSpace
5.2.2.1.15.
SetTraverse
5.2.2.1.16.
SetMadType
5.2.2.1.17.
SetSplitRange
5.2.2.1.18.
SetDoubleBuffer
5.2.2.1.19.
GetBaseM
5.2.2.1.20.
GetBaseN
5.2.2.1.21.
GetBaseK
5.2.2.1.22.
GetTiling
5.2.2.1.23.
SetDim
5.2.2.1.24.
SetSingleRange
5.2.2.1.25.
GetSingleShape
5.2.2.1.26.
GetCoreNum
5.2.2.1.27.
SetAlignSplit
5.2.2.1.28.
SetDequantType
5.2.2.1.29.
SetALayout
5.2.2.1.30.
SetBLayout
5.2.2.1.31.
SetCLayout
5.2.2.1.32.
SetBatchNum
5.2.2.1.33.
SetBatchInfoForNormal
5.2.2.1.34.
SetMatmulConfigParams
5.2.2.1.35.
SetBias
5.2.2.1.36.
SetSplitK
5.2.2.1.37.
SetSparse
5.2.2.2. 获取Matmul计算所需空间
5.2.2.2.1.
MultiCoreMatmulGetTmpBufSize
5.2.2.2.2.
MultiCoreMatmulGetTmpBufSizeV2
5.2.2.2.3.
BatchMatmulGetTmpBufSize
5.2.2.2.4.
BatchMatmulGetTmpBufSizeV2
5.2.2.2.5.
MatmulGetTmpBufSize
5.2.2.2.6.
MatmulGetTmpBufSizeV2
5.3. 激活函数
5.3.1. SoftMax
5.3.1.1.
SoftMax
5.3.1.2.
SimpleSoftMax
5.3.1.3.
SoftmaxFlash
5.3.1.4.
SoftmaxGrad
5.3.1.5.
SoftmaxFlashV2
5.3.1.6.
SoftmaxFlashV3
5.3.1.7.
SoftmaxGradFront
5.3.1.8.
AdjustSoftMaxRes
5.3.1.9.
SoftMax Tiling使用说明
5.3.1.10.
SoftMax/SimpleSoftMax Tiling
5.3.1.11.
SoftmaxFlash Tiling接口
5.3.1.12.
SoftmaxGrad Tiling接口
5.3.1.13.
SoftmaxFlashV2 Tiling接口
5.3.1.14.
SoftmaxFlashV3 Tiling接口
5.3.1.15.
IsBasicBlockInSoftMax
5.3.2. LogSoftMax
5.3.2.1.
LogSoftMax
5.3.2.2.
LogSoftMax Tiling
5.3.3. Gelu
5.3.3.1.
Gelu
5.3.3.2.
FasterGelu
5.3.3.3.
FasterGeluV2
5.3.3.4.
GetGeluMaxMinTmpSize
5.3.4. SwiGLU
5.3.4.1.
SwiGLU
5.3.4.2.
GetSwiGLUMaxMinTmpSize
5.3.4.3.
GetSwiGLUTmpBufferFactorSize
5.3.5. Silu
5.3.5.1.
Silu
5.3.5.2.
GetSiluTmpSize
5.3.6. Swish
5.3.6.1.
Swish
5.3.6.2.
GetSwishTmpSize
5.3.7. GeGLU
5.3.7.1.
GeGLU
5.3.7.2.
GetGeGLUMaxMinTmpSize
5.3.7.3.
GetGeGLUTmpBufferFactorSize
5.3.8. ReGlu
5.3.8.1.
ReGlu
5.3.8.2.
GetReGluMaxMinTmpSize
5.3.9. Sigmoid
5.3.9.1.
Sigmoid
5.3.9.2.
GetSigmoidMaxMinTmpSize
5.4. 数据归一化
5.4.1. LayerNorm
5.4.1.1.
LayerNorm
5.4.1.2.
LayerNormGrad
5.4.1.3.
LayerNormGradBeta
5.4.2. LayerNorm Tiling
5.4.2.1.
LayerNorm Tiling
5.4.2.2.
LayerNormGrad Tiling
5.4.2.3.
LayerNormGradBeta Tiling
5.4.3.
RmsNorm
5.4.4.
RmsNorm Tiling
5.4.5.
BatchNorm
5.4.6.
BatchNorm Tiling
5.4.7.
DeepNorm
5.4.8.
DeepNorm Tiling
5.4.9.
Normalize
5.4.10.
Normalize Tiling
5.4.11.
WelfordUpdate
5.4.12.
WelfordUpdate Tiling
5.4.13.
WelfordFinalize
5.4.14.
WelfordFinalize Tiling
5.4.15.
GroupNorm
5.4.16.
GroupNorm Tiling
5.5. 量化反量化
5.5.1.
AscendQuant
5.5.2.
GetAscendQuantMaxMinTmpSize
5.5.3.
AscendDequant
5.5.4.
GetAscendDequantMaxMinTmpSize
5.5.5.
AscendAntiQuant
5.5.6.
GetAscendAntiQuantMaxMinTmpSize
5.6. 归约操作
5.6.1. Sum
5.6.1.1.
Sum
5.6.1.2.
GetSumMaxMinTmpSize
5.6.2. Mean
5.6.2.1.
Mean
5.6.2.2.
GetMeanMaxMinTmpSize
5.6.2.3.
GetMeanTmpBufferFactorSize
5.6.3. ReduceXorSum
5.6.3.1.
ReduceXorSum
5.6.3.2.
GetReduceXorSumMaxMinTmpSize
5.6.4. ReduceSum
5.6.4.1.
ReduceSum
5.6.4.2.
GetReduceSumMaxMinTmpSize
5.6.5. ReduceMean
5.6.5.1.
ReduceMean
5.6.5.2.
GetReduceMeanMaxMinTmpSize
5.6.6. ReduceMax
5.6.6.1.
ReduceMax
5.6.6.2.
GetReduceMaxMaxMinTmpSize
5.6.7. ReduceMin
5.6.7.1.
ReduceMin
5.6.7.2.
GetReduceMinMaxMinTmpSize
5.6.8. ReduceAny
5.6.8.1.
ReduceAny
5.6.8.2.
GetReduceAnyMaxMinTmpSize
5.6.9. ReduceAll
5.6.9.1.
ReduceAll
5.6.9.2.
GetReduceAllMaxMinTmpSize
5.6.10. ReduceProd
5.6.10.1.
ReduceProd
5.6.10.2.
GetReduceProdMaxMinTmpSize
5.7. 排序
5.7.1.
TopK
5.7.2.
TopK Tiling
5.7.3. Sort
5.7.3.1.
Concat
5.7.3.2.
GetConcatTmpSize
5.7.3.3.
Extract
5.7.3.4.
Sort
5.7.3.5.
GetSortTmpSize
5.7.3.6.
GetSortOffset
5.7.3.7.
GetSortLen
5.7.3.8.
MrgSort
5.8. 数据填充
5.8.1.
Pad
5.8.2.
Pad Tiling
5.8.3.
UnPad
5.8.4.
UnPad Tiling
5.8.5.
Broadcast
5.8.6.
GetBroadCastMaxMinTmpSize
5.9. 索引操作
5.9.1.
ArithProgression
5.9.2.
GetArithProgressionMaxMinTmpSize
5.10. 比较选择
5.10.1.
SelectWithBytesMask
5.10.2.
GetSelectWithBytesMaskMaxMinTmpSize
5.11. 数据过滤
5.11.1.
DropOut
5.11.2.
GetDropOutMaxMinTmpSize
5.12. 变形
5.12.1.
ConfusionTranspose
5.12.2.
ConfusionTranspose Tiling
5.12.3.
TransData
5.12.4.
GetTransDataMaxMinTmpSize
5.13. Hccl
5.13.1. Hccl
5.13.1.1.
使用说明
5.13.1.2.
Hccl模板参数
5.13.1.3.
Init
5.13.1.4.
SetCcTiling
5.13.1.5.
AllReduce
5.13.1.6.
AllGather
5.13.1.7.
ReduceScatter
5.13.1.8.
AlltoAll
5.13.1.9.
AlltoAllV
5.13.1.10.
BatchWrite
5.13.1.11.
Commit
5.13.1.12.
Wait
5.13.1.13.
Iterate
5.13.1.14.
Query
5.13.1.15.
InterHcclGroupSync
5.13.1.16.
Finalize
5.13.1.17.
GetWindowsInAddr
5.13.1.18.
GetWindowsOutAddr
5.13.1.19.
GetRankId
5.13.1.20.
GetRankDim
5.13.2. Hccl Tiling
5.13.2.1.
使用说明
5.13.2.2.
TilingData结构体
5.13.2.3.
构造函数
5.13.2.4.
GetTiling
5.13.2.5.
SetOpType
5.13.2.6.
SetGroupName
5.13.2.7.
SetAlgConfig
5.13.2.8.
SetReduceType
5.13.2.9.
SetStepSize
5.13.2.10.
SetSkipLocalRankCopy
5.13.2.11.
SetSkipBufferWindowCopy
5.13.2.12.
SetDebugMode
5.13.2.13.
v1版本TilingData(废弃)
5.13.2.14.
v2版本TilingData(废弃)
5.13.3. Hccl Context
5.13.3.1.
简介
5.13.3.2.
SetHcclContext
5.13.3.3.
GetHcclContext
5.14. 工具类
5.14.1.
InitGlobalMemory
5.15. 卷积正向
5.15.1. Conv3D
5.15.1.1. Conv3D
5.15.1.1.1.
使用说明
5.15.1.1.2.
Conv3D模板参数
5.15.1.1.3.
Init
5.15.1.1.4.
SetInput
5.15.1.1.5.
SetWeight
5.15.1.1.6.
SetBias
5.15.1.1.7.
SetSingleOutputShape
5.15.1.1.8.
SetInputStartPosition
5.15.1.1.9.
IterateAll
5.15.1.1.10.
End
5.15.1.2. Conv3D Tiling
5.15.1.2.1.
使用说明
5.15.1.2.2.
构造函数
5.15.1.2.3.
TConv3DApiTiling结构体
5.15.1.2.4.
GetTiling
5.15.1.2.5.
SetOrgWeightShape
5.15.1.2.6.
SetOrgInputShape
5.15.1.2.7.
SetSingleWeightShape
5.15.1.2.8.
SetSingleOutputShape
5.15.1.2.9.
SetInputType
5.15.1.2.10.
SetWeightType
5.15.1.2.11.
SetBiasType
5.15.1.2.12.
SetOutputType
5.15.1.2.13.
SetPadding
5.15.1.2.14.
SetDilation
5.15.1.2.15.
SetStride
5.15.1.2.16.
SetGroups
5.16. 卷积反向
5.16.1. Conv3DBackpropInput
5.16.1.1. Conv3DBackpropInput
5.16.1.1.1.
使用说明
5.16.1.1.2.
Init
5.16.1.1.3.
SetGradOutput
5.16.1.1.4.
SetWeight
5.16.1.1.5.
SetSingleShape
5.16.1.1.6.
SetStartPosition
5.16.1.1.7.
Iterate
5.16.1.1.8.
GetTensorC
5.16.1.1.9.
End
5.16.1.2. Conv3DBackpropInput Tiling
5.16.1.2.1.
使用说明
5.16.1.2.2.
构造函数
5.16.1.2.3.
TConv3DBackpropInputTiling结构体
5.16.1.2.4.
GetTiling
5.16.1.2.5.
SetWeightShape
5.16.1.2.6.
SetInputShape
5.16.1.2.7.
SetGradOutputShape
5.16.1.2.8.
SetWeightType
5.16.1.2.9.
SetInputType
5.16.1.2.10.
SetGradOutputType
5.16.1.2.11.
SetPadding
5.16.1.2.12.
SetStride
5.16.1.2.13.
SetDilation
5.16.1.2.14.
SetOutputPadding
5.16.2. Conv3DBackpropFilter
5.16.2.1. Conv3DBackpropFilter
5.16.2.1.1.
使用说明
5.16.2.1.2.
Init
5.16.2.1.3.
SetInput
5.16.2.1.4.
SetGradOutput
5.16.2.1.5.
SetSingleShape
5.16.2.1.6.
SetStartPosition
5.16.2.1.7.
Iterate
5.16.2.1.8.
GetTensorC
5.16.2.1.9.
End
5.16.2.2. Conv3DBackpropFilter Tiling
5.16.2.2.1.
使用说明
5.16.2.2.2.
构造函数
5.16.2.2.3.
TConv3DBpFilterTiling结构体
5.16.2.2.4.
GetTiling
5.16.2.2.5.
SetWeightShape
5.16.2.2.6.
SetInputShape
5.16.2.2.7.
SetGradOutputShape
5.16.2.2.8.
SetWeightType
5.16.2.2.9.
SetInputType
5.16.2.2.10.
SetGradOutputType
5.16.2.2.11.
SetPadding
5.16.2.2.12.
SetStride
5.16.2.2.13.
SetDilation
5.17. 模板库函数
5.17.1.
max
5.17.2.
min
5.17.3.
index_sequence
5.17.4. 容器函数
5.17.4.1.
tuple
5.17.4.2.
get
5.17.4.3.
make_tuple
5.17.5. type
traits
5.17.5.1.
is_convertible
5.17.5.2.
is
base
of
5.17.5.3.
is_same
5.17.5.4.
enable_if
5.17.5.5. [conditional](https://www.hiascend.com/doc
center/source/zh/CANNCommunityEdition/82RC1/API/ascendcopapi/atlasascendc
api
07_10118.html)
Host API
6.1. 原型注册与管理
6.1.1.
原型注册接口(OP_ADD)
6.1.2. OpDef
6.1.2.1.
Input
6.1.2.2.
Output
6.1.2.3.
Attr
6.1.2.4.
SetInferShape
6.1.2.5.
SetInferShapeRange
6.1.2.6.
SetInferDataType
6.1.2.7.
AICore
6.1.2.8.
MC2
6.1.2.9.
EnableFallBack
6.1.2.10.
Comment
6.1.2.11.
FormatMatchMode
6.1.3. OpParamDef
6.1.3.1.
ParamType
6.1.3.2.
DataType
6.1.3.3.
DataTypeForBinQuery
6.1.3.4.
DataTypeList
6.1.3.5.
Format
6.1.3.6.
FormatForBinQuery
6.1.3.7.
FormatList
6.1.3.8.
UnknownShapeFormat(废弃)
6.1.3.9.
ValueDepend
6.1.3.10.
IgnoreContiguous
6.1.3.11.
AutoContiguous
6.1.3.12.
Scalar
6.1.3.13.
ScalarList
6.1.3.14.
To
6.1.3.15.
Version
6.1.3.16.
InitValue
6.1.3.17.
OutputShapeDependOnCompute
6.1.3.18.
Follow
6.1.3.19.
Comment
6.1.4. OpAttrDef
6.1.4.1.
OpAttrDef
6.1.4.2.
Comment
6.1.5. OpAICoreDef
6.1.5.1.
SetTiling
6.1.5.2.
SetCheckSupport
6.1.5.3.
SetOpSelectFormat
6.1.5.4.
AddConfig
6.1.6. OpAICoreConfig
6.1.6.1.
Input
6.1.6.2.
Output
6.1.6.3.
DynamicCompileStaticFlag
6.1.6.4.
DynamicFormatFlag
6.1.6.5.
DynamicRankSupportFlag
6.1.6.6.
DynamicShapeSupportFlag
6.1.6.7.
NeedCheckSupportFlag
6.1.6.8.
PrecisionReduceFlag
6.1.6.9.
ExtendCfgInfo
6.1.7. OpMC2Def
6.1.7.1.
简介
6.1.7.2.
构造函数
6.1.7.3.
HcclGroup
6.1.7.4.
operator=
6.2. Tiling数据结构注册
6.2.1.
TilingData结构定义
6.2.2.
TilingData结构注册
6.2.3. ContextBuilder
6.2.3.1.
简介
6.2.3.2.
构造函数
6.2.3.3.
KernelRunContextHolder结构定义
6.2.3.4.
Inputs
6.2.3.5.
Outputs
6.2.3.6.
BuildKernelRunContext
6.2.3.7.
NodeIoNum
6.2.3.8.
SetOpNameType
6.2.3.9.
IrInstanceNum
6.2.3.10.
AddInputTd
6.2.3.11.
AddOutputTd
6.2.3.12.
AddAttr
6.2.3.13.
CompileInfo
6.2.3.14.
PlatformInfo
6.2.3.15.
AddPlatformInfo
6.2.3.16.
TilingData
6.2.3.17.
Workspace
6.2.3.18.
BuildTilingContext
6.2.4. OpTilingRegistry
6.2.4.1.
简介
6.2.4.2.
构造和析构函数
6.2.4.3.
GetTilingFunc
6.2.4.4.
LoadTilingLibrary
6.2.5.
模板参数定义
6.2.6.
GET
TPL
TILING_KEY
6.2.7.
ASCENDC
TPL
SEL_PARAM
6.2.8.
DEVICE
IMPL
OP_OPTILING
6.3. 平台信息获取
6.3.1. PlatformAscendC
6.3.1.1.
简介
6.3.1.2.
构造及析构函数
6.3.1.3.
GetCoreNum
6.3.1.4.
GetSocVersion
6.3.1.5.
GetCoreNumAic
6.3.1.6.
GetCoreNumAiv
6.3.1.7.
GetCoreNumVector
6.3.1.8.
CalcTschBlockDim
6.3.1.9.
GetCoreMemSize
6.3.1.10.
GetCoreMemBw
6.3.1.11.
GetLibApiWorkSpaceSize
6.3.1.12.
GetResGroupBarrierWorkSpaceSize
6.3.1.13.
GetResCubeGroupWorkSpaceSize
6.3.1.14.
ReserveLocalMemory
6.3.2.
PlatformAscendCManager
6.4. 单算子API执行相关接口
6.4.1.
单算子API执行相关接口列表
6.4.2. 框架能力接口
6.4.2.1. 常用宏和类
6.4.2.1.1.
ADD
TO
LAUNCHER
LIST
AICORE
6.4.2.1.2.
ADD
TO
LAUNCHER
LIST
AICPU
6.4.2.1.3.
CREATE_EXECUTOR
6.4.2.1.4.
DFX_IN
6.4.2.1.5.
DFX_OUT
6.4.2.1.6.
INFER_SHAPE
6.4.2.1.7.
L0_DFX
6.4.2.1.8.
L2
DFX
PHASE_1
6.4.2.1.9.
L2
DFX
PHASE_2
6.4.2.1.10.
OP_ATTR
6.4.2.1.11.
OP
ATTR
NAMES
6.4.2.1.12.
OP
EMPTY
ARG
6.4.2.1.13.
OP_INPUT
6.4.2.1.14.
OP_MODE
6.4.2.1.15.
OP_OUTPUT
6.4.2.1.16.
OP_OUTSHAPE
6.4.2.1.17.
OP_OPTION
6.4.2.1.18.
OP
TYPE
REGISTER
6.4.2.1.19.
OP_WORKSPACE
6.4.2.1.20.
OpImplMode
6.4.2.1.21.
OpExecMode
6.4.2.2.
bfloat16
6.4.2.3. common
types
6.4.2.3.1.
GetStorageShape
6.4.2.3.2.
SetStorageShape
6.4.2.3.3.
GetOriginalShape
6.4.2.3.4.
SetOriginalShape
6.4.2.3.5.
GetViewShape
6.4.2.3.6.
SetViewShape
6.4.2.3.7.
GetStorageFormat
6.4.2.3.8.
SetStorageFormat
6.4.2.3.9.
GetOriginalFormat
6.4.2.3.10.
SetOriginalFormat
6.4.2.3.11.
GetViewFormat
6.4.2.3.12.
SetViewFormat
6.4.2.3.13.
GetViewStrides
6.4.2.3.14.
SetViewStrides
6.4.2.3.15.
Numel
6.4.2.3.16.
GetDataType
6.4.2.3.17.
IsEmpty
6.4.2.3.18.
SetData
6.4.2.3.19.
SetDataType
6.4.2.3.20.
SetBoolData
6.4.2.3.21.
SetIntData
6.4.2.3.22.
SetFloatData
6.4.2.3.23.
SetFp16Data
6.4.2.3.24.
SetBf16Data
6.4.2.3.25.
CheckOverflows
6.4.2.3.26. [预留接口](https://www.hiascend.com/doc
center/source/zh/CANNCommunityEdition/82RC1/API/ascendcopapi/atlasascendc
api
07_1093.html)
6.4.2.4. data
type
utils
6.4.2.4.1.
IsBasicType
6.4.2.4.2.
IsNumberType
6.4.2.4.3.
IsRealNumberType
6.4.2.4.4.
TypeSize
6.4.2.4.5.
ToOpDataType
6.4.2.4.6.
ToAclDataType
6.4.2.4.7.
预留接口
6.4.2.5. format
utils
6.4.2.5.1.
IsPrivateFormat
6.4.2.5.2.
GetPrimaryFormat
6.4.2.5.3.
ToOpFormat
6.4.2.5.4.
ToAclFormat
6.4.2.5.5. [预留接口](https://www.hiascend.com/doc
center/source/zh/CANNCommunityEdition/82RC1/API/ascendcopapi/atlasascendc
api
07_1107.html)
6.4.2.6.
fp16_t
6.4.2.7. framework
op
6.4.2.7.1.
CopyToNpu
6.4.2.7.2.
CopyToNpuSync
6.4.2.7.3. [CopyNpuToNpu](https://www.hiascend.com/doc
center/source/zh/CANNCommunityEdition/82RC1/API/ascendcopapi/atlasascendc
api
07_1112.html)
6.4.2.8.
object
6.4.2.9.
op
arg
def
6.4.2.10.
op_cache
6.4.2.11.
op
cache
container
6.4.2.12.
op_config
6.4.2.13.
op_def
6.4.2.14.
op_dfx
6.4.2.15. op
executor
6.4.2.15.1.
AllocTensor
6.4.2.15.2.
AllocHostTensor
6.4.2.15.3.
AllocIntArray
6.4.2.15.4.
AllocFloatArray
6.4.2.15.5.
AllocBoolArray
6.4.2.15.6.
AllocTensorList
6.4.2.15.7.
AllocScalarList
6.4.2.15.8.
AllocScalar
6.4.2.15.9.
ConvertToTensor
6.4.2.15.10.
CommonOpExecutorRun
6.4.2.15.11.
ReleaseTo
6.4.2.15.12.
Getworkspacesize
6.4.2.15.13.
AbandonCache
6.4.2.15.14. [预留接口](https://www.hiascend.com/doc
center/source/zh/CANNCommunityEdition/82RC1/API/ascendcopapi/atlasascendc
api
07_1133.html)
6.4.2.16.
op_log
6.4.2.17. platform
6.4.2.17.1.
GetCurrentPlatformInfo
6.4.2.17.2.
GetSocVersion
6.4.2.17.3.
GetSocLongVersion
6.4.2.17.4.
GetBlockSize
6.4.2.17.5.
预留接口
6.4.2.18.
pool_allocator
6.4.2.19. shape
utils
6.4.2.19.1.
ToShape
6.4.2.19.2.
ToShapeVector
6.4.2.19.3.
ToContiguousStrides
6.4.2.19.4.
CheckBroadcastShape
6.4.2.19.5.
BroadcastInferShape
6.4.2.19.6. [预留接口](https://www.hiascend.com/doc
center/source/zh/CANNCommunityEdition/82RC1/API/ascendcopapi/atlasascendc
api
07_1148.html)
6.4.2.20.
small_vector
6.4.2.21. tensor
view
utils
6.4.2.21.1.
IsContiguous
6.4.2.21.2.
预留接口
6.4.2.22. op
common相关接口
6.4.2.22.1. data
type
utils
6.4.2.22.1.1.
IsComplexType
6.4.2.22.1.2.
IsFloatingType
6.4.2.22.1.3.
IsIntegralType
6.4.2.22.1.4.
IsIntegralType(含bool)
6.4.2.22.1.5.
CanCast
6.4.2.22.1.6. [PromoteType](https://www.hiascend.com/doc
center/source/zh/CANNCommunityEdition/82RC1/API/ascendcopapi/atlasascendc
api
07_1160.html)
6.4.2.23. aicpu相关接口
6.4.2.23.1.
AicpuTask类
6.4.2.23.2.
AicpuTaskSpace类
6.4.2.23.3.
aicpu
args
handler
6.4.2.23.4.
aicpu
ext
info_handle
6.4.2.23.5.
aicpu_uitls
6.4.2.23.6.
aicpu_task
6.4.3. 基础核函数接口
6.4.3.1.
Cast
6.4.3.2.
Contiguous
6.4.3.3.
ViewCopy
6.4.3.4.
Pad
6.4.3.5.
Reshape
6.4.3.6.
Slice
6.4.3.7.
Transpose
6.4.3.8.
TransData
6.4.3.9.
TransDataSpecial
6.4.3.10.
ReFormat
6.4.3.11.
IsNullptr
6.5.
内部关联接口
算子调测API
7.1.
DumpTensor
7.2.
printf
7.3.
assert
7.4.
DumpAccChkPoint
7.5.
Trap
7.6.
PrintTimeStamp
7.7.
GmAlloc
7.8.
ICPU
RUN
KF
7.9.
ICPU
SET
TILING_KEY
7.10.
GmFree
7.11.
SetKernelMode
7.12.
TRACE_START
7.13.
TRACE_STOP
7.14.
MetricsProfStart
7.15.
MetricsProfStop
预留接口
Ascend C 最佳实践
1. 前言
2. 异构计算
功能调试
3.1. 运行正常
3.2. 精度正常
3.3. 算子调试
性能分析
4.1. 获取性能数据
4.2. 分析性能数据
性能优化
5.1. 优化建议总览表
5.2. 搬运优化
5.2.1. 尽量一次搬运较大的数据块
5.2.2. GM地址尽量512B对齐
5.2.3. 高效的使用搬运API
5.3. 内存优化
5.3.1. 算子与高阶API共享临时Buffer
5.3.2. 限制TilingData结构大小
5.3.3. 通过缩减Tensor ShapeInfo维度,优化栈空间
5.3.4. 通过Unified Buffer融合实现连续vector计算
5.3.5. 通过BT Buffer实现高效的bias计算
5.3.6. 通过FP Buffer存放量化参数实现高效随路量化
5.3.7. 通过L0C Buffer数据暂存实现高效的矩阵乘结果累加
5.3.8. 较小矩阵长驻L1 Buffer,仅分次搬运较大矩阵
5.3.9. 优化bank分配以提升读写性能
5.4. API使用优化
5.4.1. 纯搬运类算子VECIN和VECOUT建议复用
5.4.2. 避免TPipe在对象内创建和初始化
5.4.3. Matmul使能AtomicAdd选项
5.4.4. Vector算子灵活运用Counter模式
5.4.5. 针对不同场景合理使用归约指令
5.5. 流水优化
5.5.1. 使能double buffer
5.5.2. 使能Iterate或IterateAll异步接口避免AIC/AIV同步依赖
5.6. Tiling优化
5.6.1. L2 Cache切分
5.6.2. 核间负载均衡
优秀实践
6.1. FlashAttention算子性能调优案例
6.2. Matmul算子性能调优案例
6.3. GroupedMatmul算子性能调优案例
6.4. MC²算子性能调优案例
6.5. Matmul高阶API使能IBShare性能提升案例
6.6. Matmul常量化算子性能提升案例
算子开发工具
简介
环境准备
算子设计(msKPP)
3.1.
工具概述
3.2.
使用前准备
3.3. 性能建模
3.3.1.
原理概述
3.3.2.
算子特性建模
3.3.3.
算子计算搬运规格分析
3.3.4.
极限性能分析
3.3.5.
算子tiling初步设计
3.3.6. 对外接口使用说明
3.3.6.1.
接口列表
3.3.6.2. 基础功能接口
3.3.6.2.1.
Chip
3.3.6.2.2.
Core
3.3.6.2.3.
Tensor
3.3.6.2.4.
Tensor.load
3.3.6.3. 同步类指令接口
3.3.6.3.1.
set_flag
3.3.6.3.2.
wait_flag
3.3.6.4. 指令接口
3.3.6.4.1.
mmad
3.3.6.4.2.
vadd
3.3.6.4.3.
vbrcb
3.3.6.4.4.
vconv
3.3.6.4.5.
vconv_deq
3.3.6.4.6.
vconv_vdeq
3.3.6.4.7.
vector_dup
3.3.6.4.8.
vexp
3.3.6.4.9.
vln
3.3.6.4.10.
vmax
3.3.6.4.11.
vmul
3.3.6.4.12.
vmuls
3.3.6.4.13.
vsub
3.3.6.4.14.
vdiv
3.3.6.4.15.
vcadd
3.3.6.4.16.
vabs
3.3.6.4.17.
vaddrelu
3.3.6.4.18.
vaddreluconv
3.3.6.4.19.
vadds
3.3.6.4.20.
vand
3.3.6.4.21.
vaxpy
3.3.6.4.22.
vbitsort
3.3.6.4.23.
vcgadd
3.3.6.4.24.
vcgmax
3.3.6.4.25.
vcgmin
3.3.6.4.26.
vcmax
3.3.6.4.27.
vcmin
3.3.6.4.28.
vcmp_xxx
3.3.6.4.29.
vcmpv_xxx
3.3.6.4.30.
vcmpvs_xxx
3.3.6.4.31.
vcopy
3.3.6.4.32.
vcpadd
3.3.6.4.33.
vgather
3.3.6.4.34.
vgatherb
3.3.6.4.35.
vlrelu
3.3.6.4.36.
vmadd
3.3.6.4.37.
vmaddrelu
3.3.6.4.38.
vmaxs
3.3.6.4.39.
vmin
3.3.6.4.40.
vmins
3.3.6.4.41.
vmla
3.3.6.4.42.
vmrgsort
3.3.6.4.43.
vmulconv
3.3.6.4.44.
vnot
3.3.6.4.45.
vor
3.3.6.4.46.
vrec
3.3.6.4.47.
vreduce
3.3.6.4.48.
vreducev2
3.3.6.4.49.
vrelu
3.3.6.4.50.
vrsqrt
3.3.6.4.51.
vsel
3.3.6.4.52.
vshl
3.3.6.4.53.
vshr
3.3.6.4.54.
vsqrt
3.3.6.4.55.
vsubrelu
3.3.6.4.56.
vsubreluconv
3.3.6.4.57.
vtranspose
3.4. 调用msOpGen算子工程
3.4.1.
功能介绍
3.4.2.
调用示例
3.4.3. 接口列表
3.4.3.1.
mskpp.tiling_func
3.4.3.2.
mskpp.get
kernel
from_binary
3.5. 自动调优
3.5.1.
功能介绍
3.5.2.
快速入门
3.5.3.
自动调优示例
3.5.4. 接口列表
3.5.4.1.
autotune
3.5.4.2.
code_gen
3.5.4.3.
compile
3.5.4.4.
autotune_v2
3.5.4.5.
compile_executable
3.5.5. 附录
3.5.5.1.
basic
matmul
autotune.py
3.5.5.2.
jit_build.sh
3.5.5.3.
basic
matmul
executable_autotune.py
3.5.5.4.
jit
build
executable.sh
3.6. FAQ
3.6.1.
运行Kernel时提示权限错误
算子工程创建(msOpGen)
4.1.
工具概述
4.2.
使用前准备
4.3.
创建算子工程
4.4.
算子开发
4.5.
算子编译部署
4.6.
查看算子仿真流水图
4.7. 典型案例
4.7.1.
Ascend C自定义算子开发实践
算子测试(msOpST)
5.1.
工具概述
5.2.
使用前准备
5.3.
生成测试用例定义文件
5.4.
生成/执行测试用例
5.5.
生成单算子上板测试框架
5.6. 典型案例
5.6.1.
测试用例定义文件
异常检测(msSanitizer)
6.1.
工具概述
6.2.
使用前准备
6.3.
内存检测
6.4.
竞争检测
6.5.
未初始化检测
6.6. 典型案例
6.6.1.
检测内核调用符方式的Ascend C算子
6.6.2.
检测API调用的单算子
6.6.3.
检测PyTorch接口调用的算子
6.6.4.
检测CANN软件栈的内存
6.7. FAQ
6.7.1.
msSanitizer工具异常报告中未显示正确的文件名和行号
6.7.2.
msSanitizer工具使用"--cce-enable-sanitizer -g"编译算子时出现"InputSection too large"错误
6.7.3.
msSanitizer工具提示--cache-size异常
6.8. 对外接口使用说明
6.8.1.
接口列表
6.8.2. sanitizer接口
6.8.2.1.
sanitizerRtMalloc
6.8.2.2.
sanitizerRtMallocCached
6.8.2.3.
sanitizerRtFree
6.8.2.4.
sanitizerRtMemset
6.8.2.5.
sanitizerRtMemsetAsync
6.8.2.6.
sanitizerRtMemcpy
6.8.2.7.
sanitizerRtMemcpyAsync
6.8.2.8.
sanitizerRtMemcpy2d
6.8.2.9.
sanitizerRtMemcpy2dAsync
6.8.2.10.
sanitizerReportMalloc
6.8.2.11.
sanitizerReportFree
6.8.3. 扩展接口(mstx)
6.8.3.1.
mstx接口简介
6.8.3.2.
mstxDomainCreateA
6.8.3.3.
mstxMemHeapRegister
6.8.3.4.
mstxMemRegionsRegister
6.8.3.5.
mstxMemRegionsUnregister
6.8.3.6.
mstxMemHeapUnregister
算子调试(msDebug)
7.1.
工具概述
7.2.
使用前准备
7.3.
指定Device ID(通算融合算子场景)
7.4.
断点设置
7.5.
内存与变量打印
7.6.
单步调试
7.7.
中断运行
7.8.
核切换
7.9.
读取寄存器
7.10.
调试信息展示
7.11.
解析异常算子dump文件
7.12. 典型案例
7.12.1.
上板调试vector算子
7.12.2.
调用Ascend CL单算子
7.12.3.
调试PyTorch接口调用的算子
7.12.4.
上板调试模板库的算子
7.13. FAQ
7.13.1.
msDebug工具使用"-O0 -g"编译算子时,stack frame size超出限制
7.13.2.
msDebug工具打印Tensor变量功能不可用,提示“unavailable”或“memory read failed”
7.13.3.
msDebug工具在容器环境中调试运行失败,提示需安装HDK驱动包
7.13.4.
msDebug工具断点设置在核函数内,命中断点后执行continue命令,算子运行失败
7.13.5.
msDebug工具在docker中执行"run"命令运行程序后,提示“'A' packet returned an error: 8”
算子调优(msProf)
8.1.
工具概述
8.2.
使用前准备
8.3.
工具使用
8.4.
计算内存热力图
8.5.
Roofline瓶颈分析图
8.6.
Cache热力图
8.7.
通算流水图
8.8.
指令流水图
8.9.
算子代码热点图
8.10.
内存通路吞吐率波形图
8.11. 性能数据文件
8.11.1. msprof op
8.11.1.1.
ArithmeticUtilization(cube及vector类型指令耗时和占比)
8.11.1.2.
L2Cache(L2 Cache命中率)
8.11.1.3.
Memory(内存读写带宽速率)
8.11.1.4.
MemoryL0(L0读写带宽速率)
8.11.1.5.
MemoryUB(UB读写带宽速率)
8.11.1.6.
OpBasicInfo(算子基础信息)
8.11.1.7.
PipeUtilization(计算单元和搬运单元耗时占比)
8.11.1.8.
ResourceConflictRatio(资源冲突占比)
8.11.2. msprof op simulator
8.11.2.1.
代码行耗时数据文件
8.11.2.2.
代码指令信息文件
8.12.
Json配置文件说明
8.13. 典型案例
8.13.1.
采集Ascend C算子的性能数据
8.13.2.
通过指令流水图优化算子
8.13.3.
采集MC2算子的性能数据
8.14. 扩展接口(mstx)
8.14.1.
mstx接口简介
8.14.2.
mstxRangeStartA
8.14.3.
mstxRangeEnd
附录
9.1. TBE&AI CPU算子开发场景
9.1.1.
基于msOpGen工具创建算子工程
9.1.2. 算子编译部署
9.1.2.1.
简介
9.1.2.2.
算子工程编译
9.1.2.3.
算子交付件独立编译
9.1.2.4.
算子包部署
9.1.3. 基于msOpST工具进行算子ST测试
9.1.3.1.
简介
9.1.3.2.
生成测试用例定义文件
9.1.3.3.
生成/执行测试用例
9.1.3.4.
测试用例定义文件配置样例