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

MatmulConfig

模板参数MatmulConfig,用于配置Matmul模板信息以及相关的配置参数。不配置默认使能Norm模板。MatmulConfig的参数说明见表2。MatmulConfig的定义方式有:

表1 模板特性

模板

实现

优点

推荐使用场景

Norm

支持L1缓存多个基本块,MTE2分多次从GM搬运基本块到L1,每次搬运一份基本块,已搬的基本块不清空。(举例说明:depthA1=6,代表搬入6份A矩阵基本块到L1,1次搬运一份基本块,MTE2进行6次搬运)

可以提前启动MTE1流水(因为搬1份基本块就可以做MTE1后面的运算)

默认使能Norm模板

MDL,SpecialMDL

支持L1缓存多个基本块,MTE2从GM到L1的搬运为一次性"大包"搬运。(举例说明:depthA1=6,代表一次性搬入6份A矩阵基本块到L1,MTE2进行1次搬运)

对于一般的大shape场景,可以减少MTE2的循环搬运,提升性能

大shape场景

IBShare

MIX场景下,多个AIV的A矩阵或B矩阵GM地址相同的时候,通过共享L1 Buffer,减少MTE2搬运

减少MTE2搬运,提升性能

MIX场景多个AIV的A矩阵或B矩阵GM地址相同

注意:IBShare模板要求复用的A/B矩阵能在L1 Buffer上全载

BasicBlock

在无尾块的场景,base块大小确定的情况下,通过GetBasicConfig接口配置输入的基本块大小,固定MTE1每次搬运的矩阵大小及MMAD每次计算的矩阵大小,减少参数计算量

减少MTE1矩阵搬运和MMAD矩阵计算过程中的参数计算开销

无尾块,base块(baseM,baseN)大小确定

表2 MatmulConfig参数说明

参数

说明

支持模板:Norm, MDL, SpecialMDL, IBShare, BasicBlock

doNorm

使能Norm模板。参数取值如下:

  • true:使能Norm模板
  • false:不使能Norm模板

不指定模板的情况默认使能Norm模板。

Norm

doBasicBlock

是否使能BasicBlock模板。模板参数取值如下:

  • true:使能BasicBlock模板
  • false:不使能BasicBlock模板

调用GetBasicConfig接口获取BasicBlock模板时,该参数被置为true。注意:

  • BasicBlock模板暂不支持输入为int8, int4数据类型的A、B矩阵,支持half/float/bfloat16_t数据类型的A、B矩阵。
  • BasicBlock模板暂不支持A矩阵的格式为标量数据Scalar或向量数据Vector。
  • BasicBlock模板暂不支持ScheduleType::OUTER_PRODUCT的数据搬运模式。

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

Atlas推理系列产品AI Core不支持设置为true。

Atlas 200/500 A2推理产品不支持设置为true。

BasicBlock

doMultiDataLoad

使能MDL模板。参数取值如下:

  • true:使能MDL模板
  • false:不使能MDL模板

MDL

doSpecialMDL

使能SpecialMDL模板。参数取值如下:

  • true:使能SpecialMDL模板
  • false:不使能SpecialMDL模板

本质上也是MDL模板。MDL模板Matmul K方向不全载时(singleCoreK/baseK > stepKb),仅支持stepN设置为1,开启后支持stepN=2。

SpecialMDL

doIBShareNorm

使能IBShare模板。参数取值如下:

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

IBShare的功能是能够复用L1上相同的A矩阵或B矩阵数据,开启后在数据复用场景能够避免重复搬运数据到L1。

IBShare

intrinsicsCheck

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

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

所有模板

isNBatch

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

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

所有模板

enVecND2NZ

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

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

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

所有模板

enableInit

是否启用Init函数,不使能Init函数能够提升常量传播效果,优化性能。默认使能。

所有模板

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。

Norm, IBShare

enUnitFlag

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

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

MDL, Norm, IBShare

isPerTensor

A矩阵half类型输入且B矩阵int8类型输入场景,使能B矩阵量化时是否为per tensor,true为per tensor,false为per channel。

