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) |
参数说明
参数名 |
输入/输出 |
描述 |
---|---|---|
mmConfigTypeIn |
输入 |
设置Matmul的模板类型,需要与Matmul对象创建的模板一致,当前只支持配置为0或1。
|
enableL1CacheUBIn |
输入 |
配置是否使能L1缓存UB计算块;参考使能场景:MTE3和MTE2流水串行较多的场景。
Atlas A2训练系列产品/Atlas 800I A2推理产品不支持该参数。 Atlas推理系列产品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; }; |
参数名称 |
含义 |
---|---|
mmConfigType |
设置Matmul的模板类型,需要与Matmul对象创建的模板一致,当前只支持配置为0或1。
|
enableL1CacheUB |
配置是否使能L1缓存UB计算块;参考使能场景:MTE3和MTE2流水串行较多的场景。
|
scheduleType |
配置Matmul数据搬运模式。参数取值如下:
|
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);
父主题: Matmul Tiling类