趋近智
现代硬件加速器,特别是图形处理器(GPU),逐渐集成专门的执行单元,旨在大幅加速密集矩阵乘法和卷积运算,这些运算是深度学习工作负载的基础。英伟达(NVIDIA)从Volta架构开始引入了张量核心(Tensor Cores),而AMD则通过其CDNA/RDNA架构中的矩阵核心(Matrix Core)或矩阵融合乘加(MFMA)指令提供类似功能。与标准浮点单元相比,这些单元提供了显著更高的理论吞吐量,但发挥这一潜力需要复杂的编译器支持。
张量核心和矩阵核心通常在一个周期或少量周期内执行类似于小型、固定大小的矩阵乘法和累加运算。一种常见形式是:
其中 、、 和 是小型矩阵(例如 、、,具体取决于硬件代次和特定指令)。一个重要方面是它们对混合精度的原生支持。输入 和 通常要求采用较低精度格式,如FP16(半精度浮点)、BF16(bfloat16),甚至INT8/INT4(8位/4位整数),而累加( 和 )经常以更高精度进行,如FP32(单精度浮点),以在多次累加中保持数值精度。
这种在矩阵片段上的混合精度FMA运算是它们性能优势的主要原因。与使用一系列标量或向量FMA指令执行等效运算相比,它们将更多的计算密度集成到硬件中。
为这些单元生成高效代码给编译器后端带来了若干挑战:
mma.sync,AMD的mfma内联函数)。这通常涉及通过多个阶段降低高级线性代数运算(如MLIR中的linalg.matmul)。mma.sync等指令的GPU warp内),以在确保正确性的同时最大化指令级并行性和流水线利用率。编译器采用若干技术来应对这些挑战:
nvgpu,AMD的rocdl)来暴露更接近硬件能力的抽象。这些方言可能包含直接表示矩阵FMA指令的操作或内联函数。linalg.matmul可能首先分块以在适合共享内存的块上操作。然后,在每个块内,会发生进一步的分块(寄存器分块)以匹配矩阵单元的维度。这个内部循环随后被降低到方言特定的内联函数或直接到汇编指令,如PTX mma.sync或ROCDL mfma。矩阵乘法的分块策略。大型矩阵A、B和C被分割成更小的块(例如A11、B11、C11),由硬件矩阵单元迭代处理。输入块被加载、乘法运算并累加到相应的输出块中。
为专门的矩阵单元生成高效代码是一个复杂的优化问题,涉及计算、数据移动和资源管理的仔细协调。它需要编译器IR、转换遍和目标特定后端之间的深度集成。在此取得成功对于在现代加速器上实现深度学习训练和推理的最先进性能非常重要。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造