MDL, SpecialMDL

hasAntiQuantOffset

A矩阵half类型输入且B矩阵int8类型输入场景,使能B矩阵量化时是否使用offset系数。

MDL, SpecialMDL

doMTE2Preload

在MTE2流水间隙较大,且M/N数值较大时可通过该参数开启对应M/N方向的预加载功能,开启后能减小MTE2间隙,提升性能。预加载功能仅在MDL模板有效。参数取值如下:

  • 0:不开启(默认值)
  • 1:开启M方向preload
  • 2:开启N方向preload

注意,开启M/N预加载功能时需保证K全载,且M/N开启Double Buffer。

MDL, SpecialMDL

enableReuse

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

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

Norm, MDL

enableUBReuse

是否使能Unified Buffer复用。参数取值如下:

  • true:使能Unified Buffer复用
  • false:不使能Unified Buffer复用

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

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

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

MDL

enableL1CacheUB

是否使能L1 Buffer缓存Unified Buffer计算块。参数取值如下:

  • true:使能L1 Buffer缓存Unified Buffer计算块
  • false:不使能L1 Buffer缓存Unified Buffer计算块

若要使能L1 Buffer缓存Unified Buffer计算块,必须在tiling实现中调用SetMatmulConfigParams接口配置相关信息。

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

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

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

MDL

enableDoubleCache

开启IBShare模板后,在L1 Buffer上是否同时缓存两块数据。注意,需要控制base块大小,防止两块缓存超过L1 Buffer大小限制。参数取值如下:

  • false:L1 Buffer上同时缓存一块数据(默认值)
  • true:使能L1 Buffer上同时缓存两块数据

IBShare

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推理产品不支持该参数。

Norm、MDL

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推理产品不支持该参数。

Norm、MDL

enableStaticPadZeros

使用常量化的Tiling参数时,在左矩阵和右矩阵搬运到L1 Buffer的过程中,是否自动按照常量化的singleM/singleN/singleK及baseM/baseN/baseK大小补零。关于常量化Tiling参数的详细内容请参考GetMatmulApiTiling

仅支持GM输入的ND2NZ格式的补零,其他场景需要用户自行补零。参数取值如下:

  • false:搬运时不自动补零,需要用户自行补零(默认值)
  • true:搬运时按照常量化的singleM/singleN/singleK及baseM/baseN/baseK大小自动补零

Norm

isBiasBatch

批量多Batch的Matmul场景,即BatchMatmul场景,Bias的大小是否带有Batch轴。参数取值如下:

  • true:Bias带有Batch轴,Bias大小为Batch * N(默认值)
  • false:Bias不带Batch轴,Bias大小为N,多Batch计算Matmul时,会复用Bias。

    Atlas A2训练系列产品/Atlas 800I A2推理产品支持设置为false。

    Atlas推理系列产品AI Core不支持设置为false。

    Atlas 200/500 A2推理产品不支持设置为false。

Norm

basicM

相当于baseM,Matmul计算时base块M轴长度,以元素为单位

BasicBlock

basicN

相当于baseN,Matmul计算时base块N轴长度,以元素为单位

BasicBlock

basicK

相当于baseK,Matmul计算时base块K轴长度,以元素为单位

BasicBlock

enableSetBias

是否使能计算Bias。该参数可用于优化性能。参数取值如下:

  • true:使能计算Bias(默认值)。若输入带有Bias,实现过程中做Bias的搬运、计算等。
  • false:不计算Bias。Bias处理相关的代码都会在编译期删除,从而优化性能。

MDL

enableEnd

Matmul计算过程中是否需要调用End函数,该参数可用于优化性能。参数取值如下:

  • true:Matmul计算过程中需要调用End函数(默认值)。
  • false:不需要调用End函数。End处理相关的代码都会在编译期删除,从而优化性能。例如,异步场景不需要调用End函数,可以将该参数置为false。

所有模板

enableGetTensorC

