下载
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
昇腾小AI

GetNormalConfig

功能说明

用于配置Norm模板的参数,获取自定义Norm模板。

函数原型

1
__aicore__ constexpr MatmulConfig GetNormalConfig(const bool intrinsicsLimit = false, const bool batchLoop = false, const bool isVecND2NZ = false, const BatchMode bmmMode = BatchMode::BATCH_LESS_THAN_L1, const bool isMsgReuse = true, const IterateOrder iterateOrder = IterateOrder::UNDEF, const ScheduleType scheduleType = ScheduleType::INNER_PRODUCT, const bool enUnitFlag = true)

参数说明

本接口的所有参数用于设置MatmulConfig结构体中的参数,其中互相对应的参数的功能作用相同。

表1 接口参数说明

参数名

输入/输出

描述

intrinsicsLimit

输入

用于设置参数intrinsicsCheck。

当左矩阵或右矩阵在单核上内轴(即尾轴)大于等于65535时,是否使能循环执行数据的搬入。例如,左矩阵A[M, K],单核上的内轴数据singleCoreK大于65535,配置该参数为true后,API内部通过循环执行数据的搬入。参数取值如下:

  • false:当左矩阵或右矩阵在单核上内轴大于等于65535时,不使能循环执行数据的搬入(默认值)
  • true:当左矩阵或右矩阵在单核上内轴大于等于65535时,使能数循环执行数据的搬入

batchLoop

输入

用于设置参数isNBatch。

是否多Batch输入多Batch输出。仅对BatchMatmul有效。参数取值如下:

  • false:不使能多Batch(默认值)
  • true:使能多Batch

isVecND2NZ

输入

用于设置参数enVecND2NZ。

使能通过vector进行ND2NZ。使能时需要设置SetLocalWorkspace。参数取值如下:

  • false:不使能通过vector进行ND2NZ(默认值)
  • true:使能通过vector进行ND2NZ

针对Atlas推理系列产品AI Core,在UB空间足够的条件下(UB空间大于2*TCubeTiling的transLength参数),建议优先使能该参数,搬运性能更好。

bmmMode

输入

用于设置参数batchMode。

Layout类型为NORMAL时,设置BatchMatmul输入A/B矩阵的多batch数据总和与L1 Buffer的大小关系。参数取值如下:

  • BatchMode::BATCH_LESS_THAN_L1:多batch数据总和<L1 Buffer Size;
  • BatchMode::BATCH_LARGE_THAN_L1:多batch数据总和>L1 Buffer Size;
  • BatchMode::SINGLE_LARGE_THAN_L1:单batch数据总和>L1 Buffer Size。

isMsgReuse

输入

用于设置参数enableReuse。

SetSelfDefineData函数设置的回调函数中的dataPtr是否直接传递计算数据。参数取值如下:

  • true:直接传递计算数据,仅限单个值
  • false:传递GM上存储的数据地址信息

iterateOrder

输入

用于设置参数iterateOrder。

Matmul做矩阵运算的循环迭代顺序,与表1中的iterateOrder参数含义相同。当ScheduleType参数取值为ScheduleType::OUTER_PRODUCT或1时,本参数生效。参数取值如下:

1
2
3
4
5
enum class IterateOrder {
    ORDER_M = 0,   // 先往M轴方向偏移再往N轴方向偏移
    ORDER_N,       // 先往N轴方向偏移再往M轴方向偏移
    UNDEF,         // 当前无效
};

注:MDL模板使用时,若IterateOrder取值ORDER_M,TCubeTiling结构中的stepN需要大于1,IterateOrder取值ORDER_N时,TCubeTiling结构中的stepM需要大于1。

Atlas A2训练系列产品/Atlas 800I A2推理产品支持该参数。

Atlas推理系列产品AI Core不支持该参数。

Atlas 200/500 A2推理产品不支持该参数。

scheduleType

输入

用于设置参数scheduleType。

配置Matmul数据搬运模式。参数取值如下:

  • ScheduleType::INNER_PRODUCT或0:默认模式,在K方向上做MTE1的循环搬运;
  • ScheduleType::OUTER_PRODUCT或1:在M或N方向上做MTE1的循环搬运;使能后,需要与IterateOrder参数配合使用。该配置当前只在Norm模板的Batch Matmul场景、MDL模板生效。
    • 若IterateOrder取值ORDER_M,则N方向循环搬运(在singleCoreN大于baseN场景可能有性能提升),即B矩阵的MTE1搬运并行;
    • 若IterateOrder取值ORDER_N,则M方向循环搬运(在singleCoreM大于baseM场景可能有性能提升),即A矩阵的MTE1搬运并行;
    • 不能同时使能M方向和N方向循环搬运;

注:

  • singleCoreK>baseK的场景,不能使能ScheduleType::OUTER_PRODUCT取值,需使用默认模式
  • MDL模板仅在调用IterateAll计算的场景支持配置ScheduleType::OUTER_PRODUCT或1

Atlas A2训练系列产品/Atlas 800I A2推理产品支持该参数。

Atlas推理系列产品AI Core不支持该参数。

Atlas 200/500 A2推理产品不支持该参数。

enUnitFlag

输入

用于设置参数enUnitFlag。

使能unitflag功能,使计算与搬运流水并行,提高性能。Norm, IBShare下默认使能,MDL下默认不使能。参数取值如下:

  • false:不使能unitflag功能
  • true:使能unitflag功能

支持的型号

Atlas A2训练系列产品/Atlas 800I A2推理产品

Atlas推理系列产品AI Core

Atlas 200/500 A2推理产品

注意事项

调用示例

1
2
3
4
5
6
7
constexpr MatmulConfig MM_CFG = GetNormalConfig();
Matmul<A_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);
mm.SetBias(gm_bias);
mm.IterateAll(gm_c);
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词