Matmul Tiling Constructor
Function
Creates a Matmul single-core tiling object, multi-core tiling object, or BatchMatmul tiling object.
Prototype
- Parameterized constructor, which requires the hardware platform information to be passed. You are advised to use this type of constructor to achieve better compatibility.
- Use PlatformAscendC to pass information.
1explicit MatmulApiTiling(const platform_ascendc::PlatformAscendC& ascendcPlatform)
1explicit MultiCoreMatmulTiling(const platform_ascendc::PlatformAscendC& ascendcPlatform)
1explicit BatchMatmulTiling(const platform_ascendc::PlatformAscendC &ascendcPlatform)
- Use PlatformInfo to pass information.If platform_ascendc::PlatformAscendC fails to be obtained during tiling running, you need to construct the PlatformInfo structure and transparently transmit it to the MatmulApiTiling constructor.
1explicit MatmulApiTiling(const PlatformInfo& platform)
1explicit MultiCoreMatmulTiling(const PlatformInfo &platform)
- Use PlatformAscendC to pass information.
- Constructor without parameters
1MatmulApiTiling()
1MultiCoreMatmulTiling()
1BatchMatmulTiling()
For constructors without parameters, only the following product models are supported:
Ascend 910C AI Processor
- Base class constructor
MatmulApiTiling, MultiCoreMatmulTiling, and BatchMatmulTiling are inherited from the base class MatmulApiTilingBase. Their constructors are as follows:
1MatmulApiTilingBase()
1explicit MatmulApiTilingBase(const platform_ascendc::PlatformAscendC& ascendcPlatform)
1explicit MatmulApiTilingBase(const PlatformInfo& platform)
Parameters
Parameter |
Input/Output |
Description |
||
|---|---|---|---|---|
ascendcPlatform |
Input |
Hardware platform information that is passed. For details about the definition of PlatformAscendC, see Constructor and Destructor. |
||
platform |
Input |
Hardware version and memory size of each hardware unit in the AI Core are passed. The value is obtained through Constructor and Destructor during PlatformInfo construction. The PlatformInfo structure is defined as follows. socVersion is obtained through GetSocVersion and transparently transmitted. Hardware storage space sizes are obtained through GetCoreMemSize and transparently transmitted.
You are advised not to invoke the constructor by directly filling a value to construct PlatformInfo, for example, PlatformInfo(socVersion, 1024, 1024, ..). |
platform_ascendc::PlatformAscendC is used to obtain hardware platform information, such as the number of cores on a hardware platform for tiling computation to implement the tiling function on the host. The PlatformAscendC class provides a function for obtaining such platform information.
Different from platform_ascendc::PlatformAscendC, PlatformInfo is used to obtain information specific to a single AI Core, such as the chip version and the memory size provided by each hardware unit in the AI Core.
Restrictions
None
Examples
- Constructor without parameters
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
// Single-core tiling matmul_tiling::MatmulApiTiling tiling; tiling.SetAType(matmul_tiling::TPosition::GM, matmul_tiling::CubeFormat::ND, matmul_tiling::DataType::DT_FLOAT16); ... optiling::TCubeTiling tilingData; int ret = tiling.GetTiling(tilingData); // if ret = -1, gen tiling failed // Multi-core tiling matmul_tiling::MultiCoreMatmulTiling tiling; tiling.SetDim(1); ... optiling::TCubeTiling tilingData; int ret = tiling.GetTiling(tilingData); // if ret = -1, gen tiling failed // BatchMatmul Tiling matmul_tiling::BatchMatmulTiling bmmTiling; bmmTiling.SetAType(matmul_tiling::TPosition::GM, matmul_tiling::CubeFormat::ND, matmul_tiling::DataType::DT_FLOAT16); ... optiling::TCubeTiling tilingData; int ret = bmmTiling.GetTiling(tilingData); // if ret = -1, gen tiling failed
- Parameterized constructor
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
// Single-core tiling 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); ... optiling::TCubeTiling tilingData; int ret = tiling.GetTiling(tilingData); // if ret = -1, gen tiling failed // Multi-core tiling auto ascendcPlatform = platform_ascendc::PlatformAscendC(context->GetPlatformInfo()); matmul_tiling::MultiCoreMatmulTiling tiling(ascendcPlatform); tiling.SetDim(1); ... optiling::TCubeTiling tilingData; int ret = tiling.GetTiling(tilingData); // if ret = -1, gen tiling failed // BatchMatmul Tiling auto ascendcPlatform = platform_ascendc::PlatformAscendC(context->GetPlatformInfo()); matmul_tiling::BatchMatmulTiling bmmTiling(ascendcPlatform); bmmTiling.SetAType(matmul_tiling::TPosition::GM, matmul_tiling::CubeFormat::ND, matmul_tiling::DataType::DT_FLOAT16); ... optiling::TCubeTiling tilingData; int ret = tiling.GetTiling(tilingData); // if ret = -1, gen tiling failed