Coelacanth's Dream

Nova Lake の GPU コアアーキテクチャは Xe3

インターネットの一部では Linux Kernel へのパッチを根拠に Intel の次世代プロセッサ Nova Lake に搭載される GPU を、Panther LakeWildcat Lake と同様の Xe3 ではなく、データセンター向け GPU に採用される予定の Xe3P だとしているが、実際には Xe3 だと思われる。

ここでの新しい根拠は intel/cm-compiler の変更内容となる。

Nova Lake のサポートを追加するパッチにおいて Nova Lake の GMD ID (Graphics Media Display ID?, Intel GPU におけるハードウェア IP バージョン) は、nvl-ul/nvl-hx/nvl-s が 30.4.4、nvl-h/nvl-u が 30.5.4、リリース ID は xe3-lpg とされている。
その後に Xe3P、cri (Crescent Island?) のサポートを追加するパッチが公開されているが、GMD ID は 35.11.0 とされ、Nova Lake とはバージョンが大きく異なる。
また、Xe3P では XMX (Xe Matrix eXtensions) で実行される行列積和演算命令 DPAS (Dot Product and Accumulate Systolic) に FP8/FP4 やマイクロスケーリングフォーマット (MXFP4/MXFP8 等) 関連の命令が追加されているが、それらの命令を Nova Lake はサポートしていないとされている。

    --- a/clang/lib/Driver/ToolChains/Arch/GenXPlatforms.cpp
    +++ b/clang/lib/Driver/ToolChains/Arch/GenXPlatforms.cpp
    @@ -15,6 +15,7 @@ using clang::driver::tools::GenX::encodeGmdId;
     
     // clang-format off
     static const std::unordered_map<std::string, uint32_t> ReleaseId = {
    +  {"xe3-lpg", encodeGmdId(30, 5, 4)},
       {"xe2-lpg", encodeGmdId(20, 4, 4)},
       {"xe2-hpg", encodeGmdId(20, 2, 0)},
       {"xe-lpgplus", encodeGmdId(12, 74, 4)},
    @@ -30,6 +31,11 @@ static const std::unordered_map<std::string, uint32_t> ReleaseId = {
     };
     
     static const std::unordered_map<std::string, uint32_t> DeviceId = {
    +  {"nvl-u", encodeGmdId(30, 5, 4)},
    +  {"nvl-h", encodeGmdId(30, 5, 4)},
    +  {"nvl-s", encodeGmdId(30, 4, 4)},
    +  {"nvl-hx", encodeGmdId(30, 4, 4)},
    +  {"nvl-ul", encodeGmdId(30, 4, 4)},

Nova Lake の GPU 部において Xe3、Panther Lake や Wildcat Lake よりも進んだ部分となるのはあくまでもディスプレイエンジン、メディアエンジンだと思われる。
元々、Linux Kernel の Intel xe ドライバーに向けた Nova Lake 関連のパッチも、ディスプレイエンジンである Xe3p_LPD、メディアエンジンである Xe3p_LPM が Nova Lake-S に搭載される、というものであり、GPU コア部のアーキテクチャまでは言及していなかったように思う。