标量参数与枚举
【免费下载链接】pto-isaParallel Tile Operation (PTO) is a virtual instruction set architecture designed by Ascend CANN, focusing on tile-level operations. This repository offers high-performance, cross-platform tile operations across Ascend platforms.项目地址: https://gitcode.com/cann/pto-isa
许多 PTO 内建接口除了 Tile 外还会带标量参数(例如比较模式、舍入模式、原子模式或字面常量)。
本文档汇总include/pto/common/pto_instr.hpp公共内建接口中出现的标量/枚举类型。
标量值
部分指令直接使用 C++ 基本类型作为标量参数:
TADDS/TMULS/TDIVS/TEXPANDS:标量类型为TileData::DType。TMINS:标量为模板类型T,必须可转换为 Tile 元素类型。TCI:标量S为模板类型T,并且必须与TileData::DType匹配(由实现中的static_assert强制)。
PTO ISA 类型助记符(参考)
ISA 文档会用简短助记符(例如fp16、s8)描述指令语义。不同后端在任意时刻可能只支持其中一部分;实现状态可参考include/README_zh.md。
整数类型
| 类型 | 助记符 |
|---|---|
| 有符号 | s4,s8,s16,s32,s64 |
| 无符号 | u4,u8,u16,u32,u64 |
浮点类型
| 类型 | 助记符 |
|---|---|
| 4-bit float 家族 | fp4,hif4,mxfp4 |
| 8-bit float 家族 | fp8,hif8,mxfp8 |
| 16-bit float 家族 | bf16,fp16 |
| 32-bit float 家族 | tf32,hf32,fp32 |
| 64-bit float | fp64 |
无类型比特宽度
| 类型 | 助记符 |
|---|---|
| typeless bits | b4,b8,b16,b32,b64 |
兼容性规则(ISA 约定)
当两个助记符满足以下条件时,认为二者兼容:
- 位宽相同,并且满足其一:
- 类型相同;或
- 同位宽的有符号/无符号整数;或
- 其中一侧为同位宽的 typeless bits(
b*)。
这属于文档层面的规则,用于描述指令合法性;具体指令可能进一步限制类型。
核心枚举
以下枚举均可通过#include <pto/pto-inst.hpp>使用。
pto::RoundMode
定义于include/pto/common/constants.hpp。TCVT使用它来指定舍入行为(例如RoundMode::CAST_RINT)。
pto::CmpMode
定义于include/pto/common/type.hpp。TCMPS(以及TCMP)使用它进行逐元素比较(EQ/NE/LT/GT/GE/LE)。
pto::MaskPattern
定义于include/pto/common/type.hpp。mask-pattern 形式的TGATHER使用它选择预定义的 0/1 mask 模式。
pto::AtomicType
定义于include/pto/common/constants.hpp。作为TSTORE<..., AtomicType::AtomicAdd>(或AtomicNone)的模板参数。
pto::AccToVecMode与pto::ReluPreMode
定义于include/pto/common/constants.hpp。用于TMOV的部分重载:从累加器 Tile 移动到向量/矩阵 Tile 时,选择量化与/或 ReLU 行为。
pto::PadValue
定义于include/pto/common/constants.hpp。属于Tile<...>模板参数,并被一些实现用于定义有效区域外元素的处理策略(例如 select/copy/pad)。
示例
#include <pto/pto-inst.hpp> using namespace pto; void example(Tile<TileType::Vec, float, 16, 16>& dst, Tile<TileType::Vec, float, 16, 16>& src) { TCVT(dst, src, RoundMode::CAST_RINT); TMINS(dst, src, 0.0f); }【免费下载链接】pto-isaParallel Tile Operation (PTO) is a virtual instruction set architecture designed by Ascend CANN, focusing on tile-level operations. This repository offers high-performance, cross-platform tile operations across Ascend platforms.项目地址: https://gitcode.com/cann/pto-isa
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考