AMD용 CUDA – ZLUDA와 ROCm/HIP를 통해 AMD GPU에서 CUDA Windows 앱 실행하기

TL;DR

CUDA‑for‑AMD‑Windows는 ZLUDA와 ROCm/HIP 스택을 통해 CUDA 대상 Windows 프로그램이 AMD GPU에서 실행되도록 CUDA 호출을 변환함; 참조 구현은 Radeon RX 9060 XT (gfx1200)에서 검증되었으며, cuBLAS, cuBLASLt, cuSPARSE 및 cuFFT와 같은 핵심 라이브러리를 지원함.


프로젝트가 제공하는 내용

  • CUDA 드라이버 및 라이브러리 호출을 충족시키기 위해 ZLUDA → ROCm/HIP를 연결하는 재현 가능한 Windows 환경.
  • AMD GPU를 감지하고 드라이버/HIP SDK 버전을 검증하며 공식 ZLUDA Windows 빌드를 다운로드하고, 선택적으로 LibTorch 2.3.0+cu118를 다운로드하는 자동 설치 프로그램 (install.ps1).
  • 라이브러리 커버리지 확인 및 GPU 세부 정보를 보고하는 런타임 체크 스크립트 (cuda_check.exe, doctor.ps1, gpu‑scan.ps1).
  • AMD GPU에서 65,536 스텝을 완료한 2,216,347개 파라미터의 네트워크를 갖춘 전체 PPO 학습 실행을 보여주는 문서화된 검증 워크플로우.

검증된 하드웨어 및 소프트웨어 스택

구성 요소 버전/세부 정보
AMD GPU Radeon RX 9060 XT (gfx1200, RDNA4) – 공식적으로 검증된 유일한 모델
AMD HIP SDK 6.4 (Windows)
ZLUDA v6‑preview.69 (공식 릴리스)
LibTorch 2.3.0 + cu118 (약 2.66 GB)
CUDA 라이브러리 nvcuda, cuBLAS, cuBLASLt, cuSPARSE, cuFFT – 모두 cuda_check 통과
cuDNN 안정적인 Windows HIP SDK에서 사용 불가능

이 저장소는 다른 AMD GPU를 검증되지 않은 후보로 명시하며, 성공 여부에 관계없이 GPU 호환성 이슈를 제출할 것을 사용자에게 권장함.

변환 계층의 작동 방식

CUDA‑대상 Windows 앱
        │
      ZLUDA (PTX/JIT → HIP)
        │
  cuBLAS / cuSPARSE / cuFFT
        │
  rocBLAS / hipBLASLt / rocSPARSE
        │
      AMD GPU

ZLUDA는 CUDA 드라이버 호출을 가로채고, PTX를 JIT 컴파일하여 HIP으로 변환한 후 해당 ROCm 라이브러리에 작업을 전달함.

설치 단계 (Windows)

  1. AMD 사전 요구 사항 설치 – 최신 AMD GPU 드라이버 및 AMD HIP SDK for Windows (HIP 라이브러리 포함). 참조는 HIP SDK 6.4를 사용함; 최신 릴리스는 작동할 수 있지만 검증되지 않음.
  2. 저장소 복제 및 설치 프로그램 실행:
    git clone https://github.com/Speedstu/CUDA-for-AMD-Windows.git
    cd CUDA-for-AMD-Windows
    powershell -ExecutionPolicy Bypass -File .\scripts\install.ps1
    
    설치 프로그램은 GPU를 감지하고 드라이버/HIP 버전을 검증하며 ZLUDA와 LibTorch를 다운로드하고 SHA‑256 해시를 확인하고 런타임 구성 파일을 생성한 후 cuda_check.exe를 실행함.
  3. 선택 사항 – LibTorch 다운로드를 건너뛰려면 -SkipLibTorch를 사용함. 변환 계층만 필요할 경우에 적합함.

CUDA 대상 프로그램 실행

# 필요한 DLL을 자동으로 스테이징하고 실행
.
scripts\run-zluda.ps1 -Program C:\path\to\app.exe

# 또는 실행 없이 런타임만 스테이징
.
scripts\stage-runtime.ps1 -TargetDir C:\path\to\your-app

스크립트는 실행 파일 옆에 ZLUDA 호환성 DLL을 배치하고 해당 세션 동안만 HIP/ROCm 런타임 경로를 설정함.

환경 진단

.
scripts\doctor.ps1
.
scripts\gpu-scan.ps1
.
scripts\test-runtime.ps1

gpu-scan.ps1은 GPU 모델, gfx 아키텍처, 드라이버 버전, HIP SDK 세부 정보를 포함한 JSON 보고서를 출력함. 예를 들어:

AMD Radeon RX 9060 XT -> gfx1200 -> RDNA4 -> validated-reference