Matmul计算过程中是否需要调用GetTensorC函数,该参数可用于优化性能。参数取值如下:

  • true:Matmul计算过程中需要调用GetTensorC函数(默认值)。
  • false:不需要调用GetTensorC函数。GetTensorC处理相关的代码都会在编译期删除,从而优化性能。

所有模板

enableSetOrgShape

Matmul计算过程中是否需要调用SetOrgShape函数,该参数可用于优化性能。参数取值如下:

  • true:Matmul计算过程中需要调用SetOrgShape函数(默认值)。
  • false:不需要调用SetOrgShape函数。SetOrgShape处理相关的代码都会在编译期删除,从而优化性能。

所有模板

enableSetTail

Matmul计算过程中是否需要调用SetTail函数,该参数可用于优化性能。参数取值如下:

  • true:Matmul计算过程中需要调用SetTail函数(默认值)。
  • false:不需要调用SetTail函数。SetTail处理相关的代码都会在编译期删除,从而优化性能。

所有模板

enableQuantVector

Matmul计算过程中是否需要调用SetQuantVectorSetQuantScalar函数,该参数可用于优化性能。参数取值如下:

  • true:Matmul计算过程中需要调用SetQuantVector和SetQuantScalar函数(默认值)。
  • false:不需要调用SetQuantVector和SetQuantScalar函数。SetQuantVector和SetQuantScalar处理相关的代码都会在编译期删除,从而优化性能。

所有模板

enableSetDefineData

使能模板参数MatmulCallBack(自定义回调函数)时,用于允许/禁止设置回调函数需要的计算数据或在GM上存储的数据地址等信息。

参数取值如下:

  • true:允许设置(默认值)。
  • false:不允许设置。SetSelfDefineData处理相关的代码都会在编译期删除,从而优化性能。

MDL

iterateMode

在分离架构上,用于优化Matmul计算的头开销。具体为,对Iterate系列接口(包括IterateIterateAllIterateBatchIterateNBatch)的优化,当使能某种模式时,表示Matmul计算过程中只调用该种模式对应的一个Iterate系列接口,其它Iterate系列接口相关的代码都会在编译期删除,从而优化性能。该参数为IterateMode类型。参数取值如下:

  • ITERATE_MODE_NORMAL:对于Iterate系列接口,Matmul计算过程中只调用Iterate接口。
  • ITERATE_MODE_ALL:对于Iterate系列接口,Matmul计算过程中只调用IterateAll接口。
  • ITERATE_MODE_BATCH:对于Iterate系列接口,Matmul计算过程中只调用IterateBatch接口。
  • ITERATE_MODE_N_BATCH:对于Iterate系列接口,Matmul计算过程中只调用IterateNBatch接口。
  • ITERATE_MODE_DEFAULT:默认值,不限定调用Iterate系列接口的个数,不使能计算头开销的优化。

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

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

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

所有模板

intraBlockPartSum

用于分离架构上的Vector、Cube计算融合场景,使能两个AIV核的一次计算结果(baseM * baseN大小的矩阵分片)在L0C Buffer上累加,参数取值如下:

  • false:不使能两个AIV核的计算结果在L0C Buffer上的累加(默认值)。
  • true:使能两个AIV核的计算结果在L0C Buffer上的累加。

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

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

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

Norm

doSpecialBasicBlock

使能SpecialBasicBlock模板。参数取值如下:

  • true:使能SpecialBasicBlock模板
  • false:不使能SpecialBasicBlock模板

本质上也是BasicBlock模板,但消除了头开销scalar计算。

预留参数

singleCoreM

单核内M轴shape大小,以元素为单位。

预留参数

singleCoreN

单核内N轴shape大小,以元素为单位。

预留参数

singleCoreK

单核内K轴shape大小,以元素为单位。

预留参数

stepM

左矩阵在A1中缓存的bufferM方向上baseM的倍数。

预留参数

stepN

右矩阵在B1中缓存的bufferN方向上baseN的倍数。

预留参数

baseMN

baseM*baseN的大小。

预留参数

singleCoreMN

singleCoreM*singleCoreN的大小。

预留参数

搜索结果
找到“0”个结果

当前产品无相关内容

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