Cuda(arch linux)용 EGPU가 포함된 다중 NVIDIA RTX GPU

Cuda(arch linux)용 EGPU가 포함된 다중 NVIDIA RTX GPU

나는아치리눅스, 노트북에는 2개의 GPU가 있습니다(Thinkpad P14s 4세대) + Cool Master EG200 GPU 케이스를 사용하여 Thunderbolt 4를 통해 연결된 새로운 RTX 3090:

❯ lspci -k | grep -A 2 -E "(VGA|3D)"
00:02.0 VGA compatible controller: Intel Corporation Raptor Lake-P [Iris Xe Graphics] (rev 04)
        Subsystem: Lenovo Raptor Lake-P [Iris Xe Graphics]
        Kernel driver in use: i915
--
03:00.0 3D controller: NVIDIA Corporation GA107GLM [RTX A500 Laptop GPU] (rev a1)
        Subsystem: Lenovo GA107GLM [RTX A500 Laptop GPU]
        Kernel driver in use: nvidia
--
22:00.0 VGA compatible controller: NVIDIA Corporation GA102 [GeForce RTX 3090] (rev a1)
        Subsystem: Gigabyte Technology Co., Ltd GA102 [GeForce RTX 3090]
        Kernel driver in use: nvidia

RTX 3090에 대한 Thunderbolt 연결은 다음과 같이 인증됩니다.

❯ sudo boltctl info c4010000-0070-740e-0362-00168691c921
[sudo] password for aemonge: 
 ● Cooler Master Technology,Inc MasterCase EG200
   ├─ type:          peripheral
   ├─ name:          MasterCase EG200
   ├─ vendor:        Cooler Master Technology,Inc
   ├─ uuid:          c4010000-0070-740e-0362-00168691c921
   ├─ dbus path:     /org/freedesktop/bolt/devices/c4010000_0070_740e_0362_00168691c921
   ├─ generation:    Thunderbolt 3
   ├─ status:        authorized
   │  ├─ domain:     69078780-60ab-fe2a-ffff-ffffffffffff
   │  ├─ parent:     69078780-60ab-fe2a-ffff-ffffffffffff
   │  ├─ syspath:    /sys/devices/pci0000:00/0000:00:0d.2/domain0/0-0/0-1
   │  ├─ rx speed:   40 Gb/s = 2 lanes * 20 Gb/s
   │  ├─ tx speed:   40 Gb/s = 2 lanes * 20 Gb/s
   │  └─ authflags:  boot
   ├─ authorized:    Wed 24 Jan 2024 06:49:10 AM UTC
   ├─ connected:     Wed 24 Jan 2024 06:49:10 AM UTC
   └─ stored:        Tue 23 Jan 2024 03:50:50 PM UTC
      ├─ policy:     iommu
      └─ key:        no

저는 그래픽이나 xorg에 로드된 RTX3090, 그래픽 인터페이스에 전혀 관심이 없습니다. 나는 단지 그것이 컴퓨팅 전용 워크로드로 사용되기를 원하며 이 아치 위키를 완전히 따랐습니다.https://wiki.archlinux.org/title/External_GPU

하지만 이 경우를 고려하면 nvidia-smiGPU를 찾을 수 없습니다.

❯ nvidia-smi -L
GPU 0: NVIDIA RTX A500 Laptop GPU (UUID: GPU-762410c2-1c0d-ef4a-89ac-91afd926381b)

간단한 Python 스크립트도 마찬가지입니다.cuda-devices.py:

❯ cat cuda-devics.py
import torch

# Check if CUDA is available
if torch.cuda.is_available():
    print("CUDA is available.")
    # Get the number of CUDA devices
    num_devices = torch.cuda.device_count()
    print(f"Number of CUDA devices: {num_devices}")
    # Get the name of each CUDA device
    for i in range(num_devices):
        print(f"Device {i} name: {torch.cuda.get_device_name(i)}")
else:
    print("CUDA is not available.")
❯ python cuda-devics.py
CUDA is available.
Number of CUDA devices: 1
Device 0 name: NVIDIA RTX A500 Laptop GPU

❯ CUDA_VISIBLE_DEVICES="0,1,2" python cuda-devics.py

CUDA is available.
Number of CUDA devices: 1
Device 0 name: NVIDIA RTX A500 Laptop GPU

나는 또한이 세 가지 저장소를 시도했습니다https://github.com/ewagner12/all-ways-egpu, https://github.com/karli-sjoberg/gswitch그리고https://github.com/hertg/egpu-switcher. 내부 GPU가 비활성화된 A500 및 Iris Xe이지만 깜박입니다(검은색 화면).


해결됨

해결됨https://forums.developer.nvidia.com/t/multiple-nvidia-rtx-gpu-for-cuda-arch-linux-with-egpu/280031/7NVIDIA 개발자 포럼, 저자:

유니버설 최우수 기여자 5시간

BIOS 업데이트를 확인하세요. 사용할 수 없는 경우 소프트웨어 및 업데이트를 사용하여 "-open" 드라이버 버전으로 전환하고 커널 매개변수 nvidia.NVreg_OpenRmEnableUnsupportedGpus=1을 설정합니다.

이는 다음을 의미합니다.

sudo pacman -S nvidia-open

/boot/loader/entries/*_linux.conf

# Created by: archinstall
# Created on: ***********
title   Arch Linux (linux)
linux   /vmlinuz-linux
initrd  /intel-ucode.img
initrd  /initramfs-linux.img
options root=PARTUUID=####-####-####### zswap.enabled=0 rw nvidia.NVreg_OpenRmEnableUnsupportedGpus=1 rootfstype=ext4

관련 정보