Coelacanth's Dream

GPU が Xe-LPG Plus となり DPAS 命令をサポートする Intel Arrow Lake

Intel® Graphics Compiler (IGC) にて Arrow Lake のサポートに向けたパッチ、コミットが公開され始めた。
その中で、Arrow Lake GPU は Meteor Lake GPU の Xe-LPG アーキテクチャ をベースに、いくつかの変更を加えた Xe-LPG Plus アーキテクチャ を採用することが示されている。

     #define GFX_GMD_ARCH_12_RELEASE_XE_LP_MD                 (70)
     #define GFX_GMD_ARCH_12_RELEASE_XE_LP_LG                 (71)
    +#define GFX_GMD_ARCH_12_RELEASE_XE_LPG_PLUS_1274         (74)
     
     #define GFX_GET_GMD_RELEASE_VERSION_RENDER(p)             ((p).sRenderBlockID.GmdID.GMDRelease)
     #define GFX_GET_GMD_RELEASE_VERSION_DISPLAY(p)            ((p).sDisplayBlockID.GmdID.GMDRelease)
    @@ -719,6 +720,9 @@ typedef enum __NATIVEGTTYPE
     #define DEV_ID_56C1                             0x56C1
     #define DEV_ID_56CF                             0x56CF
     
    +// ARL
    +#define DEV_ID_7D67                             0x7D67
    +
     #define GFX_IS_DG2_G11_CONFIG(d) ( ( d == DEV_ID_56A5 )             ||   \
                                      ( d == DEV_ID_56A6 )             ||   \
                                      ( d == DEV_ID_5693 )             ||   \
    @@ -752,4 +756,6 @@ typedef enum __NATIVEGTTYPE
                                           ( d == DEV_ID_56B2 )                              ||   \
                                           ( d == DEV_ID_56B3 ))
     
    +#define GFX_IS_ARL_S(d)  ( ( d == DEV_ID_7D67 ) )
    +

Xe-LPG Plus

IGC へのパッチから、Arrow Lake GPU の EU 構成は Meteor Lake GPU と基本同じであり、機能面でも Meteor Lake GPU がサポートする機能はカバーしている。その上でいくつかの機能追加、改良がされているように見える。

     // 1. Support both sources as ACC for FP MUL
     // 2. Support Src2 as ACC for FP MAD
     bool relaxedACCRestrictions3() const {
    -  return false;
    +  return ((getPlatform() == Xe_ARL || getPlatform() >= Xe2) &&
    +          !getOption(vISA_disableSrc2AccSub));
     }
    +bool has64bundleSize2GRFPerBank() const { return getPlatform() == Xe_ARL; }

そして、Arrow Lake GPU は Meteor Lake GPU と異なり、XMX (Xe Matrix eXtension) ユニットを搭載し、行列積和演算命令、DPAS (Dot Product Accumulate Systolic) をサポートすると思われる。
hasDPAS() 内の判定に Xe_ARL を除外するような変更はされておらず、また Xe_ARL における DPAS 命令のレイテンシ情報が追加されているからだ。
DPAS 命令、XMX ユニットは Xe-HPG アーキテクチャ の場合、FP16/BF16/INT8/INT4/INT2 のデータフォーマットに対応しており、Arrow Lake GPU でも同様だろう。

Meteor Lake GPU が XMX ユニットを搭載しなかったことについては、ダイサイズの削減や、XeSS (Xe Super Sampling) は XMX ユニットが無くても実行可能であることが理由として考えられる。
しかし、Arrow Lake GPU では XMX ユニットを搭載する判断をしたようだ。
Arrow Lake の Graphics Tile の製造プロセスはまだ不明だが、製造プロセスの変更等により搭載してもダイサイズがそれほど問題にならなくなったのか、XeSS を用いたゲームにおける性能を重視したのかもしれない。

    bool hasDPAS() const {
      return getPlatform() >= Xe_XeHPSDV && getPlatform() != Xe_MTL;
    }
    @@ -288,10 +290,36 @@ LatencyTableXe<PlatformGen::XE>::getDPASLatency(uint8_t repeatCount) const {
         default:
           return 32;
         }
    +  case Xe_ARL:
    +    switch (repeatCount) {
    +    case 1:
    +      return 21;
    +    case 2:
    +      return 22;
    +    case 8: {
    +      if (m_builder.has4DeepSystolic()) {
    +        return 32;
    +      }
    +      return 46;
    +    }
    +    default:
    +      return 22; // Conservative cycle
    +    }

参考リンク