GN⁺: AMD가 자금을 지원한 ROCm 기반 드롭인 CUDA 구현체, 이제 오픈소스로 공개
(phoronix.com)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와 같은 현대적인 프로그래밍 언어를 활용하는 점이 흥미로움.
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가 이 프로젝트에 더 많은 팀을 할당해야 한다고 생각하는 의견이 있음.