ProtonGPUOps

proton_gpu.circular_store (triton::proton::gpu::CircularStoreOp)

将值存入循环缓冲区

语法

operation ::= `proton_gpu.circular_store` (`start` $isStart^):(`end`)? $segment `,` $counter attr-dict `:`
              qualified(type($segment)) `,` type($counter)

将一个指标 counter 存入由内部内存 segment 支持的循环缓冲区。自动更新。如果 segment 缓冲区已满,较旧的指标计数器将被丢弃。

接口:MemoryEffectOpInterface (MemoryEffectOpInterface)

效果:MemoryEffects::Effect{MemoryEffects::Read on ::mlir::SideEffects::DefaultResource, MemoryEffects::Write on ::mlir::SideEffects::DefaultResource}

属性:

属性MLIR 类型描述
isStart::mlir::UnitAttr单元属性
scopeId::mlir::IntegerAttr32位无符号整数属性

操作数:

操作数

描述

segment

内部缓冲区中的一个段

counter

32 位无符号整数或 64 位无符号整数

proton_gpu.finalize (triton::proton::gpu::FinalizeOp)

完成内核内分析器

语法

operation ::= `proton_gpu.finalize` $segment `,` $scratchPtr attr-dict `:` qualified(type($segment)) `,` qualified(type($scratchPtr))

将元数据和分析结果写回全局内存。segment 是包含分析数据的内部分析缓冲区的段。scratchPtr 是分析暂存缓冲区的地址。

接口:MemoryEffectOpInterface (MemoryEffectOpInterface)

效果:MemoryEffects::Effect{MemoryEffects::Read on ::mlir::triton::GlobalMemory}MemoryEffects::Effect{MemoryEffects::Read on ::mlir::triton::gpu::SharedMemory}MemoryEffects::Effect{MemoryEffects::Write on ::mlir::triton::GlobalMemory}

操作数:

操作数

描述

segment

内部缓冲区中的一个段

scratchPtr

ptr

proton_gpu.global_scratch_alloc (triton::proton::gpu::GlobalScratchAllocOp)

分配一个全局内存分析缓冲区

语法

operation ::= `proton_gpu.global_scratch_alloc` attr-dict `:` qualified(type($result))

此操作在全局内存中分配一个分析缓冲区。每个被分析的 Triton 程序都将持有一个指向该缓冲区的指针,直到分析完成。

接口:MemoryEffectOpInterface (MemoryEffectOpInterface)

效果:MemoryEffects::Effect{MemoryEffects::Allocate on ::mlir::triton::GlobalMemory}

属性:

属性MLIR 类型描述
nbytes::mlir::IntegerAttr32位无符号整数属性
alignment::mlir::IntegerAttr32位无符号整数属性

结果:

结果

描述

result

ptr

proton_gpu.init_ctx (triton::proton::gpu::InitCtxOp)

初始化内核内分析器的 Warp 级上下文

语法

operation ::= `proton_gpu.init_ctx` $scratchPtr attr-dict `:` qualified(type($scratchPtr))

scratchPtr(分析暂存缓冲区的基地址)中的所有 Warp 初始化内核内分析器的 Warp 级上下文。它不能在 ttg.warp_specialize 内部调用。

接口:MemoryEffectOpInterface (MemoryEffectOpInterface)

效果:MemoryEffects::Effect{MemoryEffects::Write on ::mlir::triton::GlobalMemory}

操作数:

操作数

描述

scratchPtr

ptr

proton_gpu.initialize (triton::proton::gpu::InitializeOp)

初始化内核内分析器

语法

operation ::= `proton_gpu.initialize` $scratchPtr attr-dict `:` qualified(type($scratchPtr))

通过将辅助元数据填充到头部来初始化内核内分析器。scratchPtr 是存储头部的分析暂存缓冲区的基地址。

接口:MemoryEffectOpInterface (MemoryEffectOpInterface)

效果:MemoryEffects::Effect{MemoryEffects::Write on ::mlir::triton::GlobalMemory}

操作数:

操作数

描述

scratchPtr

ptr

proton_gpu.read_counter (triton::proton::gpu::ReadCounterOp)

将 GPU 指标计数器读入标量寄存器

语法

operation ::= `proton_gpu.read_counter` attr-dict `:` type($counter)

将一个 GPU 指标计数器读入标量寄存器。

接口:MemoryEffectOpInterface (MemoryEffectOpInterface)

效果:MemoryEffects::Effect{MemoryEffects::Read on ::mlir::SideEffects::DefaultResource, MemoryEffects::Write on ::mlir::SideEffects::DefaultResource}

属性:

属性MLIR 类型描述
metric::mlir::triton::proton::MetricTypeAttr
要分析的指标类型{{% markdown %}} 用于指示要分析的指标的属性。支持以下指标: - CYCLE: 周期计数指标。{{% /markdown %}}

结果:

结果

描述

counter

32 位无符号整数或 64 位无符号整数

proton_gpu.restore_ctx (triton::proton::gpu::RestoreCtxOp)

恢复当前的 Warp 级上下文

语法

operation ::= `proton_gpu.restore_ctx` $segment `,` $scratchPtr attr-dict `:` qualified(type($segment)) `,` qualified(type($scratchPtr))

scratchPtr(分析暂存缓冲区的基地址)恢复 $segment 中的当前 Warp 上下文。

接口:MemoryEffectOpInterface (MemoryEffectOpInterface)

效果:MemoryEffects::Effect{MemoryEffects::Read on ::mlir::triton::GlobalMemory}MemoryEffects::Effect{MemoryEffects::Write on ::mlir::triton::GlobalMemory}

操作数:

操作数

描述

segment

内部缓冲区中的一个段

scratchPtr

ptr

proton_gpu.save_ctx (triton::proton::gpu::SaveCtxOp)

保存当前的 Warp 级上下文

语法

operation ::= `proton_gpu.save_ctx` $segment `,` $scratchPtr attr-dict `:` qualified(type($segment)) `,` qualified(type($scratchPtr))

$segment 中的当前 Warp 上下文保存到 scratchPtr(分析暂存缓冲区的基地址)。

接口:MemoryEffectOpInterface (MemoryEffectOpInterface)

效果:MemoryEffects::Effect{MemoryEffects::Write on ::mlir::triton::GlobalMemory}

操作数:

操作数

描述

segment

内部缓冲区中的一个段

scratchPtr

ptr

proton_gpu.segment_alloc (triton::proton::gpu::SegmentAllocOp)

获取内部缓冲区段的基偏移量

语法

operation ::= `proton_gpu.segment_alloc` $buffer attr-dict `:` qualified(type($buffer)) `->` type($segment)

内部缓冲区为每个分析“单元”划分成段。此操作获取内部缓冲区中内存段的位置。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

效果: MemoryEffects::Effect{}

操作数:

操作数

描述

buffer

Triton IR 类型系统中的内存描述符类型 (::mlir::triton::gpu::MemDescType)

结果:

结果

描述

segment

内部缓冲区中的一个段