6P by neo 3달전 | favorite | 댓글 2개

AMD, ROCm 기반 CUDA 구현을 조용히 지원하여 오픈소스로 공개

  • AMD는 개발자들이 NVIDIA의 CUDA API를 대상으로 하는 코드베이스를 HIP/ROCm에서 실행할 수 있도록 여러 년에 걸쳐 노력해왔음.
  • 이러한 노력에도 불구하고, 최적의 성능을 추구한다면 좋은(단순하고 즉각적이며 성능이 보장된) 해결책은 아니었음.
  • 지난 2년 동안 AMD는 많은 NVIDIA CUDA 애플리케이션들이 소스 코드 변경 없이 AMD ROCm 스택 위에서 실행될 수 있도록 라이브러리 수준에서의 바이너리 호환성을 제공하는 프로젝트를 조용히 지원해왔음.

ZLUDA: 인텔 그래픽스를 위한 CUDA 지원

  • 몇 년 전 ZLUDA라는 프로젝트가 인텔 그래픽스에서 CUDA를 지원하기 위해 시작되었으나, 개인적인 이유로 중단됨.
  • ZLUDA 개발자인 Andrzej Janik은 AMD로부터 2022년에 AMD GPU에서 HIP/ROCm을 사용하여 ZLUDA를 적용하기 위한 계약을 받음.
  • Janik은 지난 2년 동안 Radeon GPU에서 ZLUDA를 구현하여 많은 CUDA 소프트웨어가 수정 없이 HIP/ROCm에서 실행될 수 있도록 함.

ZLUDA의 오픈소스 공개

  • AMD는 올해 이 프로젝트에 대한 자금 지원을 중단하고 소프트웨어 제품으로 출시하지 않기로 결정함.
  • 그러나 계약 종료 시 Janik이 작업을 오픈소스로 공개할 수 있는 조항이 있었음.
  • Janik은 이 새로운 ZLUDA 구현을 테스트하고 벤치마크하기 위해 접근을 제공함.

ZLUDA 구현의 한계와 오픈소스 코드

  • ZLUDA 구현은 NVIDIA OptiX 지원이 완전하지 않고 PTX 어셈블리 코드를 사용하지 않는 소프트웨어는 현재 처리되지 않는 등 100% 안전하지 않음.
  • 대부분의 경우 이 구현은 단일 개발자의 노력으로 놀랍도록 능력이 있음.
  • 오픈소스 코드는 Apache 2.0 또는 MIT 라이선스로 이중 라이선스됨.
  • Rust 프로그래밍 언어가 이 Radeon 구현을 위해 사용됨.

GN⁺의 의견

  • 이 기사는 AMD가 CUDA 호환성을 제공하기 위해 조용히 지원한 프로젝트를 소개하고 있으며, 이는 오픈소스 커뮤니티에 큰 기여가 될 수 있음.
  • ZLUDA는 개발자들이 소스 코드를 변경하지 않고도 AMD 플랫폼에서 CUDA 애플리케이션을 실행할 수 있게 해주는 중요한 발전임.
  • 이러한 노력은 AMD GPU 사용자들에게 더 넓은 소프트웨어 생태계에 접근할 수 있는 기회를 제공하며, 특히 Rust와 같은 현대적인 프로그래밍 언어를 활용하는 점이 흥미로움.

엔비디아 F유!

Hacker News 의견
  • AMD가 자금 지원을 중단한 결과로 ZLUDA가 공개됨

    • AMD는 2년간의 개발 끝에 CUDA 애플리케이션을 AMD GPU에서 실행하는 것이 비즈니스 케이스가 아니라고 결정함.
    • 계약 조건에 따라 AMD가 추가 개발을 적합하지 않다고 판단하면 ZLUDA를 공개할 수 있음.
  • CUDA Dark API에 대한 언급

    • CUDA Dark API는 문서화되지 않은 함수들로 구성되어 있으며, 이들 함수의 정확한 수는 알 수 없음.
    • 일반적인 애플리케이션은 가장 흔한 한두 개의 함수를 사용함.
    • 이러한 함수들은 이름이나 인자의 유형이 알려져 있지 않아 구현이 시간이 많이 소요됨.
    • ZLUDA는 애플리케이션이 이를 사용하는 것을 관찰한 후에 사례별로 역공학과 구현을 진행함.
  • AMD가 CUDA 독점을 깨는 것을 응원하는 의견

    • 번역 계층이 즉시 하드웨어를 더 실행 가능하게 만들고 채택을 촉진할 수 있는 장점이 있음.
    • 그러나 개발자들이 ROCm을 지원하지 않고 번역 계층만 사용할 위험이 있음.
    • Proton+DXVK가 리눅스 게이밍에 긍정적인 영향을 미쳤지만, GPU 컴퓨팅 성능을 끌어내기 위해서는 구체적인 아키텍처에 맞는 튜닝이 필요함.
    • AMD는 시장에서 경쟁력을 갖기 위해 무언가를 해야 함.
  • Stable Diffusion을 AMD GPU에서 실행하려는 시도와 그 어려움에 대한 경험담

    • ROCm이 설치되고 GPU가 인식되는 데는 문제가 없었지만, ML 세계가 Nvidia에 집중되어 있어서 PyTorch 등의 설치가 어려움.
    • 결국 모델을 로드했지만 소프트웨어가 그래픽 세션을 충돌시키기 전에 단 하나의 이미지도 생성하지 못함.
    • 이 경험으로 인해 다시 Nvidia GPU를 구매하고 싶은 욕구가 생김.
  • Blender가 OpenCL을 버리고 CUDA 백엔드를 사용한 지 몇 년 후, Radeon HIP 백엔드를 추가했지만 ZLUDA + CUDA 백엔드를 사용하는 것이 Radeon HIP 백엔드보다 약간 빠른 것으로 나타남.

  • AMD가 이 프로젝트에 대한 자금 지원을 중단한 것은 이해할 수 없는 결정으로 보임.

    • CUDA-on-ROCm은 NVIDIA의 독점을 깨뜨릴 수 있고, NVIDIA가 CUDA에 대한 변경을 하는 것을 억제하는 역할을 할 수 있음.
    • 시장에서 1위가 아닌 경우, 실제 가치 경쟁을 위해 사실상의 표준을 따르고 진정으로 개방된 표준을 만들고 따라야 함.
  • Nvidia가 커널의 GPL 라이선스 드라이버 검사를 우회했다는 소식과 관련된 질문

    • 커널 6.6에서 Nvidia가 이를 수정하지 않으면 드라이버를 차단할 것이라는 소식이 있었으나, Nvidia의 대응이 없었음.
    • 현재 커널 6.7.4를 사용하고 있으며, Nvidia가 문제를 해결했는지, 아니면 차단이 연기되었는지에 대한 혼란스러운 정보가 있음.
  • AMD의 ROCm/HIP 스택을 직접 컴파일하고자 하는 이들을 위한 가이드가 Phoronix 기사에 소개됨.

  • ROCm이 공식 문서가 아닌 Github에서 더 잘 설명되어 있으며, 이는 AMD가 시장에서 경쟁력을 잃는 이유 중 하나로 브랜딩의 중요성을 강조함.

  • AMD가 이 프로젝트에 더 많은 팀을 할당해야 한다고 생각하는 의견이 있음.