Ascend C矩阵搬入边界设置

📅 2026/7/16 13:04:58
Ascend C矩阵搬入边界设置
# SetLoadDataBoundary【免费下载链接】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 训练系列产品不支持功能说明头文件路径为basic_api/kernel_operator_mm_intf.h。设置LoadData卷积数据搬运接口所需的L1 BufferTPosition: A1/B1边界值。如果LoadData卷积数据搬运指令在处理源操作数时源操作数在L1 BufferA1/B1上的地址超出设置的边界则会从L1 BufferA1/B1起始地址开始读取数据。函数原型__aicore__ inline void SetLoadDataBoundary(uint32_t boundaryValue)参数说明表1参数说明参数名称输入/输出含义boundaryValue输入边界值单位是Byte。• LoadData卷积数据搬运v1指令单位是32字节。• LoadData卷积数据搬运v2指令单位是字节。返回值说明无约束说明如果使用SetLoadDataBoundary接口设置了边界值配合LoadData卷积数据搬运指令使用时LoadData卷积数据搬运指令的A1/B1初始地址要在设置的边界内。如果boundaryValue设置为0则表示无边界可使用整个A1/B1。配合LoadData卷积数据搬运指令使用时边界值大小最小值要求是1024如果设置1~1023值是未定义行为。操作数地址对齐要求请参见通用地址对齐约束。调用示例参考调用示例。本接口用于配合LoadData卷积数据搬运接口使用展示代码示例片段// LoadData卷积数据搬运指令完成img2col的过程可知img2col后A矩阵高度为ho * wo根据ho和wo的计算公式代入卷积核宽度、卷积核滑动步长、卷积核膨胀系数等参数可知A矩阵的高度为CeilAlign(k, fractalShape[0])img2col后A矩阵宽度为ci * kh * kw代入kh1kw1可知A矩阵的宽度为CeilAlign(m, fractalShape[1])。最后配置loadDataParams.enTranspose true将整个A矩阵转置并且将其中每一个分形转置 // 使用load3d接口实现NZ2ZZ AscendC::LoadData3DParamsV2T loadDataParams; // 设置loadDataParams相关参数 ... // SetLoadDataBoundary设置为0可使用整个L1 Buffer AscendC::SetLoadDataBoundary(0); AscendC::LoadData(a2Local, a1Local, loadDataParams);【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考