昇腾社区首页
中文
注册

SetDim

功能说明

设置多核Matmul时,参与运算的核数。不同场景下的设置规则如下:

  • 纯Cube模式(只有矩阵计算)场景

    SetBlockDim加载的核全部用于Matmul API的计算,所以SetDim设置的值和SetBlockDim是一样的。

  • MIX模式(包含矩阵计算和矢量计算)
    • 分离架构:Matmul API都是从AIV侧发起的,调用Iterate计算时在AIV侧只会起到通知的作用,通知AIC去做矩阵计算,计算完成后AIC告知AIV计算完成,在开发者层面感知的是AIV的核数,例如,当SetBlockDim设置为20时,启动20个AI Core(AIC AIV的组合),SetDim设置为40,表示使用40个AIV核进行多核Matmul运算。
    • 耦合架构:SetBlockDim加载的核全部用于Matmul API的计算,所以SetDim设置的值和SetBlockDim保持一致。

函数原型

1
int32_t SetDim(int32_t dim)

参数说明

表1 参数说明

参数名

输入/输出

描述

dim

输入

多核Matmul tiling计算时,可以使用的核数。注意,参数取值必须小于等于SetBlockDim接口中入参block_dim的取值,即参数取值小于等于耦合架构下启动的AICore核数或者分离架构下启动的AIC核数。

返回值

-1表示设置失败; 0表示设置成功。

约束说明

调用示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
auto ascendcPlatform = platform_ascendc::PlatformAscendC(context->GetPlatformInfo());
matmul_tiling::MultiCoreMatmulTiling tiling(ascendcPlatform); 
tiling.SetDim(1);  // 设置参与运算的核数
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.SetSingleShape(1024, 1024, 1024);
tiling.SetOrgShape(1024, 1024, 1024);
tiling.SetBias(true);   
tiling.SetBufferSpace(-1, -1, -1);
optiling::TCubeTiling tilingData;   
int ret = tiling.GetTiling(tilingData);