GetBasicConfig【免费下载链接】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不支持功能说明用于配置BasicBlock模板的参数获取自定义BasicBlock模板。BasicBlock模板的介绍请参考表模板特性。使用该接口时可以优先考虑使用模板常量化。相比BasicBlock模板仅实现baseM、baseN、baseK常量化模板常量化可以在此基础上实现singleCoreM、singleCoreN、singleCoreK、baseM、baseN、baseK的常量化模板常量化的具体使用方式请参考Matmul Tiling常量化。函数原型__aicore__ constexpr MatmulConfig GetBasicConfig(const uint32_t basicM, const uint32_t basicN, const uint32_t basicK, const bool intrinsicsLimit false, const bool batchLoop false, const BatchMode bmmMode BatchMode::BATCH_LESS_THAN_L1)参数说明本接口的所有参数用于设置MatmulConfig结构体中的参数其中互相对应的参数的功能作用相同。表1接口参数说明参数名输入/输出描述basicM输入用于设置参数basicM。与TCubeTiling结构体中的baseM参数含义相同Matmul计算时base块M轴长度以元素为单位。basicN输入用于设置参数basicN。与TCubeTiling结构体中的baseN参数含义相同Matmul计算时base块N轴长度以元素为单位。basicK输入用于设置参数basicK。与TCubeTiling结构体中的baseK参数含义相同Matmul计算时base块K轴长度以元素为单位。intrinsicsLimit输入用于设置参数intrinsicsCheck。当左矩阵或右矩阵在单核上内轴即尾轴大于等于65535元素个数时是否开启循环执行数据从Global Memory到L1 Buffer的搬入。例如左矩阵A[M, K]单核上的内轴数据singleCoreK大于65535配置该参数为true后API内部通过循环执行数据的搬入。参数取值如下false当左矩阵或右矩阵在单核上内轴大于等于65535时不开启循环执行数据的搬入默认值。true当左矩阵或右矩阵在单核上内轴大于等于65535时开启循环执行数据的搬入。对于Ascend 950PR/Ascend 950DTMxMatmul场景不支持此参数。batchLoop输入用于设置参数isNBatch。是否多Batch输入多Batch输出。仅对BatchMatmul有效开启多Batch后仅支持Norm模板且需调用IterateNBatch实现多Batch输入多Batch输出。参数取值如下false不开启多Batch默认值。true开启多Batch。bmmMode输入用于设置参数batchMode。该参数用于BatchMatmul场景。BatchMatmul场景中Layout类型为NORMAL时设置BatchMatmul输入A/B矩阵的多batch数据总和与L1 Buffer的大小关系。参数取值如下BatchMode::BATCH_LESS_THAN_L1多batch数据总和L1 Buffer SizeBatchMode::BATCH_LARGE_THAN_L1多batch数据总和L1 Buffer SizeBatchMode::SINGLE_LARGE_THAN_L1单batch数据总和L1 Buffer Size。返回值说明MatmulConfig结构体。约束说明使用本接口时基本块大小baseM、baseN需满足singleCoreM能被baseM整除singleCoreN能被baseN整除。本接口的参数basicM、basicN、basicK应与TCubeTiling结构体的baseM、baseN、baseK设置保持一致。调用示例// 配置BasicBlock模板的参数获取自定义BasicBlock模板 constexpr MatmulConfig MM_CFG GetBasicConfig( /* basicM */ 128, /* basicN */ 256, /* basicK */ 64, /* intrinsicsLimit */ false, /* batchLoop */ false, /* batchMode */ BatchMode::BATCH_LESS_THAN_L1); // 常规Matmul计算最后输出使用自定义BasicBlock模板的计算结果 AscendC::MatmulA_TYPE, B_TYPE, C_TYPE, BIAS_TYPE, MM_CFG mm; REGIST_MATMUL_OBJ(pipe, GetSysWorkSpacePtr(), mm, tiling); mm.SetTensorA(gm_a); mm.SetTensorB(gm_b); if (tiling.isBias) { mm.SetBias(gmBias); } mm.IterateAll(gm_c); mm.End();【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考