首页
/ IREE项目中AMDGPU缩放矩阵融合乘加指令的封装实现

IREE项目中AMDGPU缩放矩阵融合乘加指令的封装实现

2025-06-26 09:27:02作者:盛欣凯Ernestine

在深度学习和高性能计算领域,矩阵乘法是核心计算操作之一。AMD GPU通过矩阵融合乘加(MFMA)指令提供了高效的矩阵运算能力。本文将深入解析IREE项目中对AMD GPU新型缩放MFMA指令的封装实现,这些指令支持fp4、fp6和fp8等低精度浮点格式。

背景与需求

现代AI工作负载中,低精度计算变得越来越重要。AMD MI-300架构引入了支持fp4、fp6和fp8格式的缩放MFMA指令,这些指令可以显著提升计算效率并降低内存带宽需求。IREE项目需要为这些新指令提供MLIR级别的抽象,以便在编译器优化流程中更好地利用这些硬件特性。

技术实现细节

指令特性分析

这些缩放MFMA指令具有以下关键特性:

  1. 支持两种基本瓦片尺寸配置:

    • M=N=16,K=128
    • M=N=32,K=64
  2. 支持多种低精度浮点格式:

    • fp4 (f4E2M1FN)
    • fp6 (f6E2M3FN和f6E3M2FN)
    • fp8 (f8E4M3FN和f8E5M2)
  3. 所有缩放MFMA的块/批处理大小固定为1,这与传统MFMA指令不同。

设计决策

在设计amdgpu.scaled_mfma操作时,团队做出了几个重要决策:

  1. 简化属性设计:移除了abidcbszblgp属性,因为这些在缩放MFMA中被重新用于类型编码和内部缩放控制。

  2. 显式类型表示:坚持MLIR不隐藏类型的原则,将缩放因子明确表示为<4 x i8>类型,而非底层LLVM使用的i32

  3. 用户友好性:提供了从i8<4 x i8>的自动转换,简化了常见用例。

实现架构

实现主要包含以下几个关键部分:

  1. 类型到内在函数的映射:通过查找表将瓦片尺寸和元素类型映射到对应的ROCm设备函数。

  2. 参数处理:正确处理缩放因子和选择器(opsel)参数,确保生成正确的机器指令。

  3. 与现有MFMA基础设施的集成:复用已有的参数类型转换逻辑,保持代码一致性。

技术挑战与解决方案

在实现过程中,团队面临了几个技术挑战:

  1. 参数表示差异:LLVM内在函数使用i32表示缩放因子,而MLIR层面更倾向于使用<4 x i8>。解决方案是在转换层处理这种表示差异。

  2. 指令特性变化:新型缩放MFMA与传统MFMA在广播支持等方面有差异。通过设计专门的操作而非强行统一解决了这个问题。

  3. 类型系统复杂性:支持多种低精度格式增加了类型系统的复杂性。通过清晰的文档和类型检查确保了正确性。

性能考量

这种封装设计考虑了以下性能因素:

  1. 编译时优化:通过属性而非操作数表示固定参数,便于编译器优化。

  2. 硬件特性利用:正确暴露了硬件支持的缩放功能,使后端能生成最优代码。

  3. 类型安全:严格的类型检查避免了运行时类型不匹配的开销。

应用前景

这一实现为IREE项目带来了以下优势:

  1. 支持更广泛的低精度计算场景
  2. 为混合精度算法提供了更好的硬件支持
  3. 为未来AMD GPU特性的集成建立了可扩展的框架

随着AI模型对低精度计算需求的增长,这种对新型硬件指令的支持将变得越来越重要。IREE项目的这一工作为高效利用现代GPU计算能力奠定了坚实基础。

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
176
261
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
860
511
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
129
182
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
259
300
ShopXO开源商城ShopXO开源商城
🔥🔥🔥ShopXO企业级免费开源商城系统,可视化DIY拖拽装修、包含PC、H5、多端小程序(微信+支付宝+百度+头条&抖音+QQ+快手)、APP、多仓库、多商户、多门店、IM客服、进销存,遵循MIT开源协议发布、基于ThinkPHP8框架研发
JavaScript
93
15
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
332
1.08 K
HarmonyOS-ExamplesHarmonyOS-Examples
本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
398
371
note-gennote-gen
一款跨平台的 Markdown AI 笔记软件,致力于使用 AI 建立记录和写作的桥梁。
TSX
83
4
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.07 K
0
kernelkernel
deepin linux kernel
C
22
5