CANN Triton类型属性详解

CANN Triton类型属性详解
Triton 类型与属性详解【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills本文档详细描述 Triton 方言中定义的所有类型和属性。所有定义均从 TableGen 源码精确提取。源码参考TritonTypes.tdTritonAttrDefs.td1. 核心类型1.1 PointerType (!tt.ptr)Triton 指针类型可指向标量或张量。参数类型说明$pointeeTypeType指向的目标类型$addressSpaceint地址空间编号!tt.ptrf32 ; 指向 f32 的指针 !tt.ptrtensor8x8xf16 ; 指向张量的指针张量指针 !tt.ptrf32, 1 ; 指向地址空间 1 的指针PointerType 使用自定义汇编格式构建器可从上下文推断PointerType::get(Type pointeeType, int addressSpace)1.2 TensorDescType (!tt.tensordesc)张量描述符类型是 NVIDIA TMA 描述符的可移植抽象。参数类型说明$blockTypeRankedTensorType描述符对应的块张量类型!tt.tensordesctensor8x8xf16构建器支持有符号/无符号整数语义TensorDescType::get(RankedTensorType blockType, bool isSigned)额外方法getSignlessBlockType()返回无符号版本的 blockTypegetTensorShape()返回块张量的形状2. 类型约束别名Triton 方言通过 TableGen 定义了一系列类型约束别名用于操作签名中的类型匹配2.1 浮点类型约束约束名定义说明TT_FloatAnyTypeOf[F8E4M3FN, F8E4M3FNUZ, F8E5M2, F8E5M2FNUZ, F16, BF16, F32, F64]所有支持的浮点类型TT_FloatTensorRankedTensorOf[TT_Float]浮点张量TT_FloatLikeAnyTypeOf[TT_Float, TT_FloatTensor]浮点标量或张量支持的浮点格式类型位宽说明F8E4M3FN8E4M3 格式标准 FP8F8E4M3FNUZ8E4M3 格式无偏移F8E5M28E5M2 格式标准 FP8F8E5M2FNUZ8E5M2 格式无偏移F1616半精度浮点BF1616BFloat16F3232单精度浮点F6464双精度浮点2.2 整数类型约束约束名定义说明I4I44 位整数TT_IntAnyTypeOf[I1, I4, I8, I16, I32, I64]所有支持的整数类型TT_IntTensorRankedTensorOf[TT_Int]整数张量TT_IntLikeAnyTypeOf[TT_Int, TT_IntTensor]整数标量或张量2.3 布尔类型约束约束名定义说明TT_BoolTensorRankedTensorOf[I1]布尔张量TT_BoolLikeAnyTypeOf[I1, TT_BoolTensor]布尔标量或张量2.4 指针类型约束约束名定义说明TT_PtrTT_PtrOf[AnyType]标量指针ptrTT_PtrTensorRankedTensorOf[TT_Ptr]指针张量tensorptrTT_PtrLikeAnyTypeOf[TT_Ptr, TT_PtrTensor]指针或指针张量TT_TensorPtrTT_PtrOf[TT_Tensor]张量指针ptrtensor2.5 复合类型约束约束名定义说明TT_FpIntTensorRankedTensorOf[TT_Float, TT_Int]浮点或整数张量TT_TensorRankedTensorOf[TT_Float, TT_Int, TT_Ptr]通用张量含指针张量TT_TypeAnyTypeOf[TT_FloatLike, TT_IntLike, TT_PtrLike, TT_TensorPtr]Triton 中任意类型TT_I32LikeAnyTypeOf[I32, I32Tensor]i32 标量或张量TT_I64LikeAnyTypeOf[I64, I64Tensor]i64 标量或张量3. 枚举属性3.1 CacheModifier控制加载/存储操作的缓存行为。枚举值整数值字符串说明NONE1none无缓存修饰CA2ca缓存所有级别Cache AllCG3cg缓存全局级别Cache GlobalWB4wb写回缓存Write-BackCS5cs流式缓存Cache StreamingWT6wt写穿透缓存Write-ThroughCV7cv易失性缓存Cache VolatileC 命名空间::mlir::triton3.2 EvictionPolicy控制缓存行的驱逐优先级。枚举值整数值字符串说明NORMAL1evict_normal正常驱逐EVICT_FIRST2evict_first优先驱逐EVICT_LAST3evict_last最后驱逐3.3 PaddingOption控制张量指针加载时越界元素的填充方式。枚举值整数值字符串说明PAD_ZERO1zero用零填充PAD_NAN2nan用 NaN 填充3.4 RMWOp原子读-改-写操作的类型。枚举值整数值字符串说明AND1and按位与OR2or按位或XOR3xor按位异或ADD4add整数加法FADD5fadd浮点加法MAX6max有符号最大值MIN7min有符号最小值UMAX8umax无符号最大值UMIN9umin无符号最小值XCHG10exch交换3.5 DescriptorReduceKind基于描述符的归约操作类型。枚举值整数值字符串说明ADD1add加法MIN2min最小值MAX3max最大值INC4inc递增DEC5dec递减AND6and按位与OR7or按位或XOR8xor按位异或3.6 MemSemantic原子操作的内存排序语义。枚举值整数值字符串说明RELAXED1relaxed宽松排序ACQUIRE2acquire获取语义RELEASE3release释放语义ACQUIRE_RELEASE4acq_rel获取-释放语义3.7 MemSyncScope原子操作的同步范围。枚举值整数值字符串说明GPU1gpuGPU 级同步CTA2ctaCTA线程块级同步SYSTEM3sys系统级同步3.8 ProgramIDDim程序 ID 的维度标识。枚举值整数值字符串说明X0xX 维度Y1yY 维度Z2zZ 维度3.9 RoundingMode浮点转换的舍入模式。枚举值整数值字符串说明RTZ0rtz向零舍入Round Toward ZeroRTNE1rtne向最近偶数舍入Round To Nearest Even3.10 PropagateNanNaN 传播策略用于tt.clampf操作。枚举值整数值字符串说明NONE0none不传播 NaNALL0xFFFFall传播所有 NaN3.11 InputPrecisiontt.dot操作的输入精度控制仅当输入为 f32 时有效。枚举值整数值字符串说明TF320tf32使用 TF32 Tensor CoreTF32x31tf32x33xTF32 技巧实现高精度IEEE2ieeeIEEE 754 精确实现不使用 Tensor Core3.12 ScaleDotElemTypett.dot_scaled操作的缩放元素类型。枚举值整数值字符串说明E4M30e4m3FP8 E4M3 格式E5M21e5m2FP8 E5M2 格式E2M32e2m3FP6 E2M3 格式E3M23e3m2FP6 E3M2 格式E2M14e2m1FP4 E2M1 格式BF165bf16BFloat16FP166fp16半精度浮点4. 属性在操作中的使用4.1 CacheModifier 使用场景操作属性名默认值tt.load$cacheNONEtt.store$cacheNONEtt.descriptor_load$cacheNONEttg.async_copy_global_to_local$cacheNONE4.2 EvictionPolicy 使用场景操作属性名默认值tt.load$evictNORMALtt.store$evictNORMALtt.descriptor_load$evictNORMALttg.async_copy_global_to_local$evictNORMAL4.3 PaddingOption 使用场景操作属性名默认值tt.load$padding可选无默认tt.make_tensor_descriptor$paddingPAD_ZERO4.4 MemSemantic / MemSyncScope 使用场景操作属性名tt.atomic_rmw$sem,$scopett.atomic_cas$sem,$scope5. 类型系统设计要点5.1 指针类型的双重角色Triton 指针类型有两种使用模式标量指针(!tt.ptrelementType)指向单个值或一维连续内存张量指针(!tt.ptrtensorshape, elementType)指向多维张量附带形状和步长信息TT_PtrLike约束同时接受标量指针和指针张量使得tt.load/tt.store可以处理两种内存访问模式。5.2 TensorDescType 与 PointerType 的区别特性!tt.ptrtensor...!tt.tensordesctensor...创建方式tt.make_tensor_ptrtt.make_tensor_descriptor偏移推进tt.advance索引参数加载方式tt.loadtt.descriptor_load存储方式tt.storett.descriptor_store硬件映射通用NVIDIA TMA 硬件加速边界检查boundaryCheck属性描述符内置5.3 TT_Type 的覆盖范围TT_Type AnyTypeOf[TT_FloatLike, TT_IntLike, TT_PtrLike, TT_TensorPtr]覆盖了 Triton IR 中几乎所有数据类型但不包括TT_BoolLike中的I1标量不在TT_IntLike中的I1... 实际上TT_Int包含I1所以TT_IntLike包含I1TT_TensorDescType描述符类型独立于TT_TypeTTG_AsyncTokenTritonGPU 方言的异步令牌类型【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考