v_smfmac_f32_32x32x16_bf16 GPU Native ISA AMD Matrix
V SMFMAC F32 32X32X16 BF16 Vector Packed Arithmetic
v_smfmac_f32_32x32x16_bf16
Multiply the 32x16 sparse matrix in the first input by the 16x32 matrix in the second input and accumulate the result into the 32x32 matrix stored in…
Encoding
Verified bit-level encoding data is not yet available for this instruction.
The instruction-format classification below (VOP3P)
is well-documented and stable; exact per-target opcode/field bit positions have not
yet been imported from a verified source.
Operands
Operand details have not yet been curated for this instruction.
GFX Target Compatibility
Per-target GFX compatibility has not yet been verified for this instruction.
This instruction performs 8 passes.
Related
More in Vector Packed Arithmetic
Reference
AMDGPU / GFX ISA
Description
Multiply the 32x16 sparse matrix in the first input by the 16x32 matrix in the second input and accumulate the result into the 32x32 matrix stored in the destination registers using fused multiply add. Sparse indexes for the first matrix are given in the third input.
Semantics
D = A (sparse 32x16) * B (16x32) + D (32x32)
Each operand contains a single matrix whose elements are distributed across all lanes of the wave. A single
matrix multiply is computed and the row-column dot products are distributed across the vector ALU for higher
performance.
Matrix A is a sparse matrix in BF16 float format, consuming half the physical storage of a dense matrix with
same dimensions. Matrix B is a dense matrix in BF16 float format. Matrix D is single-precision float format and
is both the output and the accumulate input.
2 out of every 4 elements on the K axis of matrix A are zero. The sparse indexes are used to determine which 2
elements are zero.
Sources
- User Guide for AMDGPU Backend ↗ - LLVM Project
-
"AMD Instinct MI300" Instruction Set Architecture: Reference Guide ↗
- Advanced Micro Devices, Inc.
Reference Guide, page 282.