MakeScaleBNDLayout
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR/Ascend 950DT | √ |
函数原型
template <typename T, typename U, typename S>
__aicore__ inline decltype(auto) MakeScaleBNDLayout(U row, S column)
功能描述
创建ScaleBND格式的Layout对象。ScaleBND格式用于矩阵B的非转置布局(scaleK, n),常用于矩阵乘法中B矩阵的存储。
参数说明
表 1 模板参数说明
| 参数名 | 输入/输出 | 描述 |
|---|---|---|
| T | 输入 | 数据类型,支持数据类型为fp8_e8m0_t。 |
| U | 输入 | 行参数类型,可以是编译时常量或运行时变量。 |
| S | 输入 | 列参数类型,可以是编译时常量或运行时变量。 |
表 2 参数说明
| 参数名 | 输入/输出 | 描述 |
|---|---|---|
| row | 输入 | 矩阵的行数。 |
| column | 输入 | 矩阵的列数。 |
返回值
- 输入为编译时常量时,返回ScaleBNDLayout格式的Layout类型。
- 输入为整型变量时,返回ScaleBNDLayout格式的Layout对象。
- 返回对齐后的Layout,对齐方式及对应位置的参数大小说明详见Layout和层次化表述法。
约束说明
- 参数row和column需为size_t类型或Int整型常量。
- 对于T为fp8_e8m0_t时,row需为2的倍数。
使用示例
using namespace AscendC::Te;
// 使用编译时常量
auto staticLayout = MakeScaleBNDLayout<fp8_e8m0_t>(Std::Int<64>{}, Std::Int<32>{});
// 使用运行时变量
size_t scaleK = 64;
size_t n = 32;
auto layout2 = MakeScaleBNDLayout<fp8_e8m0_t>(scaleK, n);