Coelacanth's Dream

計算ユニットが SIMD16 になる Intel Xe2 アーキテクチャ

Mesa3D, Intel Graphics Compiler (IGC), oneDNN では Xe2 アーキテクチャLunar Lake のサポートが現在進められており、Xe2 アーキテクチャ が詳細が徐々に公開されてきている。

SIMD16

Xe2 アーキテクチャ では Xe-HPC と同様に EU (Xe Vector Engine) 内の計算ユニットが SIMD16 となる。

Xe-LP, Xe-HP, Xe-HPG, Xe-LPG は 2基の EU で Thread Control を共有し、それらをペアとすることで SIMD16 を実行可能としていた。
コンパイラ内では EU 2基をペアとすることを EU Fusion または FusedEU、ペアとなる EU 8基 (EU 16基) を持つ Subslice を Dual Subslice と呼んでいた。
それが Xe-HPC の EU と Subslice ではその構成を引き継がず、EU 内の計算ユニットを SIMD16 とし、Subslice あたりの EU は 8基の構成を採った。
IGC 内の hasFusedEU の条件に Xe2 がないため、Xe2Xe-HPC と同様に EU 2基をペアとする機能を持たない構成と思われる。

    bool hasFusedEU() const {
      return (getPlatform() == GENX_TGLLP || getPlatform() == Xe_XeHPSDV ||
              getPlatform() == Xe_DG2 || getPlatform() == Xe_MTL ||
              getPlatform() == Xe_ARL);
    }

Xe2 アーキテクチャ は EU 内の実行ポートも Xe-HPC にかなり近いものになっていると思われ、開発にあたって Xe-HPG ではなく Xe-HPC をベースにしたと考えられる。1

        int hw_simd() const {
            switch (hw) {
                case ngen::HW::Gen9:
                case ngen::HW::Gen10:
                case ngen::HW::Gen11:
                case ngen::HW::XeLP:
                case ngen::HW::XeHP:
                case ngen::HW::XeHPG: return 8;
                case ngen::HW::Xe2:
                case ngen::HW::XeHPC: return 16;
                default: ir_error_not_expected();
            }
            return -1;
        }
    // EU native execution size for 32-bit types
    G4_ExecSize getNativeExecSize() const {
      return getPlatform() >= Xe_PVC ? g4::SIMD16 : g4::SIMD8;
    }

前述したように Xe-LP, Xe-HP, Xe-HPG, Xe-LPG はペアとなる EU 2基で SIMD16 が実行可能であることから、Xe2 での SIMD16 化による性能の影響は自分では測れない。
Xe2 ではレジスタエントリ数も従来の倍となる 256エントリとなるため、SIMD幅に対するレジスタファイル数が減るということもない。

Xe-LPG EU における FP32 演算性能に対する FP64 演算性能は 1/16 とされている。2
EU (FP+INT/EM/FP64) 2基でその性能であったため、ペア構成をやめて SIMD16 化した Xe2 では、FP64 演算をサポートしつつ、さらに FP64 演算性能を減らすことが可能になるとは思われる。

ちなみに最近の GPU アーキテクチャにおける FP64 演算性能は以下のようになっている。

FP64 peak perf per FP32 peak perf
AMD RDNA 2 1/16
AMD RDNA 3 1/323
AMD CDNA 2 1 (Vector)
Intel Xe-HPG N/A
Intel Xe-LPG 1/16
Intel Xe-HPC 14
NVIDIA AD102 1/645
NVIDIA H100/H200 1/2 (Vector)6

参考リンク