CANN/asc-devkit ScaleAND 布局格式
ScaleANDLayoutFormat
【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR/Ascend 950DT | √ |
功能说明
ScaleANDLayoutFormat用于定义ScaleAND格式的布局,ScaleAND格式是一种支持缩放的布局,也是一种特殊的ND格式。
结构体定义
template <typename T> struct ScaleANDLayoutFormat { template <size_t row, size_t column> using type = ScaleANDFormatLayout<T, row, column>; template <typename U, typename S> __aicore__ inline decltype(auto) operator()(U row, S column) { return MakeScaleANDLayout<T, U, S>(row, column); } };参数说明
| 参数名 | 输入/输出 | 描述 |
|---|---|---|
| T | 输入 | 数据类型模板参数。 支持的数据类型为:fp8_e8m0_t。 |
| row | 输入 | 矩阵的总行数。 |
| column | 输入 | 矩阵的总列数。 |
返回值
- 输入为编译时常量时,返回ScaleAND格式的Layout类型。
- 输入为整型变量时,返回ScaleAND格式的Layout对象。
- 返回对齐后的Layout,对齐方式及对应位置的参数大小说明详见Layout和层次化表述法。
约束说明
参数row和column需为size_t类型或Int整型常量。
调用示例
// 创建ScaleAND格式Layout using namespace AscendC::Te; // 根据flag的值,选择ScaleAND格式或ScaleADN格式的类型 constexpr bool flag = true; using MyLayoutType = conditional_t<flag, ScaleANDFormatLayout<fp8_e8m0_t>, ScaleADNFormatLayout<fp8_e8m0_t>>; size_t m = 128; size_t scaleK = 128; auto layoutAL1 = MyLayoutType{}(m, scaleK); // 编译时常量传参构造Layout using MyScaleANDLayout = ScaleANDLayoutFormat<fp8_e8m0_t>::type<Std::Int<32>, Std::Int<64>>; auto staticLayout = MyScaleANDLayout{}; // 运行时变量传参构造Layout ScaleANDLayoutFormat<fp8_e8m0_t> scaleANDFormat; auto layout = scaleANDFormat(32, 64);【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
