nlzy/turing-unlock
Unlock full speed FP16 tensor core of NVIDIA Turing GPUs
이것은 무엇인가?
NVIDIA TU102 GPU(RTX 2080 Ti의 칩)의 전체 속도 FP16 텐서 코어를 잠금 해제하는 Linux 커널 모듈입니다.
무엇을 하는가?
기본적으로 GPU는 텐서 코어를 감소된 속도로 실행합니다. 이 모듈은 두 개의 하드웨어 속도 선택기(SS0 및 SS1)를 특정 값으로 작성하고 펌웨어 뮤텍스(ACR 뮤텍스 3)도 해제합니다. 그 후 GPU는 정상 부팅 시퀀스를 거치지만 이제 텐서 코어는 최대 정격 속도로 실행될 수 있습니다.
어떻게 작동하는가?
모듈은 저수준 GPU 레지스터를 직접 조작합니다. SS0를 0x88888888로, SS1을 0x8로 설정한 다음 펌웨어 잠금을 해제합니다. 이는 GPU 부팅 프로세스 중 NVIDIA 드라이버가 로드되기 전에 수행됩니다. 모듈은 TU102 칩(RTX 2080 Ti 등)에서만 작동하며 Dell RTX 2080 Ti 22GB에서 NVIDIA 드라이버 575.51.03(독점 및 오픈 드라이버 모두)으로만 테스트되었습니다.
설치
프로젝트 디렉터리에서 make install을 실행합니다. 이는 Linux 배포판을 자동으로 감지하고 적절한 패키지를 빌드/설치합니다. 특정 패키지 유형을 강제할 수도 있습니다:
make install-arch는 Arch용make install-deb는 Debian/Ubuntu용make install-rpm은 Fedora/RHEL용
설치 없이 패키지만 빌드하려면 make arch, make deb 또는 make rpm을 사용합니다. 빌드는 두 개의 NVIDIA 펌웨어 파일(고정 버전 및 SHA-256 체크 포함)을 다운로드하여 ~/.cache/turing-unlock/inputs에 캐시합니다. make inputs로 미리 다운로드하거나 INPUTS=로 캐시 디렉터리를 변경할 수 있습니다.
잠금 해제 활성화
모듈은 기본적으로 아무것도 하지 않습니다. 어떤 GPU를 잠금 해제할지 알려주는 커널 명령줄 옵션을 추가해야 합니다. turing_unlock.targets=all을 사용하여 모든 호환 카드를 잠금 해제하거나 PCI 주소를 지정합니다(예: turing_unlock.targets=0000:21:00.0). 여러 주소를 쉼표로 구분하여 나열할 수 있습니다. 전체 PCI 주소는 lspci -D로 얻습니다.
부트로더 구성(GRUB, systemd-boot, UKI 등)에 옵션을 추가하고 재부팅합니다. 부팅 후 journalctl -k -b | grep turing_unlock으로 커널 로그를 확인하여 작동했는지 확인합니다.
부팅 순서
설치 패키지는 모듈과 펌웨어를 initramfs에 배치하여 NVIDIA 드라이버보다 먼저 로드되도록 합니다. 모듈은 이미 드라이버가 있거나 전원이 꺼진 카드를 건너뜁니다. 또한 여러 TU102 카드가 있는 경우를 처리합니다(한 번에 하나씩 실행). 필요한 경우 NVIDIA 드라이버가 바인딩되기 전에 PCIe 리셋(FLR)을 수행합니다. 성공 시 카드는 리셋되지 않습니다. 실패 시 리셋이 발생하여 디스플레이 드라이버가 인계할 때까지 화면이 깜깜해질 수 있습니다.
성능
README에는 250W RTX 2080 Ti에서 FP16 행렬 곱셈(FP32 누적 포함)의 벤치마크 결과가 포함되어 있습니다. 수치는 잠금 해제 후 큰 속도 향상을 보여주며, 때로는 NVIDIA가 주장하는 이론적 피크(56.9 TFLOPS)를 초과합니다. 예를 들어, 행렬 크기 2048에서 성능은 55.7 TFLOPS(피크의 97.9%)에서 91.4 TFLOPS(피크의 160.6%)로 향상되었습니다.
위험 및 경고
README는 명시적으로 경고합니다: "텐서 코어는 매우 높은 전력을 소비합니다. 전체 속도로 잠금 해제하면 하드웨어가 손상될 수 있습니다. 사용에 따른 위험은 본인이 감수하십시오." 또한 GPU 펌웨어가 제대로 중지되지 않으면 모듈은 오류를 기록하고 다음 전원 꺼짐까지 DMA 버퍼를 유지합니다. 다시 시도하기 전에 시스템 전원을 꺼야 합니다.
라이선스
모듈 및 패키징 코드는 GPL-2.0-only입니다. NVIDIA 펌웨어 파일은 자체 라이선스를 유지합니다(firmware/NOTICE.md 및 licenses/ 참조).
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트