MakeNZLayout

产品支持情况

产品 是否支持
Ascend 950PR/Ascend 950DT
Atlas A3 训练系列产品/Atlas A3 推理系列产品 x
Atlas A2 训练系列产品/Atlas A2 推理系列产品 x
Atlas 200I/500 A2 推理产品 x
Atlas 推理系列产品AI Core x
Atlas 推理系列产品Vector Core x
Atlas 训练系列产品 x
Atlas 200/300/500 推理产品 x

功能说明

根据输入的行数和列数,生成层次化表述法的NZ Layout结构,该结构为连续的NZ Layout结构,即数据紧密排列。

Layout = ((Shape) : (Stride))
Shape = ((Std::Int<16>{}, row / 16), (Std::Int<32 / sizeof(T)>{}, column / (32 / sizeof(T))))
Stride = ((Std::Int<32 / sizeof(T)>{}, Std::Int<32 / sizeof(T) * 16>{}), (Std::Int<1>{}, 32 / sizeof(T) * row))

函数原型

// 生成的Layout为静态数据
template <typename T, size_t row, size_t column> NZLayout

// 生成的Layout为动态数据
template <typename T>
__aicore__ inline decltype(auto) MakeNZLayout(size_t row, size_t column)

参数说明

参数名 描述
T 基础数据类型,例如half或者float。
row 把数据看做连续的二维数据时,对应的行数。
column 把数据看做连续的二维数据时,对应的列数。

返回值说明

约束说明

  • 基础数据类型的位宽,需大于等于1。
  • 输入的row和column,应保证计算公式结果大于零,整除有效无余数。

调用示例

// 生成的Layout为动态数据
using SrcT = half;
size_t mLength = 128;
size_t kLength = 64;
auto srcLayout = AscendC::MakeNZLayout<SrcT>(mLength, kLength);

// 生成的Layout为静态数据
NZLayout<SrcT, 128, 64> srcLayout;