EnableMultiCoreSplitK
Function Usage
In the multi-core scenario, this API is used to enable K-axis splitting. If this API is not called, the K axis is not split by default. This API is used before the GetTiling API is called.
Prototype
1 | void EnableMultiCoreSplitK(bool flag) |
Parameters
Parameter |
Input/Output |
Description |
|---|---|---|
flag |
Input |
Whether to enable K-axis splitting.
|
Returns
None
Restrictions
- When this API is used in an operator, the result of matrix C can be output only to.
- When this API is used in an operator, the result of matrix C tiling must be cleared before being written to the kernel for the first time. Then, AtomicAdd is enabled to accumulate the result of matrix C tiling. If the data is not cleared in advance, precision problems may occur due to invalid data in the accumulation.
- When this API is used in an operator, Bias cannot participate in matrix multiplication.
Examples
For details about the complete operator example, see.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | auto ascendcPlatform = platform_ascendc::PlatformAscendC(context->GetPlatformInfo()) matmul_tiling::MultiCoreMatmulTiling tiling(ascendcPlatform); tiling->SetDim(useCoreNums); 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(M, N, K); tiling->SetOrgShape(M, N, K); tiling->SetBias(false); tiling->SetBufferSpace(-1, -1, -1); tiling->EnableMultiCoreSplitK(true); // Enable the K axis. optiling::TCubeTiling tilingData; int ret = tiling.GetTiling(tilingData); |
Parent topic: Matmul Tiling