CANN/pyasc矩阵乘法配置API文档

CANN/pyasc矩阵乘法配置API文档 asc.language.adv.get_mm_config【免费下载链接】pyasc本项目为Python用户提供算子编程接口支持在昇腾AI处理器上加速计算接口与Ascend C一一对应并遵守Python原生语法。项目地址: https://gitcode.com/cann/pyascasc.language.adv.get_mm_config(*args, **kwargs) → MatmulConfig灵活的自定义Matmul模板参数配置。对应的Ascend C函数原型template MatmulConfigMode configMode, typename... ArgTypes __aicore__ inline constexpr MatmulConfig GetMMConfig(ArgTypes... args)参数说明MatmulShapeParams参数single_core_m: 单核内M轴shape大小以元素为单位。single_core_n: 单核内N轴shape大小以元素为单位。single_core_n: 单核内K轴shape大小以元素为单位。basic_m: Matmul计算时base块M轴长度以元素为单位。basic_n: Matmul计算时base块N轴长度以元素为单位。basic_k: Matmul计算时base块K轴长度以元素为单位。MatmulQuantParams参数is_per_tensor: A矩阵half类型输入且B矩阵int8_t类型输入场景使能B矩阵量化时是否为per tensor。Trueper tensor量化。Falseper channel量化。has_anti_quant_offset: A矩阵half类型输入且B矩阵int8_t类型输入场景使能B矩阵量化时是否使用offset系数。MatmulBatchParams参数is_n_batch: 是否多Batch输入多Batch输出。仅对BatchMatmul有效。参数取值如下False不使能多Batch默认值。True使能多Batch。batch_mode: 用于设置参数BatchMode。 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。is_bias_batch: 批量多Batch的Matmul场景即BatchMatmul场景Bias的大小是否带有Batch轴。参数取值如下True: Bias带有Batch轴Bias大小为Batch * N默认值。False: Bias不带Batch轴Bias大小为N多Batch计算Matmul时会复用Bias。MatmulFuncParams参数intrinsics_limit: 用于设置参数intrinsicsCheck。参数取值如下False当左矩阵或右矩阵在单核上内轴大于等于65535时不使能循环执行数据的搬入默认值True当左矩阵或右矩阵在单核上内轴大于等于65535时使能循环执行数据的搬入。en_vec_nd2_nz: 使能通过vector指令进行ND2NZ。参数取值如下False不使能通过vector指令进行ND2NZ默认值True使能通过vector指令进行ND2NZ。enable_l1_cache: 是否使能L1 Buffer缓存Unified Buffer计算块。参数取值如下True: 使能L1 Buffer缓存Unified Buffer计算块。False: 不使能L1 Buffer缓存Unified Buffer计算块。do_mte2_preload: 在MTE2流水间隙较大且M/N数值较大时可通过该参数开启对应M/N方向的预加载功能开启后能减小MTE2间隙提升性能。 预加载功能仅在MDL模板有效不支持SpecialMDL模板。参数取值如下0 不开启默认值。1: 开启M方向preload。2: 开启N方向preload。iterate_order: 用于设置参数iterateOrder。schedule_type: 用于设置参数scheduleType。配置Matmul数据搬运模式。参数取值如下scheduleType::INNER_PRODUCT默认模式在K方向上做MTE1的循环搬运scheduleType::OUTER_PRODUCT在M或N方向上做MTE1的循环搬运。enable_reuse: SetSelfDefineData函数设置的回调函数中的dataPtr是否直接传递计算数据。参数取值如下False直接传递计算数据仅限单个值。True传递GM上存储的数据地址信息。enable_ub_reuse: 是否使能Unified Buffer复用。参数取值如下False使能Unified Buffer复用。True不使能Unified Buffer复用。is_partial_output: 是否开启PartialOutput功能。参数取值如下False开启PartialOutput功能一次Iterate的K轴不进行累加计算Matmul每次计算输出局部baseK的baseM * baseN大小的矩阵分片。True不开启PartialOutput功能一次Iterate的K轴进行累加计算Matmul每次计算输出SingleCoreK长度的baseM * baseN大小的矩阵分片。is_a2_b2_shared: 是否开启A2和B2的全局管理即控制所有Matmul对象是否共用A2和B2的double buffer机制。参数取值如下True开启。False关闭默认值。is_enable_channel_split: 是否使能channel_split功能。参数取值如下False默认值不使能channel_split功能输出的分形为16*16。True使能channel_split功能输出的分形为16*8。enable_kdim_reorder_load: 是否使能K轴错峰加载数据。False默认值关闭K轴错峰加载数据的功能。True开启K轴错峰加载数据的功能。返回值说明MatmulConfig结构体。调用示例# 获取MatmulConfig模板为Norm模板 config_mode asc.adv.MatmulConfigMode.CONFIG_NORM # single_core_m、single_core_n、single_core_k、basic_m、basic_n、basic_k shape_params asc.adv.MatmulShapeParams(128, 128, 128, 64, 64, 64) # B矩阵量化时为per channel且不适用offset系数 quant_params asc.adv.MatmulQuantParams(False, False) # 不使能多Batch batch_params asc.adv.MatmulBatchParams(False) #不进行芯片指令搬运地址偏移量校验使能通过vector进行ND2NZ func_params asc.adv.MatmulFuncParams(False, True) mm_config asc.adv.get_mm_config(shape_params, quant_params, batch_params, func_params, config_mode)【免费下载链接】pyasc本项目为Python用户提供算子编程接口支持在昇腾AI处理器上加速计算接口与Ascend C一一对应并遵守Python原生语法。项目地址: https://gitcode.com/cann/pyasc创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考