Star
0
Fork
0
代码
介绍
代码
Issues
Pull Requests
流水线
Actions
项目讨论
Wiki
项目成员
1
分析
项目设置
Star
0
Fork
0
master
asc-devkit
/
docs
/
zh
/
guide
/
programming_guide
/
programming_guide.md
下载
cann-robot
docs: 章节节点新增独立索引文件,消除index.md重复链接并补全索引列表
072af621
创建于
18 天前
历史提交
编程指南
本文档组织结构
编程模型
异构系统
编程模型概述
AI Core SIMD编程
概述
抽象硬件架构
核函数(Kernel)
基于指针的C语言编程
C语言编程概述
Memory矢量计算编程
Reg矢量计算编程
Cube矩阵计算编程
基于Tensor的C++编程
C++ Tensor编程概述
Memory矢量计算编程
Reg矢量计算编程
Cube矩阵计算编程
静态Tensor编程
基于TPipe和TQue编程
TPipe-TQue框架编程原理
TPipe-TQue框架编程范式
AI Core SIMT编程
概述
抽象硬件架构
线程架构
内存层级
核函数(Kernel)
同步机制
原子操作
编程示例
AI CPU编程
编译与运行
异步执行
算子编译
毕昇编译器
AI Core算子编译基本用法
AI CPU算子编译基本用法
RTC运行时编译
约束说明
语言扩展层
SIMD BuiltIn关键字
SIMT BuiltIn关键字
SIMD与SIMT混合编程BuiltIn关键字
SIMD语言扩展层C API
SIMT语言扩展层C API
C++类库API
编程接口概述
基础API
概述
接口分类说明
连续计算API
高维切分API
常用操作速查指导
如何使用掩码操作API
如何使用归约计算API
高阶API
概述
常用操作速查指导
如何使用Tiling依赖的头文件
如何使用核函数(Kernel)侧临时空间
Utils API
调试调优
概述
功能调试
CPU域孪生调试
NPU域上板调试
性能调优
高级编程
硬件实现
基本架构
架构规格
NPU架构版本2002
NPU架构版本2201
NPU架构版本3002
NPU架构版本3510
硬件约束
NPU架构版本2002
NPU架构版本2201
NPU架构版本3510
内存模型
缓存一致性
内存一致性
核间通信
使用SSBuffer实现核间通信
高级核函数编程
核内同步
基于Mutex实现多流水同步
高级AI Core编程模型
SIMD与SIMT混合编程
概述
抽象硬件架构
核函数(Kernel)与VF函数
内存层级
编程示例
SuperKernel
原理介绍
算子适配说明
核函数(Kernel)直调算子额外适配说明
算子自验证说明
Aclnn算子工程化开发
概述
快速入门
设计与实现
算子功能设计
算子原型定义
Host侧Tiling实现
核函数(Kernel)侧算子实现
多分支策略
GenSimplifiedKey回调实现
通过TilingData传递属性信息
使用高阶API时配套的Tiling实现
核函数(Kernel)侧输出shape依赖计算
编译与部署
基本流程
交叉编译
多算子包组织
算子动态库和静态库编译
编译加速
编译过程调试
simplified key二进制配置JSON
调用
单算子API调用
运行时加载机制
基于simplified key的运行时选择流程
附录
aclnn工程化算子开发与核函数(Kernel)直调对比
命名转换规则对照表
CMake函数参考
外部样例链接汇总
算子入图开发
概述
基本开发流程
开启Tiling下沉
图编译和图执行
AI框架算子适配
概述
PyTorch框架
ONNX框架
适配插件开发
调用样例
TensorFlow框架
SIMT协作组
AOT编译优化
附录
show_kernel_debug_data工具
msobjdump工具
optype_collector工具
基于样例工程完成核函数(Kernel)直调
常用操作
如何开发动态输入算子
如何在矢量编程时启用Vector Core
如何使用workspace
如何进行Tiling调测
如何使用Tensor原地操作提升算子性能
FAQ
核函数(Kernel)运行验证时算子存在精度问题
运行验证时AllocTensor/FreeTensor失败
kernel侧获取Tiling信息不正确
核函数(Kernel)编译时报错"error: out of jump/jumpc imm range"
含有Matmul高阶API的算子精度问题
算子工程编译时出现文件名过长报错
调用算子时出现无法打开config.ini的报错
算子包部署时出现权限不足报错