diff --git a/docs/reference/modules/warp_gemm_attribute_mfma_impl.rst b/docs/reference/modules/warp_gemm_attribute_mfma_impl.rst new file mode 100644 index 0000000000..bef6f7ec35 --- /dev/null +++ b/docs/reference/modules/warp_gemm_attribute_mfma_impl.rst @@ -0,0 +1,123 @@ +.. |rst_start_tag| raw:: html + +
+ +.. |rst_end_tag| raw:: html + +
+ +|rst_start_tag| + +.. highlight:: cpp + +.. include_file:: include/ck_tile/ops/gemm/warp/warp_gemm_attribute_mfma_impl.hpp + +.. _file_ck_tile_ops_gemm_warp_warp_gemm_attribute_mfma_impl.hpp: + +include/ck_tile/ops/gemm/warp/warp_gemm_attribute_mfma_impl.hpp +================================================================ + +This file defines the `WGAttrCtlEnum` enumeration and various `WarpGemmAttributeMfmaImpl` struct definitions. These structs specify attributes for warp-level GEMM (General Matrix Multiply) operations, particularly those utilizing MFMA (Matrix Fused Multiply-Add) instructions, with different data types and matrix dimensions. + +**Contents:** + +.. contents:: + :local: + :depth: 2 + +.. cpp:enum-class:: WGAttrCtlEnum + :project: ck_tile + + .. _ex_WGAttrCtlEnum: + + `WGAttrCtlEnum` + -------------------- + + Enumeration controlling the attributes for warp-level GEMM operations, primarily related to register allocation (e.g., vgpr for vector general-purpose register, agpr for accumulator general-purpose register) for C, A, and B matrices in the context of MFMA instructions. + + .. container:: custom-attributes + + .. cpp:enumerator:: Default_ = 0 + + Default attribute control. + + .. cpp:enumerator:: Raw_vvv = 1 + + C-vgpr, A-vgpr, B-vgpr. + + .. cpp:enumerator:: Raw_vaa = 2 + + C-vgpr, A-agpr, B-agpr. + + .. cpp:enumerator:: Raw_vav = 3 + + C-vgpr, A-agpr, B-vgpr. + + .. cpp:enumerator:: Raw_vva = 4 + + C-vgpr, A-vgpr, B-agpr. + + .. cpp:enumerator:: Raw_avv = 5 + + C-agpr, A-vgpr, B-vgpr. + +.. _ex_WarpGemmAttributeMfmaImpl_Structs: + +WarpGemmAttributeMfmaImpl Struct Definitions +---------------------------------------------- + +These structs define specific configurations for warp-level GEMM, parameterized by input/output data types (e.g., BF16, FP16, FP8, INT8) and matrix dimensions (M, N, K). The naming convention generally follows `WarpGemmAttributeMfmaImplMNK`. + +.. _WarpGemmAttributeMfmaImpl_BF16: + +Bf16Bf16F32 Combinations +^^^^^^^^^^^^^^^^^^^^^^^ + +These structs specify MFMA attributes for operations with BF16 inputs and FP32 accumulation/output. + +* `WarpGemmAttributeMfmaImplBf16Bf16F32M16N16K32` +* `WarpGemmAttributeMfmaImplBf16Bf16F32M32N32K8` +* `WarpGemmAttributeMfmaImplBf16Bf16F32M16N16K16` +* `WarpGemmAttributeMfmaImplBf16Bf16F32M4N64K4` +* `WarpGemmAttributeMfmaImplBf16Bf16F32M64N4K4` +* `WarpGemmAttributeMfmaImplBf16Bf16F32M32N32K16` + +.. _WarpGemmAttributeMfmaImpl_FP16: + +F16F16F32 Combinations +^^^^^^^^^^^^^^^^^^^^^^ + +These structs specify MFMA attributes for operations with FP16 inputs and FP32 accumulation/output. + +* `WarpGemmAttributeMfmaImplF16F16F32M32N32K8` +* `WarpGemmAttributeMfmaImplF16F16F32M16N16K16` +* `WarpGemmAttributeMfmaImplF16F16F32M16N16K32` +* `WarpGemmAttributeMfmaImplF16F16F32M4N64K4` +* `WarpGemmAttributeMfmaImplF16F16F32M64N4K4` +* `WarpGemmAttributeMfmaImplF16F16F32M32N32K16` + +.. _WarpGemmAttributeMfmaImpl_FP8: + +FP8 Related Base Structs +^^^^^^^^^^^^^^^^^^^^^^^ + +These are base template structs for MFMA attributes involving FP8 or BF8 input types, typically accumulating to FP32. + +* `WarpGemmAttributeMfmaImpl_f32_16x16x32_f8_base` +* `WarpGemmAttributeMfmaImpl_f32_32x32x16_f8_base` +* `WarpGemmAttributeMfmaImpl_f32_16x16x128_f8_bf8_base` +* `WarpGemmAttributeMfmaImpl_f32_32x32x64_f8_bf8_base` + +.. _WarpGemmAttributeMfmaImpl_INT8: + +Int8 Related Structs (`_i32_`) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +These structs specify MFMA attributes for operations with INT8 inputs and INT32 accumulation/output. + +* `WarpGemmAttributeMfmaImpl_i32_32x32x16_i8` +* `WarpGemmAttributeMfmaImpl_i32_16x16x32_i8` +* `WarpGemmAttributeMfmaImpl_i32_16x16x64_i8` +* `WarpGemmAttributeMfmaImpl_i32_32x32x32_i8` + +|rst_end_tag|