Constructor

Function Usage

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 in information.
      1
      explicit MatmulApiTiling(const platform_ascendc::PlatformAscendC& ascendcPlatform)
      
      1
      explicit MultiCoreMatmulTiling(const platform_ascendc::PlatformAscendC& ascendcPlatform)
      
      1
      explicit BatchMatmulTiling(const platform_ascendc::PlatformAscendC &ascendcPlatform)
      
    • Use PlatformInfo to pass in 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.
      1
      explicit MatmulApiTiling(const PlatformInfo& platform)
      
      1
      explicit MultiCoreMatmulTiling(const PlatformInfo &platform)
      
  • Base class constructor

    MatmulApiTiling, MultiCoreMatmulTiling, and BatchMatmulTiling are inherited from the base class MatmulApiTilingBase. Their constructors are as follows:

    1
    explicit MatmulApiTilingBase(const platform_ascendc::PlatformAscendC& ascendcPlatform)
    
    1
    explicit MatmulApiTilingBase(const PlatformInfo& platform)
    

Parameters

Table 1 Parameters

Parameter

Input/Output

Description

ascendcPlatform

Input

Hardware platform information that is passed. For details about the definition of PlatformAscendC, see Overview.

platform

Input

Passed hardware version and memory size of each hardware unit in the AI Core. The value of is obtained through Overview 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.

1
2
3
4
5
6
7
8
struct PlatformInfo {
    platform_ascendc::SocVersion socVersion;
    uint64_t l1Size = 0;
    uint64_t l0CSize = 0;
    uint64_t ubSize = 0;
    uint64_t l0ASize = 0;
    uint64_t l0BSize = 0;
};

You are not advised to invoke the constructor by directly typing a value to construct PlatformInfo, for example, PlatformInfo (, 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.

Precautions

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