昇腾社区首页
中文
注册
开发者
下载

EnableL1BankConflictOptimise

功能说明

根据GetTiling接口计算出的Tiling参数,获取是否可以开启L1 Bank冲突优化功能。若可以开启该功能,则与TilingKey机制配合使用,通过增加TilingKey,关联Host侧与Kernel侧实现,并在Kernel侧增加代码实现分支,将MatmulConfig中的enableL1BankConflictOptimise设置为true,即可优化L1上的Bank冲突。

函数原型

1
bool EnableL1BankConflictOptimise()

参数说明

返回值说明

  • false:Kernel侧不能开启L1 Bank冲突优化。
  • true:Kernel侧可以开启L1 Bank冲突优化。

约束说明

使用创建的Tiling对象调用本接口,且需在完成Tiling计算(GetTiling)后调用本接口。

调用示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
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);

optiling::TCubeTiling tilingData;
int ret = tiling.GetTiling(tilingData);
// Kernel侧是否可以开启L1 Bank冲突优化,可与TilingKey机制结合使用
bool enableL1BankConflictOptimise = tiling.EnableL1BankConflictOptimise();