作为英特尔不断寻求最大化其GPU/加速器计算性能的一部分,他们的编译器工程师提议为LLVM的MLIR引入XeGPU方言。
英特尔的李建辉提议为英特尔图形处理器提供XeGPU MLIR方言。他在周五解释说此评论请求:
为了在Intel GPU上支持高性能的GEMM代码生成,我们提出了XeGPU方言。XeGPU方言提供了紧密模拟Xe指令的抽象。当特殊的Xe指令不能用LLVM/SPIR-V方言表示时,例如矩阵指令(AKA DPA)和2D块加载,XeGPU操作被引入。它匹配硬件指令的语义,包括矩阵大小。XeGPU方言类似于NVGPU和AMDGPU方言,并作为桥接方言工作,提供对MLIR、Memref和向量数据类型的特定目标操作。
XeGPU方言模型的一个子集的GPU的独特功能,专注于GEMM性能。这些操作包括2d load、dpas、atomic、scattered load、1d load、named barrier、mfence和compile-hint。这些操作提供了一个最小的集合,以支持高性能MLIR GEMM实施的GEMM形状范围广泛。XeGPU方言补充了Arith、Math、Vector和Memref方言。这允许基于XeGPU的MLIR GEMM实现与通过现有MLIR方言降低的其他操作融合。
英特尔确实已经有了英特尔对MLIR的扩展以及一些高性能XeGPU GEMM的实现。英特尔已在Intel Max系列图形硬件上以接近峰值的GEMM性能演示了此代码。
XeGPU方言模拟Xe GPU ISA的子集。这是NVGPU和AMDGPU方言的对应,这两种方言在MLIR逐渐降低的过程中提供了一个桥梁方言。XeGPU方言与MLIR Memref和向量类型一起工作,并补充了Arith、Math、Vector和Memref方言。XeGPU操作是在存在未由LLVM/SPIR-V方言建模的特殊Xe指令时引入的,例如DPA和2D块加载。在某些情况下,一个XeGPU op可能会降低到用于专用和性能关键型功能的指令序列。例如,create_tdesc被映射到固定的指令序列以创建地址描述。“
本RFC文档为那些感兴趣的编译器工程师/爱好者提供了更多关于MLIR建议的XeGPU方言的详细信息。
这项正在进行的图形编译器工作,新的Xe内核驱动程序, and other ongoing open-source investments by Intel will be all the more important by the time the Falcon Shores APU launches in 2025. Exciting times ahead.