Vengineerの戯言

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

NVIDIAがGPUのKernel Modulesを公開したので、ソースコード解析をしてみる(その8)

はじめに

今年5月22日の続き

vengineer.hatenablog.com

ARM64対応

NVIDIAGPUは、ARM64対応されています。ARM64対応が分かるコードは、ここ です。一部、以下に引用します。

    switch(AARCH64_VENDOR_PART_NUMBER(impl, part))
    {
        case AARCH64_VENDOR_PART(NVIDIA, DENVER_1):
            pSys->cpuInfo.type = NV0000_CTRL_SYSTEM_CPU_TYPE_NV_DENVER_1_0;
            break;
        case AARCH64_VENDOR_PART(NVIDIA, DENVER_2):
            pSys->cpuInfo.type = NV0000_CTRL_SYSTEM_CPU_TYPE_NV_DENVER_2_0;
            break;

        case AARCH64_VENDOR_PART(NVIDIA, CARMEL):
            pSys->cpuInfo.type = NV0000_CTRL_SYSTEM_CPU_TYPE_ARMV8A_GENERIC;
            break;
        /*
         * Applied Micro is now Ampere computing, and the Ampere eMag
         * vendor/part ids are the same as AMCC XGENE
         */
        case AARCH64_VENDOR_PART(AMCC, XGENE):
        case AARCH64_VENDOR_PART(ARM, CORTEX_A76):
        case AARCH64_VENDOR_PART(MARVELL, THUNDER_X2):
        case AARCH64_VENDOR_PART(HUAWEI, KUNPENG_920):
        case AARCH64_VENDOR_PART(ARM, BLUEFIELD):
        // The Neoverse N1 is the same as Gravitron
        case AARCH64_VENDOR_PART(ARM, GRAVITRON2):
        case AARCH64_VENDOR_PART(FUJITSU, A64FX):
        case AARCH64_VENDOR_PART(PHYTIUM, FT2000):
        case AARCH64_VENDOR_PART(PHYTIUM, S2500):
        case AARCH64_VENDOR_PART(AMPERE, ALTRA):
        case AARCH64_VENDOR_PART(MARVELL, OCTEON_CN96XX):
        case AARCH64_VENDOR_PART(MARVELL, OCTEON_CN98XX):
        case AARCH64_VENDOR_PART(ARM, CORTEX_A57):
            pSys->cpuInfo.type = NV0000_CTRL_SYSTEM_CPU_TYPE_ARMV8A_GENERIC;
            break;
        default:
            pSys->cpuInfo.type = NV0000_CTRL_SYSTEM_CPU_TYPE_ARMV8A_GENERIC;
            portDbgPrintf(
                "NVRM: CPUID: unknown implementer/part 0x%x/0x%x.\n", impl, part);
            portDbgPrintf(
                "The NVIDIA GPU driver for AArch64 has not been qualified on this CPU\n"
                "and therefore it is not recommended or intended for use in any production\n"
                "environment.\n");
            break;
    }
    DecodeAarch64Cache(pSys);
  • Marvell
  • Hauwei
  • Ampere Computing (AMCC)
  • NVIDIA : Bluefield
  • AWS : Gravitron2 (Graviron)
  • Fujitsu : A64FX
  • Phytium

などがサポートされています。Phytiumは中国の会社です。A64FXもサポートしているんですね。PCIe Gen4 のポートに付けちゃうんですかね。

おわりに

A64FXにNVIDIAGPGPUでCuda。。ちょっと面白そうですね。