构造函数
功能说明
用于创建一个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传入信息
- 使用PlatformAscendC类传入信息
- 无参构造函数
Atlas A2训练系列产品/Atlas 800I A2推理产品
1
MatmulApiTiling()
1
MultiCoreMatmulTiling()
1
BatchMatmulTiling()
- 基类构造函数
MatmulApiTiling、MultiCoreMatmulTiling和BatchMatmulTiling都继承自基类MatmulApiTilingBase,其构造函数如下:
1
MatmulApiTilingBase()
1
explicit MatmulApiTilingBase(const platform_ascendc::PlatformAscendC& ascendcPlatform)
1
explicit MatmulApiTilingBase(const PlatformInfo& platform)
参数说明
参数名 |
输入/输出 |
描述 |
---|---|---|
ascendcPlatform |
输入 |
传入硬件平台的信息,PlatformAscendC定义请参见PlatformAscendC类简介。 |
platform |
输入 |
传入硬件版本以及AI Core中各个硬件单元提供的内存大小。PlatformInfo构造时通过PlatformAscendC类简介获取。 PlatformInfo结构定义如下,socVersion通过GetSocVersion获取并透传,各类硬件存储空间大小通过GetCoreMemSize获取并透传。 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(, 1024, 1024, ..); |
在实现Host侧的Tiling函数时,platform_ascendc::PlatformAscendC用于获取一些硬件平台的信息,来支撑Tiling的计算,比如获取硬件平台的核数等信息。PlatformAscendC类提供获取这些平台信息的功能。
和platform_ascendc::PlatformAscendC不同的是,PlatformInfo则用于获取芯片版本以及AI Core中各个硬件单元提供的内存大小等只针对单个AI 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 // 多核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
- 带参构造函数
// 单核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 // 多核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
父主题: Matmul Tiling类