
GPU-unlock 1.0.0은 Linux에서 NVIDIA 3000 계열의 GA102·GA103·GA104·GA106 카드에 적용해 FP/BF16 명령 발행률을 높이는 커널 모듈이다. 제작자는 FP/BF16 FMA를 FP32 연산으로 처리할 때 명령 발행 속도가 두 배가 된다고 설명한다. 다만 모듈은 기본적으로 아무 카드도 해제하지 않으며, 부팅 시 커널 명령줄에서 대상 카드를 지정해야 한다.
이 모듈은 CMP unlocker의 V67/PLM 기법과 UEFI 방식의 드라이버 로드 전 실행을 결합한다. NVIDIA 드라이버가 카드를 연결하기 전에 해제를 수행하고, 속도 선택기와 FLR을 처리한다. UEFI 애플리케이션도, 수정된 NVIDIA 드라이버도 아니므로 NVIDIA 드라이버가 업데이트될 때마다 직접 패치할 필요가 없다고 프로젝트는 설명한다.
제작자가 제시한 성능 수치는 RTX 3090 Ti에서 450W로 실행한 8192³ 밀집 GEMM의 결과다. FP32 누적을 사용하고, 다섯 차례 측정값의 중앙값을 비교했다.
| 입력 | 적용 전 | 적용 후 |
|---|---|---|
| FP16 | 87.46 TFLOPS | 118.39 TFLOPS |
| BF16 | 87.50 TFLOPS | 157.41 TFLOPS |
| TF32 | 42.58 TFLOPS | 82.61 TFLOPS |
설치하려면 저장소를 내려받아 패키지를 설치한다.
git clone https://github.com/Zagitta/gpu-unlock
cd gpu-unlock
make install
그다음 커널 명령줄에 gpu_unlock.targets=all을 추가한다. 배포판에 따라 GRUB 설정을 고친 뒤 sudo update-grub 또는 sudo grub-mkconfig -o /boot/grub/grub.cfg를 실행하거나, Fedora/RHEL에서는 sudo grubby --update-kernel=ALL --args="gpu_unlock.targets=all"을 실행한다. systemd-boot는 부팅 항목의 options 줄에, UKI 등 생성형 부팅 항목은 /etc/kernel/cmdline에 옵션을 넣고 부팅 이미지를 다시 생성한다.
all 대신 gpu_unlock.targets=0000:21:00.0처럼 전체 PCI 주소를 지정해 대상 카드를 제한할 수도 있다. 주소는 lspci -D가 표시하는 형식이며 GPU 번호나 디스플레이 역할과 무관하다. 지원되지 않는 카드나 이미 다른 드라이버에 연결된 카드는 건너뛴다. 모듈은 initramfs에서 NVIDIA 드라이버보다 먼저 실행되며, 부팅 후 수동으로 불러와도 이미 NVIDIA 드라이버에 연결된 카드에는 적용되지 않는다.
디스플레이 카드도 대상이 될 수 있지만, 재설정하는 동안 화면이 꺼졌다가 nvidia-drm이 이어받으면 다시 표시된다. 펌웨어가 멈추지 않으면 모듈은 이를 기록하고, 다음 전원 차단 때까지 펌웨어가 사용할 수 있는 DMA 버퍼를 유지하므로 다시 시도하기 전에 전원을 꺼야 한다.
RAM 절전에서 복귀할 때는 기본 설정으로 부팅 때 해제한 카드를 다시 처리하며, 복귀에 약 1초가 추가된다. 이 동작은 gpu_unlock.resume=0을 커널 명령줄에 넣거나 /sys/module/gpu_unlock/parameters/resume에 0을 기록해 끌 수 있다. 최대 절전은 지원 범위에 포함되지 않는다. 결과는 journalctl -k -b | grep gpu_unlock과 lspci -nnk -s 0000:21:00.0으로 확인할 수 있다. 해제를 중단하려면 커널 명령줄에서 gpu_unlock.targets=를 제거한다.
부록: 원문 예시
gpu_unlock.targets=all # every unbound GA102/GA103/GA104/GA106 card gpu_unlock.targets=0000:21:00.0 # only these cards gpu_unlock.targets=0000:21:00.0,0000:22:00.0 # comma-separated
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요