文档
注册
评分
提单
论坛
小AI

SetMatmulConfigParams

功能说明

在计算Tiling时,调用GetTiling接口前,用于自定义设置表1中的MatmulConfig参数。本接口中配置的参数对应的功能在Tiling与Kernel中需要保持一致,所以本接口中参数的使能或参数值,需要与Kernel侧对应的MatmulConfig参数值保持一致,详细MatmulConfig参数请见表2

函数原型

1
void SetMatmulConfigParams(int32_t mmConfigTypeIn = 1, bool enableL1CacheUBIn = false)
1
void SetMatmulConfigParams(const MatmulConfigParams& configParams)

参数说明

表1 参数说明

参数名

输入/输出

描述

mmConfigTypeIn

输入

设置Matmul的模板类型,需要与Matmul对象创建的模板一致,当前只支持配置为0或1。

  • 0:代表Norm模板
  • 1:代表MDL模板,默认值为1

enableL1CacheUBIn

输入

配置是否使能L1缓存UB计算块;参考使能场景:MTE3和MTE2流水串行较多的场景。

  • false:不使能L1缓存UB计算块,默认值为false
  • true:使能L1缓存UB计算块

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

Atlas推理系列产品(Ascend 310P处理器)AI Core支持该参数。

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

configParams

输入

config相关参数,类型为MatmulConfigParams,结构体具体定义如下。其中的参数说明请参考表2

struct MatmulConfigParams
{
    int32_t mmConfigType = 1;
    bool enableL1CacheUB = false;
    ScheduleType scheduleType = ScheduleType::INNER_PRODUCT;
    MatrixTraverse traverse = MatrixTraverse::NOSET;
};
表2 MatmulConfigParams结构体内参数说明

参数名称

含义

mmConfigType

设置Matmul的模板类型,需要与Matmul对象创建的模板一致,当前只支持配置为0或1。

  • 0:代表Norm模板
  • 1:代表MDL模板,默认值为1

enableL1CacheUB

配置是否使能L1缓存UB计算块;参考使能场景:MTE3和MTE2流水串行较多的场景。

  • false:不使能L1缓存UB计算块,默认值为false
  • true:使能L1缓存UB计算块

scheduleType

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

  • ScheduleType::INNER_PRODUCT或0:默认模式,在K方向上做MTE1的循环搬运
  • ScheduleType::OUTER_PRODUCT或1:在M或N方向上做MTE1的循环搬运

traverse

Matmul做矩阵运算的循环迭代顺序,即一次迭代计算出[baseM, baseN]大小的C矩阵分片后,自动偏移到下一次迭代输出的C矩阵位置的偏移顺序。参数取值如下:

enum class MatrixTraverse{
    NOSET = 0,   // 当前无效
    FIRSTM,      // 先往M轴方向偏移再往N轴方向偏移
    FIRSTN,      // 先往N轴方向偏移再往M轴方向偏移
};

返回值

注意事项

调用示例

auto ascendcPlatform = platform_ascendc::PlatformAscendC(context->GetPlatformInfo());
matmul_tiling::MatmulApiTiling tiling(ascendcPlatform); 
tiling.SetAType(matmul_tiling::TPosition::GM, matmul_tiling::CubeFormat::ND, matmul_tiling::DataType::DT_FLOAT16); 
tiling.SetBType(matmul_tiling::TPosition::GM, matmul_tiling::CubeFormat::ND, matmul_tiling::DataType::DT_FLOAT16);   
tiling.SetCType(matmul_tiling::TPosition::GM, matmul_tiling::CubeFormat::ND, matmul_tiling::DataType::DT_FLOAT);   
tiling.SetBiasType(matmul_tiling::TPosition::GM, matmul_tiling::CubeFormat::ND, matmul_tiling::DataType::DT_FLOAT);   
tiling.SetShape(1024, 1024, 1024);   
tiling.SetOrgShape(1024, 1024, 1024);  
tiling.SetBias(true);   
tiling.SetBufferSpace(-1, -1, -1);
tiling.SetMatmulConfigParams(0);  // 额外设置
// tiling.SetMatmulConfigParams({1, false, ScheduleType::OUTER_PRODUCT, MatrixTraverse::FIRSTM});
optiling::TCubeTiling tilingData;   
int ret = tiling.GetTiling(tilingData);
搜索结果
找到“0”个结果

当前产品无相关内容

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