[Codegen] add mi308x target (#19756)
This PR is about addressing the task outlined in
https://github.com/iree-org/iree/issues/19721.
---------
Signed-off-by: Bangtian Liu <liubangtian@gmail.com>
diff --git a/compiler/plugins/target/ROCM/test/target_device_features.mlir b/compiler/plugins/target/ROCM/test/target_device_features.mlir
index 01805d2..7412357 100644
--- a/compiler/plugins/target/ROCM/test/target_device_features.mlir
+++ b/compiler/plugins/target/ROCM/test/target_device_features.mlir
@@ -2,6 +2,8 @@
// RUN: --iree-hip-target=mi300x %s | FileCheck %s --check-prefixes=GFX942,MI300X
// RUN: iree-opt --pass-pipeline='builtin.module(iree-hal-assign-target-devices{targetDevices=hip},iree-hal-transformation-pipeline{serialize-executables=false})' \
// RUN: --iree-hip-target=mi300a %s | FileCheck %s --check-prefixes=GFX942,MI300A
+// RUN: iree-opt --pass-pipeline='builtin.module(iree-hal-assign-target-devices{targetDevices=hip},iree-hal-transformation-pipeline{serialize-executables=false})' \
+// RUN: --iree-hip-target=mi308x %s | FileCheck %s --check-prefixes=GFX942,MI308X
//
// RUN: iree-opt --pass-pipeline='builtin.module(iree-hal-assign-target-devices{targetDevices=hip},iree-hal-transformation-pipeline{serialize-executables=false})' \
// RUN: --iree-hip-target=gfx941 --iree-hip-target-features=+sramecc,-xnack %s | FileCheck %s --check-prefix=GFX941
@@ -21,6 +23,7 @@
// GFX942-SAME: max_workgroup_counts = [2147483647, 2147483647, 2147483647],
// MI300X: chip = <wgp_count = 304>>
// MI300A: chip = <wgp_count = 228>>
+// MI308X: chip = <wgp_count = 80>>
// GFX941: target = #iree_gpu.target<arch = "gfx941",
// GFX941-SAME: features = "+sramecc,-xnack"
diff --git a/compiler/src/iree/compiler/Codegen/Dialect/GPU/TargetUtils/KnownTargets.cpp b/compiler/src/iree/compiler/Codegen/Dialect/GPU/TargetUtils/KnownTargets.cpp
index a579573..c347e28 100644
--- a/compiler/src/iree/compiler/Codegen/Dialect/GPU/TargetUtils/KnownTargets.cpp
+++ b/compiler/src/iree/compiler/Codegen/Dialect/GPU/TargetUtils/KnownTargets.cpp
@@ -281,6 +281,7 @@
// https://www.amd.com/content/dam/amd/en/documents/instinct-tech-docs/white-papers/amd-cdna-3-white-paper.pdf
static const ChipDetails mi300xChip = {304};
static const ChipDetails mi300aChip = {228};
+ static const ChipDetails mi308xChip = {80};
// "AMD Instinct MI200 Series Accelerator Product Offerings" in Page 14 of
// https://www.amd.com/content/dam/amd/en/documents/instinct-business-docs/white-papers/amd-cdna2-white-paper.pdf
@@ -303,6 +304,7 @@
return llvm::StringSwitch<std::optional<TargetDetails>>(target.lower())
.Case("mi300x", TargetDetails{cdna3Wgp, &mi300xChip})
.Case("mi300a", TargetDetails{cdna3Wgp, &mi300aChip})
+ .Case("mi308x", TargetDetails{cdna3Wgp, &mi308xChip})
.Cases("cdna3", "gfx940", "gfx941", "gfx942",
TargetDetails{cdna3Wgp, nullptr})
.Case("mi250x", TargetDetails{cdna2Wgp, &mi250xChip})
@@ -338,7 +340,7 @@
return target;
return llvm::StringSwitch<StringRef>(target.lower())
- .Cases("mi300x", "mi300a", "gfx942")
+ .Cases("mi300a", "mi300x", "mi308x", "gfx942")
.Cases("mi250x", "mi250", "mi210", "cdna2", "gfx90a")
.Cases("mi100", "cdna1", "gfx908")
.Cases("rx7900xtx", "rx7900xt", "gfx1100")
diff --git a/docs/website/docs/guides/deployment-configurations/gpu-rocm.md b/docs/website/docs/guides/deployment-configurations/gpu-rocm.md
index 8d5d234..5408bc8 100644
--- a/docs/website/docs/guides/deployment-configurations/gpu-rocm.md
+++ b/docs/website/docs/guides/deployment-configurations/gpu-rocm.md
@@ -130,6 +130,7 @@
| AMD MI300A (early units) | `gfx941` | `cdna3`
| AMD MI300A | `gfx942` | `cdna3`
| AMD MI300X | `gfx942` | `cdna3`
+| AMD MI308X | `gfx942` | `cdna3`
| AMD RX7900XTX | `gfx1100` | `rdna3`
| AMD RX7900XT | `gfx1100` | `rdna3`
| AMD RX7800XT | `gfx1101` | `rdna3`