Coelacanth's Dream

DPAS 命令をサポートしない Intel Xe-HPCVG (PVC-VG)

先日 Intel がオープンソースで公開、開発している VC IntrinsicsIntel(R) C for Metal CompilerXe-HPCVG (PVC-VG) のサポートが追加された。
VC Intrinsics は Intel GPU 向けの LLVM IR 組み込み関数を使用するためのライブラリ、Intel(R) C for Metal Compiler (cm-compiler) は GPU カーネルのプログラミング言語、C for Metal の Intel GPU 向けコンパイラとなる。

Xe-HPCVG (PVC-VG) は通常の Xe-HPC と異なり、行列演算用の DPAS (Dot Product Accumulate Systolic) 命令をサポートしないことがパッチから読み取れる。

         "dpas" : { "result" : "anyvector",
                    "arguments" : [0,"anyvector","anyvector","int"],
    -               "attributes" : "NoMem"
    +               "attributes" : "NoMem",
    +               "platforms" : [ "XeHP+", "~XeLPG", "~XeHPCVG" ],
                  },

上記の ~XeHPCVG は、DPAS 命令をサポートするプラットフォームを示す XeHP+ のグループから XeHPCVG を除外するという意味になっている。

    #------------ Supported platforms ----------------------
    # Every intrinsic has optinal field "platforms" : "CPU"
    # CPU can be any from "platforms" in Intrinsics.py or "ALL"
    # when field is absent - ALL by default
    # additional commands :
    # "CPU" = "-Gen9" - unsupported since Gen9
    # "CPU" = "Gen11+" - supported from Gen11
    # "CPU" = "~XeLP" - unsupported on XeLP
    # CPU can be list:
    # ["XeLP+", "Gen9"] - supported on Gen9 and all started from XeLP
    # ["ALL", "~XeLP"] - supported everyvere except XeLP

Intel(R) C for Metal Compiler へのパッチでも同様のことを読み取ることができる。
また Xe-HPCVG (PVC-VG) の PCI DeviceID は 0x0BD4 とされており、この ID の Intel GPU 製品はまだ発表されていない。

    +  { encodeGmdId(12, 61, 7),
    +    { /*.HasFP64 =*/ true,
    +      /*.HasBFloat16 =*/ true,
    +      /*.HasSLMCasInt64 =*/ true,
    +      /*.HasDpas =*/ false,
    +      /*.HasDpasw =*/ false,
    +      /*.HasDpasFp16 =*/ false,
    +      /*.HasDpasBf16 =*/ false,
    +      /*.HasDpasTf32 =*/ false,
    +      /*.GrfWidth =*/ 512,
    +      /*.SupportedGrfNums =*/ {128,256},
    +      /*.MaxSLMSize =*/ 128, }, },
     static const std::unordered_map<std::string, uint32_t> ReleaseId = {
       {"xe-lpg-lg", encodeGmdId(12, 71, 4)},
       {"xe-lpg-md", encodeGmdId(12, 70, 4)},
    +  {"xe-hpc-vg", encodeGmdId(12, 61, 7)},
       {"xe-hpc", encodeGmdId(12, 60, 7)},
       {"xe-hpg", encodeGmdId(12, 57, 0)},
       {"xe-hp", encodeGmdId(12, 50, 4)},
       {"0x7d40", encodeGmdId(12, 70, 4)},
       {"0x7d45", encodeGmdId(12, 70, 4)},
       {"0x7d60", encodeGmdId(12, 70, 4)},
    +  {"0x0bd4", encodeGmdId(12, 61, 7)},

現状 Intel から公開されているのは Xe-HPCVG (PVC-VG)DPAS 命令をサポートしないということだけであり、既存の Xe-HPC (Ponte Vechhio) から DPAS 命令を無効化したプラットフォームなのか、
それとも XMX (Xe Matrix eXtension) ユニットを持たないダイを再設計し、それを使用したプラットフォームなのかは不明。
DPAS 命令をサポートせずとも、Xe-HPCVG (PVC-VG) には FP64 演算性能やメモリ帯域といった特徴が Xe-HPC から残るとは思うが、それが製品として既存の Intel Deta Center GPU Max Series や AMD と NVIDIA のデータセンター向け GPU と比較してどれだけ有効かは疑問である。