Vengineerの妄想(準備期間)

人生は短いけど、長いです。人生を楽しみましょう!

NVIDIA EGMってなんだ!

はじめに

いつものように、github を散策していたら、NVIDIAの open-gpu-kernel-modules の中に EGM なるものがあることを知りました。

EGM とは?

ここに、説明がありました。

#define ADDR_EGM        7         // Extended GPU Memory (EGM)

EGM == Extended GPU Memory

のようです。

ここにもう少し詳しい説明もありました。

        // memsysSetupCoherentCpuLink should be done only for the self hosted
        // configuration(SHH) where the coherent C2C link connects host CPU(TH500) and GPU
        // and not in the externally hosted(EHH) case where host CPU(say x86) is connected
        // to GPU through PCIe and C2C only connects the TH500 (for EGM memory) and GPU.
        // The gpuIsSelfHosted(pGpu) check here is to distinguish between the SHH
        // and EHH configuration as C2C link is up in both of these cases.

GH180 (Grace-Hopper Superchip)の構成で、TH500(Grace)についているメモリをGPU Memoryを使う時にそのメモリを EGM というようです。

このコードの下の方にあった下記のコメントから、

            // PDB_PROP_GPU_C2C_SYSMEM is already set in physical RM but not in
            // in Kernel-RM where it is actually consumed. setting PDB_PROP_GPU_C2C_SYSMEM
            // in Kernel-RM when the platform is self-hosted and the C2C links are up, which
            // indicate the C2C is connected to CPU and Physical-RM would have set up the HSHUB
            // to route sysmem through C2C.

C2C はどうやら HSHUB に接続しているっぽい。NVLINKと同じHSHUBに接続している。

おわりに

GH180(Grace-Hopper Superchip)、プロダクト名はGH200 では、HopperがGraceのメモリをアクセスする時は、EGMと言うんだね。