11월 19, 2024

Wpick

지상에서 한국의 최신 개발 상황을 파악하세요

AMD는 ROCm을 기반으로 구축된 CUDA 구현에 조용히 자금을 지원했습니다. 이제 이는 오픈 소스입니다.

AMD는 ROCm을 기반으로 구축된 CUDA 구현에 조용히 자금을 지원했습니다. 이제 이는 오픈 소스입니다.

AMD는 HIP/ROCm 위에서 실행되도록 NVIDIA의 CUDA API를 대상으로 하는 코드베이스를 더 쉽게 포팅할 수 있도록 수년 동안 노력해 왔지만 여전히 개발자의 작업이 필요합니다. 자동화된 생성을 지원하기 위해 HIPIFY와 마찬가지로 도구가 개선되었지만 이는 간단하고 즉각적이며 완벽한 솔루션은 아닙니다. 특히 최적의 성능을 원하는 경우 더욱 그렇습니다. 지난 몇 년 동안 AMD는 많은 NVIDIA CUDA 구현이 소스 코드를 조정할 필요 없이 사용하기 쉬운 대안인 라이브러리 수준 AMD ROCm 패키지 위에서 실행될 수 있도록 바이너리 호환성을 달성하기 위한 노력에 조용히 자금을 지원해 왔습니다. . 실제로 많은 실제 워크로드에서 이는 최종 사용자가 개발자 개입 없이 CUDA 지원 소프트웨어를 실행할 수 있는 솔루션입니다. 다음은 Radeon GPU용으로 설계된 CUDA 구현에 대한 일부 테스트 및 성능 벤치마크와 함께 현재 오픈 소스로 제공되는 “skunkworks” 프로젝트에 대한 자세한 정보입니다.

몇 년 전부터 Intel 그래픽에서 CUDA 지원을 활성화하는 데 전념했던 ZLUDA를 기억하실 것입니다. 이 오픈 소스 프로젝트는 Intel oneAPI Level Zero를 기반으로 구축된 Intel 그래픽에서 사용하기 쉬운 CUDA 구현을 제공하는 것을 목표로 합니다. ZLUDA는 개인적인 이유로 중단되었지만 그 뒤에 있는 개발자(당시 Intel에서도 근무 중이었음)인 Andrzej Janik은 HIP/Rookm이 포함된 AMD GPU에서 사용할 수 있도록 ZLUDA를 효과적으로 적용하기 위해 2022년 AMD에 고용된 것으로 나타났습니다. Intel은 AMD와 계약하기 전에 ZLUDA 개발을 고려하고 있었습니다. 그러나 그들은 궁극적으로 아이디어를 거부하고 프로젝트에 자금을 제공하지 않았습니다.

Linux에서 CUDA-Z를 사용하는 Radeon GPU

Andrzej Janik은 지난 2년 동안 ZLUDA를 Radeon GPU로 가져왔고 작동합니다. 많은 CUDA 프로그램을 수정이나 다른 작업 없이 HIP/ROCm에서 실행할 수 있습니다. ZLUDA 라이브러리를 확인하는 평소와 같이 바이너리를 실행하기만 하면 됩니다. CUDA 대안을 다운로드하세요. 제가 알 수 없는 이유로 AMD는 올해 이러한 노력에 대한 자금 지원을 중단하고 소프트웨어 제품으로 출시하지 않기로 결정했습니다. 하지만 좋은 소식은 만일의 사태가 발생할 경우를 대비한 조항이 있다는 것입니다. Janek은 계약이 만료되면 작업물을 오픈 소스로 제공할 수 있습니다.

Radeon ZLUDA Git에 커밋

Andrzej Janik은 오늘 예정된 공개 발표에 앞서 AMD ROCm을 위한 새로운 ZLUDA 구현에 대한 액세스를 제공하고 이를 테스트하고 벤치마킹할 수 있도록 했습니다. 며칠 동안 테스트했는데 긍정적인 경험이었습니다. CUDA 지원 소프트웨어는 이미 ROCm 위에서 아무런 변경 없이 실행되고 있습니다. 독점 렌더러 등도 “CUDA on Radeon” 구현에서 작동합니다.

ZLUDA는 100% 오류가 발생하지 않지만 NVIDIA OptiX 지원이 완전히 지원되지 않으므로 PTX 어셈블리 코드를 사용하지 않는 프로그램과 같은 일부 기능은 현재 처리되지 않습니다. 그러나 대부분의 경우 이러한 구현은 놀랍게도 개발자의 단독 노력으로 이루어질 수 있습니다.

Radeon 라이브러리 Zloda

코드가 오픈 소스인지 궁금하신 분들을 위해 말씀드리자면 Apache 2.0 또는 MIT에 따라 이중 라이센스가 부여되어 있습니다. Rust 팬들은 Rust 프로그래밍 언어가 이 Radeon 구현에 활용되었다는 사실을 알게 되어 기쁠 것입니다.

참고: 내 스크린샷과 지난 2년간의 개발 과정에서 CUDA를 통해 Radeon GPU에 노출된 장치의 이름은 ROCm이 있는 실제 AMD Radeon 그래픽 어댑터가 아닌 “그래픽 장치”입니다. 이는 CUDA 벤치마크 및 자동화된 원격 측정이 포함될 수 있는 기타 소프트웨어의 자동 보고 결과로 인해 발생합니다. 따라서 Radeon GPU가 CUDA 내에서 사용된다는 사실이 유출되지 않도록 일반 “그래픽 장치” 문자열로 설정됩니다. 오늘 Radeon Code의 ZLUDA 오픈 소스의 일부로 일반 “그래픽 장치” 컨실러가 아닌 실제 Radeon 그래픽 카드 시리즈를 노출하기 위해 변경 사항이 구현될 것이라고 들었습니다.