
WriteSpmBuffer【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit产品支持情况Ascend 950PR/Ascend 950DT支持Atlas A3 训练系列产品/Atlas A3 推理系列产品支持Atlas A2 训练系列产品/Atlas A2 推理系列产品支持Atlas 200I/500 A2 推理产品不支持Atlas 推理系列产品AI Core支持Atlas 推理系列产品Vector Core不支持Atlas 训练系列产品支持Kirin X90支持Kirin 9030支持功能说明头文件路径为basic_api/kernel_tpipe.h。将因为UB空间不足而需要溢出暂存的数据拷贝到SPM Buffer中。函数原型适用于连续和不连续的数据暂存template typename T __aicore__ inline void WriteSpmBuffer(const LocalTensorT writeBuffer, const DataCopyParams copyParams, int32_t writeOffset 0)适用于连续的数据暂存template typename T __aicore__ inline void WriteSpmBuffer(const LocalTensorT writeBuffer, const int32_t writeSize, int32_t writeOffset 0)参数说明表1模板参数说明参数名称含义T待获取Tensor的数据类型支持的类型请见LocalTensor相关描述。表2接口参数说明参数名称输入/输出含义writeBuffer输入需要溢出暂存的Local内存。copyParams输入搬运参数DataCopyParams类型DataCopyParams结构定义请参考表3。writeSize输入拷贝的元素个数。writeOffset输入拷贝到SPM Buffer的偏移单位为字节。表3DataCopyParams结构体参数定义参数名称含义blockCount待搬运的连续传输数据块个数。uint16_t类型取值范围blockCount∈[1, 4095]。blockLen待搬运的每个连续传输数据块长度单位为DataBlock32字节。uint16_t类型取值范围blockLen∈[1, 65535]。srcGap源操作数相邻连续数据块的间隔前面一个数据块的尾与后面数据块的头的间隔单位为DataBlock32字节。uint16_t类型srcGap不要超出该数据类型的取值范围。dstGap目的操作数相邻连续数据块间的间隔前面一个数据块的尾与后面数据块的头的间隔单位为DataBlock32字节。uint16_t类型dstGap不要超出该数据类型的取值范围。约束说明暂存拷贝到L1时注意writeSize和writeOffset保证32字节对齐。拷贝的内存不要超出初始化的SPM Buffer大小否则会存在溢出踩踏等问题。返回值说明无调用示例使用DataCopyParams搬运AscendC::TPipe pipe; int offset 32; // 拷贝到SPM Buffer时偏移32字节 AscendC::DataCopyParams copyParams{2, 2, 1, 1}; // 搬运两个数据块一个数据块的长度为2个datablock一个datablock为32字节源地址和目的地址相邻数据块间均间隔一个数据块 // writeLocal为UB上的half类型的LocalTensor pipe.WriteSpmBuffer(writeLocal, copyParams, offset); // 将UB上的数据块搬运到SPM Buffer ... pipe.ReadSpmBuffer(writeLocal, copyParams, offset); // 当UB空间足够时将暂存在SPM Buffer的数据读回到UB使用writeSize连续搬运AscendC::TPipe pipe; int dataSize 32; int offset 32; // 拷贝到spmBuffer时偏移32字节 ; // writeLocal为UB上的half类型的LocalTensor pipe.WriteSpmBuffer(writeLocal, dataSize, offset); // 将UB上的连续传输数据块搬运到SPM Buffer ... pipe.ReadSpmBuffer(writeLocal, dataSize, offset); // 当UB空间足够时将暂存在SPM Buffer的数据读回到UB【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考