CANN/Ascend C Matmul模板参数
Matmul模板参数【免费下载链接】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支持功能说明创建Matmul对象时需要传入A、B、C、Bias的参数类型信息类型信息通过MatmulType来定义包括内存逻辑位置、数据格式、数据类型、是否转置、数据排布和是否开启L1复用。MatmulConfig信息可选用于配置Matmul模板信息以及相关的配置参数。不配置默认使用Norm模板。针对Atlas 200I/500 A2 推理产品当前只支持使用默认的Norm模板。MatmulCallBackFunc回调函数信息可选用于配置A矩阵从GM拷贝到L1 BufferA1、B矩阵从GM拷贝到L1 BufferB1、计算结果从L0C BufferCO1拷贝到GM的自定义函数。当前支持如下产品型号Ascend 950PR/Ascend 950DTAtlas A3 训练系列产品/Atlas A3 推理系列产品Atlas A2 训练系列产品/Atlas A2 推理系列产品Kirin X90MatmulPolicy信息可选用于配置Matmul可拓展模块策略。不配置使用默认模板策略。当前支持如下产品型号Ascend 950PR/Ascend 950DTAtlas A3 训练系列产品/Atlas A3 推理系列产品Atlas A2 训练系列产品/Atlas A2 推理系列产品Atlas 200I/500 A2 推理产品Atlas 推理系列产品AI CoreKirin X90函数原型Matmul模板参数如下template class A_TYPE, class B_TYPE, class C_TYPE, class BIAS_TYPE C_TYPE, const auto MM_CFG CFG_NORM, class MM_CB MatmulCallBackFuncnullptr, nullptr, nullptr, MATMUL_POLICY_DEFAULT_OF(MatmulPolicy)A_TYPE、B_TYPE、C_TYPE类型信息通过MatmulType来定义。auto类型的参数MM_CFG可选支持MatmulConfig类型Matmul模板信息具体内容见MatmulConfig。支持MatmulApiStaticTiling类型MatmulApiStaticTiling参数说明见表1。MatmulApiStaticTiling结构体中包括一组常量化Tiling参数和MatmulConfig结构。这种类型参数的定义方式为通过调用MatmulConfig章节中介绍的获取模板的接口指定(singleM, singleN, singleK, baseM, baseN, baseK)参数获取自定义模板将该模板传入GetMatmulApiTiling接口得到常量化的参数。这种常量化的方式将得到MatmulApiStaticTiling结构体中定义的一组常量化参数可以优化Matmul计算中的Scalar计算。当前支持定义为MatmulApiStaticTiling常量化的Tiling参数的模板有Norm、IBShare、MDL模板。MxMatmul场景支持定义为MatmulApiStaticTiling常量化的Tiling参数的模板有Norm、MDL模板。MM_CB可选用于支持不同的搬入搬出需求实现定制化的搬入搬出功能。具体内容见MatmulCallBackFunc。MATMUL_POLICY_DEFAULT_OF(MatmulPolicy)可选用于配置Matmul可拓展模块的策略。当前支持不配置该参数使用默认模板策略或者配置1个MatmulPolicy参数。MATMUL_POLICY_DEFAULT_OF定义如下用于简化MATMUL_POLICY的类型声明。该模板参数的详细使用方式请参考MatmulPolicy。#define MATMUL_POLICY_DEFAULT_OF(DEFAULT) \ template const auto MM_CFG, typename ... \ class MATMUL_POLICY AscendC::Impl::Detail::DEFAULT参数说明表1MatmulApiStaticTiling常量化Tiling参数说明| 参数 | 数据类型 | 说明 | | --- | --- | --- | | M, N, Ka, Kb,singleCoreM, singleCoreN, singleCoreK,baseM, baseN, baseK,depthA1, depthB1,stepM stepNstepKastepKb,isBias,transLength,iterateOrder,dbL0A, dbL0B,dbL0C,shareMode,shareL1Size,shareL0CSize,shareUbSize,batchM,batchN,singleBatchM,singleBatchN,mxTypePara | int32_t | 与TCubeTiling结构体中各同名参数含义一致。本结构体中的参数是常量化后的常数值。 | | cfg | MatmulConfig | Matmul模板的参数配置。 |返回值说明无约束说明无调用示例// 用户自定义回调函数 void DataCopyOut( const __gm__ void* gm, const LocalTensorint8_t co1Local, const void* dataCopyOutParams, const uint64_t tilingPtr, const uint64_t dataPtr); void CopyA1( const AscendC::LocalTensorint8_t aMatrix, const __gm__ void* gm, int row, int col, int useM, int useK, const uint64_t tilingPtr, const uint64_t dataPtr); void CopyB1( const AscendC::LocalTensorint8_t bMatrix, const __gm__ void* gm, int row, int col, int useK, int useN, const uint64_t tilingPtr, const uint64_t dataPtr); // 定义创建对象时需要传入的A、B、C、Bias参数类型信息 typedef AscendC::MatmulTypeAscendC::TPosition::GM, CubeFormat::ND, half aType; typedef AscendC::MatmulTypeAscendC::TPosition::GM, CubeFormat::ND, half bType; typedef AscendC::MatmulTypeAscendC::TPosition::GM, CubeFormat::ND, float cType; typedef AscendC::MatmulTypeAscendC::TPosition::GM, CubeFormat::ND, float biasType; // 使用MDL模板创建Matmul实例 AscendC::MatmulaType, bType, cType, biasType, CFG_MDL mm1; AscendC::MatmulConfig mmConfig{false /*不使用Norm模板*/, true /*使用BasicBlock模板*/, false /*不使用MDL模板*/, 128 /*Matmul计算时base块M轴长度*/, 128 /*Matmul计算时base块N轴长度*/, 64 /*Matmul计算时base块K轴长度*/}; mmConfig.enUnitFlag false; // 不开启UnitFlag功能 // 使用自定义的mmConfig创建Matmul实例 AscendC::MatmulaType, bType, cType, biasType, mmConfig mm2; // 使用NORM模板、自定义的mmConfig和自定义的回调函数创建Matmul实例 AscendC::MatmulaType, bType, cType, biasType, CFG_NORM, AscendC::MatmulCallBackFuncDataCopyOut, CopyA1, CopyB1 mm3;【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考