검증된 설정에서의 런타임 커버리지

CUDA 대상 구성 요소 상태
CUDA 드라이버 (nvcuda)
cuBLAS ✅ (rocBLAS를 통해)
cuBLASLt ✅ (hipBLASLt를 통해)
cuSPARSE ✅ (rocSPARSE를 통해)
cuFFT
cuDNN ⚠️ 사용 불가능 (안정적인 HIP SDK에 MIOpen 부족)

cuDNN 부재로 인해 컨볼루션 중심 워크로드는 더 새로운/나이트리 힙 스택 또는 사용자 정의 오버레이가 필요할 수 있음.

성능 스냅샷

참조 PPO 워크로드에서 통제된 A/B 벤치마크(2026‑09‑13) 결과:

  • 중앙값 전체 스텝/초(SPS): 업스트림 ZLUDA 경로는 13,278, 역사적 커스텀 오버레이는 12,876.
  • 상대적 지연: 커스텀 오버레이는 약 3 % 느림. 따라서 업스트림 경로가 기본 추천됨.

이전에 튜닝된 실행(다른 학습 구성)은 70k–109k SPS를 기록했으며, docs/BENCHMARKS.md에 문서화됨.

선택적 역사적 커스텀 오버레이

이 저장소에는 역사적 커스텀 cuBLAS/cuBLASLt/HIP 오버레이가 포함되어 있으나, 검증된 경로에 필수적이지 않음. 복구된 DLL 해시는 manifests/recovered-artifacts.sha256에 저장됨. 오버레이는 참고용으로 제공되며, 업스트림 ZLUDA 빌드가 PPO 벤치마크에서 더 뛰어남.

호환성 또는 버그 보고

  1. 진단 스크립트(gpu‑scan.ps1, test-runtime.ps1)를 실행함.
  2. 제공된 템플릿을 사용하여 GPU 호환성 보고서 이슈를 열고 JSON 출력 및 오류 로그를 첨부함.

프로젝트 유지보수자는 성공 여부에 관계없이 보고를 장려하여 호환성 매트릭스를 확장함.

저장소 구조 (개요)

scripts/          # 설치, 진단, 스테이징, 런처
manifests/        # 고정된 버전, 해시, GPU 메타데이터
docs/             # 검증, 벤치마크, 문제 해결
examples/         # 참조 통합 스크립트 조각
.runtime/         # 생성된 종속성 및 보고서 (git-ignored)
local-artifacts/  # 아카이브 파일 (git-ignored)

주의해야 할 제한 사항

  • GPU 지원: RX 9060 XT (gfx1200)만 공식적으로 검증됨.
  • CUDA 완전성: ZLUDA는 전체 CUDA API를 구현하지 않음. 지원되지 않는 기능으로는 CDNA 전용 확장, NCCL, TensorRT, 그리고 많은 사용자 정의 PTX 명령어가 있음.
  • Windows ROCm 생태계: 안정적인 Windows HIP SDK는 전체 AI 스택(예: MIOpen/cuDNN)을 포함하지 않아 컨볼루션 중심 모델에 제한됨.
  • 호환성 가치: ZLUDA_CC=8.6는 AMD GPU 아키텍처가 아니라 CUDA 호환성 타겟을 반영함.

라이선스

프로젝트 스크립트 및 문서는 MIT 라이선스. ZLUDA, AMD ROCm/HIP, NVIDIA CUDA 구성 요소, PyTorch/LibTorch는 각각 원본 라이선스를 유지함. 자세한 내용은 THIRD_PARTY_NOTICES.md 참조.


커뮤니티 반응 (Hacker News 요약)

  • 오픈 표준 지지: 일부 댓글은 이와 같은 노력이 LLM 추론에서 닫힌 소스 NVIDIA 스택의 지배를 고려할 때 HIP, SYCL 또는 OpenCL과 같은 오픈 API의 필요성을 강조함.
  • 하드웨어 범위 질문: 사용자들은 이 설정이 다른 GPU(예: Radeon 7900 XT) 및 AI 외 작업(예: MATLAB)에서도 작동하는지 묻음.
  • 전략적 함의: 일부 의견은 CUDA에서 HIP으로의 변환이 간단해지면 CUDA의 장벽이 약화되어 잠재적으로 중간 표현으로 전환될 수 있다고 제안함.
  • 실용적 주의사항: 다른 사용자들은 cuDNN 부재와 현재 업스트림 릴리스보다 오래된 Windows ROCm 버전(7.1/7.2)에 의존한다는 점을 지적함.

이 논의는 교차 벤더 호환성에 대한 열정과 현재 제한 사항에 대한 현실적인 기대를 동시에 보여줌.

Sources

관련

  • Dispatch
  • Dispatch
  • Dispatch
  • 프로젝트
  • 프로젝트