矩阵乘输出的N方向对齐【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit功能介绍矩阵乘输出的N方向对齐即矩阵乘结果C矩阵按ND_ALIGN格式输出。在Matmul矩阵乘法中常用的矩阵数据格式有ND、NZ相关介绍可参考数据格式章节。ND_ALIGN是矩阵的另一种数据格式该格式一般用于N方向非32字节对齐的矩阵乘计算中配置结果C矩阵为ND_ALIGN格式后将按照N方向32字节对齐的补齐规则输出C矩阵详细内容请见ND_ALIGN。以M16K16N14A、B矩阵数据类型为half的Matmul为具体示例说明ND_ALIGN输出功能。当配置C矩阵为ND格式并输出到Global Memory时按照原始N方向大小非32字节对齐输出如图1所示。当配置C矩阵为ND格式时按照N方向32字节对齐输出如图2所示C矩阵的N方向最后两列由下一行的实际数据进行填充补齐以实现N方向对齐到32字节并输出。当配置C矩阵为ND_ALIGN格式时Matmul API会在C矩阵的N方向上通过添加无效数据来填充最后两列以确保N方向对齐至32字节并输出如图3所示。图1ND格式C矩阵N方向非32字节对齐示意图图2ND格式C矩阵N方向32字节对齐示意图图3ND_ALIGN格式C矩阵N方向32字节对齐示意图使用场景Matmul计算中N方向非32字节对齐输出C矩阵的N方向要求32字节对齐的场景。约束说明若配置C矩阵为ND_ALIGN格式输出则为C矩阵申请的Buffer空间为N向上32字节对齐后的空间大小。调用示例完整的算子样例请参考matmul_nd_align算子样例。Tiling实现调用SetCType接口设置C矩阵的数据格式为CubeFormat::ND_ALIGN其它Tiling实现与基础场景相同。auto ascendcPlatform platform_ascendc::PlatformAscendC(context-GetPlatformInfo()); matmul_tiling::MatmulApiTiling tiling(ascendcPlatform); tiling.SetAType(matmul_tiling::TPosition::GM, matmul_tiling::CubeFormat::ND, matmul_tiling::DataType::DT_FLOAT16); tiling.SetBType(matmul_tiling::TPosition::GM, matmul_tiling::CubeFormat::ND, matmul_tiling::DataType::DT_FLOAT16); // 设置C矩阵buffer位置为GM数据格式为ND_ALIGN tiling.SetCType(matmul_tiling::TPosition::GM, matmul_tiling::CubeFormat::ND_ALIGN, matmul_tiling::DataType::DT_FLOAT); tiling.SetBiasType(AscendC::TPosition::GM, matmul_tiling::CubeFormat::ND, matmul_tiling::DataType::DT_FLOAT); ... // 其他实现内容 optiling::TCubeTiling tilingData; int ret tiling.GetTiling(tilingData);Kernel实现相较于基础场景ND_ALIGN输出功能要求在创建Matmul对象时设置模板参数cType的数据格式为CubeFormat::ND_ALIGN。#include lib/matmul_intf.h typedef AscendC::MatmulTypeAscendC::TPosition::GM, CubeFormat::ND, half aType; typedef AscendC::MatmulTypeAscendC::TPosition::GM, CubeFormat::ND, half bType; // 设置模板参数cType的数据格式为ND_ALIGN typedef AscendC::MatmulTypeAscendC::TPosition::GM, CubeFormat::ND_ALIGN, float cType; typedef AscendC::MatmulTypeAscendC::TPosition::GM, CubeFormat::ND, float biasType; AscendC::MatmulaType, bType, cType, biasType mm;【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
Ascend C矩阵乘N向对齐
发布时间:2026/7/18 8:56:58
矩阵乘输出的N方向对齐【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit功能介绍矩阵乘输出的N方向对齐即矩阵乘结果C矩阵按ND_ALIGN格式输出。在Matmul矩阵乘法中常用的矩阵数据格式有ND、NZ相关介绍可参考数据格式章节。ND_ALIGN是矩阵的另一种数据格式该格式一般用于N方向非32字节对齐的矩阵乘计算中配置结果C矩阵为ND_ALIGN格式后将按照N方向32字节对齐的补齐规则输出C矩阵详细内容请见ND_ALIGN。以M16K16N14A、B矩阵数据类型为half的Matmul为具体示例说明ND_ALIGN输出功能。当配置C矩阵为ND格式并输出到Global Memory时按照原始N方向大小非32字节对齐输出如图1所示。当配置C矩阵为ND格式时按照N方向32字节对齐输出如图2所示C矩阵的N方向最后两列由下一行的实际数据进行填充补齐以实现N方向对齐到32字节并输出。当配置C矩阵为ND_ALIGN格式时Matmul API会在C矩阵的N方向上通过添加无效数据来填充最后两列以确保N方向对齐至32字节并输出如图3所示。图1ND格式C矩阵N方向非32字节对齐示意图图2ND格式C矩阵N方向32字节对齐示意图图3ND_ALIGN格式C矩阵N方向32字节对齐示意图使用场景Matmul计算中N方向非32字节对齐输出C矩阵的N方向要求32字节对齐的场景。约束说明若配置C矩阵为ND_ALIGN格式输出则为C矩阵申请的Buffer空间为N向上32字节对齐后的空间大小。调用示例完整的算子样例请参考matmul_nd_align算子样例。Tiling实现调用SetCType接口设置C矩阵的数据格式为CubeFormat::ND_ALIGN其它Tiling实现与基础场景相同。auto ascendcPlatform platform_ascendc::PlatformAscendC(context-GetPlatformInfo()); matmul_tiling::MatmulApiTiling tiling(ascendcPlatform); tiling.SetAType(matmul_tiling::TPosition::GM, matmul_tiling::CubeFormat::ND, matmul_tiling::DataType::DT_FLOAT16); tiling.SetBType(matmul_tiling::TPosition::GM, matmul_tiling::CubeFormat::ND, matmul_tiling::DataType::DT_FLOAT16); // 设置C矩阵buffer位置为GM数据格式为ND_ALIGN tiling.SetCType(matmul_tiling::TPosition::GM, matmul_tiling::CubeFormat::ND_ALIGN, matmul_tiling::DataType::DT_FLOAT); tiling.SetBiasType(AscendC::TPosition::GM, matmul_tiling::CubeFormat::ND, matmul_tiling::DataType::DT_FLOAT); ... // 其他实现内容 optiling::TCubeTiling tilingData; int ret tiling.GetTiling(tilingData);Kernel实现相较于基础场景ND_ALIGN输出功能要求在创建Matmul对象时设置模板参数cType的数据格式为CubeFormat::ND_ALIGN。#include lib/matmul_intf.h typedef AscendC::MatmulTypeAscendC::TPosition::GM, CubeFormat::ND, half aType; typedef AscendC::MatmulTypeAscendC::TPosition::GM, CubeFormat::ND, half bType; // 设置模板参数cType的数据格式为ND_ALIGN typedef AscendC::MatmulTypeAscendC::TPosition::GM, CubeFormat::ND_ALIGN, float cType; typedef AscendC::MatmulTypeAscendC::TPosition::GM, CubeFormat::ND, float biasType; AscendC::MatmulaType, bType, cType, biasType mm;【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考