---
title: Matmul Tiling类构造函数
description: "用于创建一个Matmul单核Tiling对象，或者多核Tiling对象，或者BatchMatmul Tiling对象。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/ascendcopapi/atlasascendc_api_07_0672.html
sourcePath: /source/zh/canncommercial/900/API/ascendcopapi/atlasascendc_api_07_0672.html
indexId: 56b2b869cb8c38b0dbfc27517a25f199f685884877c8d980503bdf36dc4fa30076
---
# Matmul Tiling类构造函数

#### 功能说明

用于创建一个Matmul单核Tiling对象，或者多核Tiling对象，或者BatchMatmul Tiling对象。


#### 函数原型

- 带参构造函数，需要传入硬件平台信息，推荐使用这类构造函数来获得更好的兼容性。

  - 使用PlatformAscendC类传入信息
    1 explicit MatmulApiTiling(const platform_ascendc::PlatformAscendC& ascendcPlatform)

    1 explicit MultiCoreMatmulTiling(const platform_ascendc::PlatformAscendC& ascendcPlatform)

    1 explicit BatchMatmulTiling(const platform_ascendc::PlatformAscendC &ascendcPlatform)

  - 使用PlatformInfo传入信息
    当platform_ascendc::PlatformAscendC无法在Tiling运行时获取时，需要用户自行构造PlatformInfo结构体，透传给MatmulApiTiling构造函数。 1 explicit MatmulApiTiling(const PlatformInfo& platform) 1 explicit MultiCoreMatmulTiling(const PlatformInfo &platform)

- 无参构造函数
  1 MatmulApiTiling()

  1 MultiCoreMatmulTiling()

  1 BatchMatmulTiling()

  无参构造函数只支持如下产品型号：

  Atlas A2 训练系列产品 / Atlas A2 推理系列产品

  Atlas A3 训练系列产品

- 基类构造函数
  MatmulApiTiling、MultiCoreMatmulTiling和BatchMatmulTiling都继承自基类MatmulApiTilingBase，其构造函数如下：

  1 MatmulApiTilingBase()

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

  1 explicit MatmulApiTilingBase(const PlatformInfo& platform)


#### 参数说明


**表1 参数说明**

| 参数名 | 输入/输出 | 描述 |  |  |
| --- | --- | --- | --- | --- |
| ascendcPlatform | 输入 | 传入硬件平台的信息，PlatformAscendC定义请参见构造及析构函数。 |  |  |
| platform | 输入 | 传入硬件版本以及AI Core中各个硬件单元提供的内存大小。PlatformInfo构造时通过构造及析构函数获取。 PlatformInfo结构定义如下，socVersion通过GetSocVersion获取并透传，各类硬件存储空间大小通过GetCoreMemSize获取并透传。 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; }; 不推荐通过直接填值构造PlatformInfo的方式调用构造函数，例如PlatformInfo(socVersion, 1024, 1024, ..); | 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; }; |
| 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; }; |  |  |  |


在实现Host侧的Tiling函数时，platform_ascendc::PlatformAscendC用于获取一些硬件平台的信息，来支撑Tiling的计算，比如获取硬件平台的核数等信息。PlatformAscendC类提供获取这些平台信息的功能。

和platform_ascendc::PlatformAscendC不同的是，PlatformInfo则用于获取芯片版本、AI Core中各个硬件单元提供的内存大小等只针对单个AI Core的信息。


#### 约束说明

无


#### 使用样例

- 无参构造函数
  1 2 3 4 5 6 7 8 9 10 11 // 单核Tiling matmul_tiling::MatmulApiTiling tiling; tiling.SetAType(matmul_tiling::TPosition::GM, matmul_tiling::CubeFormat::ND, matmul_tiling::DataType::DT_FLOAT16); // 多核Tiling matmul_tiling::MultiCoreMatmulTiling tiling; tiling.SetAType(matmul_tiling::TPosition::GM, matmul_tiling::CubeFormat::ND, matmul_tiling::DataType::DT_FLOAT16); // BatchMatmul Tiling matmul_tiling::BatchMatmulTiling bmmTiling; bmmTiling.SetAType(matmul_tiling::TPosition::GM, matmul_tiling::CubeFormat::ND, matmul_tiling::DataType::DT_FLOAT16);


- 带参构造函数
  1 2 3 4 5 6 7 8 9 10 11 12 13 14 // 单核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); // 多核Tiling auto ascendcPlatform = platform_ascendc::PlatformAscendC(context->GetPlatformInfo()); matmul_tiling::MultiCoreMatmulTiling tiling(ascendcPlatform); tiling.SetAType(matmul_tiling::TPosition::GM, matmul_tiling::CubeFormat::ND, matmul_tiling::DataType::DT_FLOAT16); // 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);
