level 1
少师夜雨
楼主
最近FSR4下放相关的事情,很多相关文章中提到了个WMMA指令集,有一些人就对此很好奇,WMMA到底是个啥,干嘛用的呢?RDNA3和RDNA4的WMMA有什么区别呢?我在这里尽量解释清楚。
WMMA(Wave Matrix Multiply-Accumulate,波矩阵乘累加)是AMD RDNA架构面向AI推理、通用矩阵运算设计的核心向量加速指令,依托GPU的VALU(向量算术逻辑单元)执行16x16x16尺寸的C=A*B+D矩阵计算,对应WMMA指令:V_WMMA_F16_16X16X16_F16。不过虽然二者的指令格式类似,但RDNA3和RDNA4在硬件实现上不太一样,下面我继续讲解一下:
RDNA3算是AMD首个支持WMMA指令的消费级架构(计算卡很早,在CDNA1就有相关设计了),硬件是直接复用现有VALU点积(V_DOT指令)流水线的设计,没有独立矩阵运算硬件单元。也没办法单周期完成矩阵运算,会在硬件内部拆解迭代执行多条V_DOT点积指令,通过多个周期累加,最终输出矩阵结果,RDNA3的WMMA算力也等同于V_DOT。由于RDNA3复用DOT这也导致RDNA3在执行DOT指令时WMMA会被阻塞,需要手动插入V_NOP来避免数据冒险或者硬件假死的情况,猜测是由于端侧AI的飞速发展外加RDNA3也有点赶鸭子上架的意思,所以AMD在RDNA3 GPU上匆忙加入了WMMA支持。
RDNA4就不一样了,RDNA4的WMMA实现舍弃DOT指令复用方案,在原生VALU单元内部集成了矩阵乘加功能,独立的指令发射、数据搬运、结果累加流水线,不再像RDNA3那样拆解为DOT指令执行;增加了一些新的数据类型支持以及结构化稀疏矩阵加速(V_SWMMA指令);也拥有专属的数据冒险(Hazard)规则,于是乎RDNA4 WMMA吞吐量、延迟相较RDNA3实现大幅优化,以及RDNA4 WMMA算力不能再直接套用VALU/DOT指令了,比较可惜的是没有沿用CDNA的设计,CDNA的MFMA是完全独立设计以及独立寄存器配置,RDNA4目前还是以向量单元为基础实现,并与VALU共用vGPR。
当你阅读到这里,你大概已经了解了WMMA作用以及实现,但你可能心中会有个疑惑:“那RDNA2和RDNA3怎么加速FSR4呢?”实际上,根据目前AMD泄漏的FSR4工作流来看,FSR4其实支持DOT硬件加速(好气,链接发不出来),所以即使不具备WMMA加速,但是硬件本身图灵完备,运行起来是没什么问题的,差异主要体现在效率上,所以没有什么可担心的了。
码了好多字,蹲几天看看这个帖子有没有人看吧,看的人多的话,也许我会抽点时间介绍一下隔壁老黄的Tensor Core体系(Tensor Core逆向难度有点大,会花相当长的时间),嗯就这样,结束。
参考:
AMD RDNA3 Instruction Set Architecture
AMD RDNA4 Instruction Set Architecture
FSR 4 神经网络模型架构深度分析 - Losuffi Blog
2026年05月26日 11点05分
1
WMMA(Wave Matrix Multiply-Accumulate,波矩阵乘累加)是AMD RDNA架构面向AI推理、通用矩阵运算设计的核心向量加速指令,依托GPU的VALU(向量算术逻辑单元)执行16x16x16尺寸的C=A*B+D矩阵计算,对应WMMA指令:V_WMMA_F16_16X16X16_F16。不过虽然二者的指令格式类似,但RDNA3和RDNA4在硬件实现上不太一样,下面我继续讲解一下:
RDNA3算是AMD首个支持WMMA指令的消费级架构(计算卡很早,在CDNA1就有相关设计了),硬件是直接复用现有VALU点积(V_DOT指令)流水线的设计,没有独立矩阵运算硬件单元。也没办法单周期完成矩阵运算,会在硬件内部拆解迭代执行多条V_DOT点积指令,通过多个周期累加,最终输出矩阵结果,RDNA3的WMMA算力也等同于V_DOT。由于RDNA3复用DOT这也导致RDNA3在执行DOT指令时WMMA会被阻塞,需要手动插入V_NOP来避免数据冒险或者硬件假死的情况,猜测是由于端侧AI的飞速发展外加RDNA3也有点赶鸭子上架的意思,所以AMD在RDNA3 GPU上匆忙加入了WMMA支持。
RDNA4就不一样了,RDNA4的WMMA实现舍弃DOT指令复用方案,在原生VALU单元内部集成了矩阵乘加功能,独立的指令发射、数据搬运、结果累加流水线,不再像RDNA3那样拆解为DOT指令执行;增加了一些新的数据类型支持以及结构化稀疏矩阵加速(V_SWMMA指令);也拥有专属的数据冒险(Hazard)规则,于是乎RDNA4 WMMA吞吐量、延迟相较RDNA3实现大幅优化,以及RDNA4 WMMA算力不能再直接套用VALU/DOT指令了,比较可惜的是没有沿用CDNA的设计,CDNA的MFMA是完全独立设计以及独立寄存器配置,RDNA4目前还是以向量单元为基础实现,并与VALU共用vGPR。
当你阅读到这里,你大概已经了解了WMMA作用以及实现,但你可能心中会有个疑惑:“那RDNA2和RDNA3怎么加速FSR4呢?”实际上,根据目前AMD泄漏的FSR4工作流来看,FSR4其实支持DOT硬件加速(好气,链接发不出来),所以即使不具备WMMA加速,但是硬件本身图灵完备,运行起来是没什么问题的,差异主要体现在效率上,所以没有什么可担心的了。
码了好多字,蹲几天看看这个帖子有没有人看吧,看的人多的话,也许我会抽点时间介绍一下隔壁老黄的Tensor Core体系(Tensor Core逆向难度有点大,会花相当长的时间),嗯就这样,结束。
参考:
AMD RDNA3 Instruction Set Architecture
AMD RDNA4 Instruction Set Architecture
FSR 4 神经网络模型架构深度分析 - Losuffi Blog