cann/asc-devkit SIMD矢量算子编程指南
概述【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit本节将以Add算子为例带您快速构建Ascend C矢量算子程序并学习矢量算子开发的典型场景以及处理方式。涉及的场景包括基础矢量算子开发一个简单的Add矢量算子。TBuf的使用在算子计算过程中使用临时空间存储运算的中间结果。多核Tiling算子在AI处理器的多个核上运行所有核的计算数据量相等且32字节对齐。尾块Tiling算子在AI处理器的多个核上运行所有核的计算数据量相等每个核上除最后一个数据块尾块外其余数据块的数据量相等每个核都需要处理尾块数据的计算。尾核Tiling算子在AI处理器的多个核上运行数据无法平均分配到每个核。将所有核分为多个整核和多个尾核整核的计算数据量相等尾核的计算数据量相等。尾核尾块算子在AI处理器的多个核上运行数据无法平均分配到每个核同时每个核内的数据无法均分除最后一个数据块尾块外其余数据块的数据量相等每个核都需要单独处理尾块数据的计算。DoubleBuffer场景开启double buffer算子中的多条流水并行执行。Broadcast场景算子中两个输入的shape形状不相等需要将一个输入的shape进行Broadcast广播后再执行计算。非对齐场景更多数据非32字节对齐场景的处理方案。[!NOTE]注意 进行数据搬运和Vector计算时对于搬运的数据长度和操作数的起始地址有如下的对齐要求使用DataCopy接口进行数据搬运搬运的数据长度和操作数的起始地址Unified Buffer上必须保证32字节对齐。通常情况下进行Vector计算时操作数的起始地址必须保证32字节对齐执行计算的基本单位为32字节。【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考