ROCm은 어드밴스트 마이크로 디바이시즈(AMD)가 그래픽 처리 장치(GPU) 컴퓨팅을 위해 개발한 소프트웨어 스택입니다. 이는 범용 GPU 컴퓨팅(GPGPU), 고성능 컴퓨팅(HPC), 이기종 컴퓨팅 등 여러 분야에 걸쳐 있습니다. ROCm은 HIP(GPU 커널 기반 프로그래밍), OpenMP(지시문 기반 프로그래밍), OpenCL을 포함한 여러 프로그래밍 모델을 지원합니다. 이 스택은 GPU 펌웨어 바이너리 블롭을 제외하고 자유-오픈소스 소프트웨어로, 다양한 라이선스로 배포됩니다. 이름은 원래 Radeon Open Compute 플랫폼의 약자였지만, Open Compute가 등록 상표이므로 더 이상 약자로 기능하지 않습니다.
ROCm은 AMD GPU를 활용하여 과학 시뮬레이션부터 머신 러닝 워크로드까지 다양한 컴퓨팅 집약적 작업을 위한 통합 플랫폼을 제공하도록 설계되었습니다. 여기에는 로우 레벨 커널 드라이버부터 하이 레벨 라이브러리와 도구에 이르는 다양한 구성 요소가 포함되어 있으며, 다양한 하드웨어에서 효율적인 실행을 가능하게 합니다. 이 스택은 AMD와 오픈소스 커뮤니티에 의해 적극적으로 개발되며, 전문가용 및 소비자용 GPU를 모두 지원합니다.
배경
ATI/AMD의 최초 GPGPU 소프트웨어 스택은 나중에 Stream이 된 Close to Metal이었습니다. ROCm은 2016년경 볼츠만 이니셔티브와 함께 출시되었으며, 이전 AMD GPU 스택을 기반으로 구축되었습니다. 일부 도구는 GPUOpen에서 시작되었고, 다른 도구는 이기종 시스템 아키텍처(HSA)에서 비롯되었습니다. 2026년 7월, AMD는 ROCm이 6주 릴리스 주기를 채택하여 더 빈번한 업데이트와 개선을 목표로 한다고 발표했습니다.
이기종 시스템 아키텍처 중간 언어
HSAIL은 중간 수준의 하드웨어 독립적 중간 표현을 생성하도록 설계되었으며, 적절한 파이널라이저를 사용하여 최종 하드웨어(GPU, FPGA 등)에 JIT 컴파일될 수 있습니다. 이 접근 방식은 ROCm에서 중단되었으며, 현재는 LLVM과 AMDGPU 백엔드를 사용하여 GPU 코드만 구축합니다. 그러나 LLVM ML을 통한 향상된 모듈성에 대한 연구는 계속되고 있습니다.
프로그래밍 기능
ROCm은 스택으로서 커널 드라이버부터 최종 사용자 애플리케이션까지 다양합니다. AMD는 학습 포털을 통해 AMD GCN 하드웨어 및 ROCm 프로그래밍에 대한 소개 비디오를 제공합니다. ROCm 스택과 HIP 프로그래밍에 대한 최고의 기술 소개 중 일부는 Reddit에서 찾을 수 있습니다.
하드웨어 지원
ROCm은 주로 전문가용 개별 GPU를 대상으로 하지만, 지원되는 전문 GPU와 동일한 아키텍처의 소비자 GPU 및 APU도 ROCm과 함께 작동하는 것으로 알려져 있습니다. 예를 들어, 모든 RDNA 2 아키텍처 전문 GPU는 ROCm 5.x에서 공식적으로 지원됩니다. 사용자들은 Radeon 680M APU 및 Radeon 6700 XT GPU와 같은 RDNA 2 소비자 제품도 작동한다고 보고합니다.
전문가용 GPU
ROCm은 CDNA 및 RDNA 아키텍처를 기반으로 한 다양한 전문가용 GPU를 공식적으로 지원하며, 주로 데이터 센터 및 워크스테이션에서 HPC 및 인공 지능 워크로드에 사용됩니다. 지원 범위는 각 릴리스마다 지속적으로 확장됩니다.
소비자용 GPU
공식적으로 보장되지는 않지만, 지원되는 전문가용 모델과 동일한 아키텍처 제품군의 많은 소비자 GPU가 ROCm에서 작동합니다. 커뮤니티는 컴퓨팅 작업을 위해 Radeon 소비자 GPU를 성공적으로 사용한 사례를 문서화했지만, 성능과 안정성은 다를 수 있습니다.
소프트웨어 생태계
머신 러닝
많은 딥 러닝 프레임워크는 AMD 하드웨어에서 GPU 가속을 가능하게 하는 ROCm 백엔드를 보유하고 있습니다. 주목할 만한 프레임워크로는 PyTorch, TensorFlow, ONNX, MXNet, cuDNN, MIOpen, Caffe, Iree(LLVM MLIR 사용) 및 llama.cpp가 있습니다. 이러한 통합을 통해 개발자는 AMD GPU에서 신경망 훈련 및 추론을 실행할 수 있으며, 대규모 언어 모델 및 트랜스포머 아키텍처를 지원합니다.
슈퍼컴퓨팅
ROCm은 Top 500 슈퍼컴퓨터에서 상당한 traction을 얻고 있습니다. El Capitan 및 Frontier와 같은 엑사스케일 슈퍼컴퓨터에서 사용됩니다. 관련 소프트웨어는 AMD Infinity Hub에서 제공되며, 과학 애플리케이션을 위한 컨테이너화된 솔루션을 제공합니다.
기타 가속 및 그래픽 상호 운용
버전 3.0부터 Blender는 Cycles 렌더러에 HIP 컴퓨트를 사용할 수 있어 AMD 하드웨어에서 GPU 가속 렌더링을 가능하게 합니다.
기타 언어
#### Julia
Julia에는 LLVM 및 ROCm 스택의 선택된 구성 요소와 통합되는 AMDGPU.jl 패키지가 있습니다. HIP를 통해 코드를 컴파일하는 대신, AMDGPU.jl은 Julia의 컴파일러를 사용하여 LLVM IR을 직접 생성하고, 이후 LLVM이 AMDGPU 백엔드를 통해 네이티브 코드로 변환합니다. AMDGPU.jl은 ROCr의 HSA 구현을 사용하여 네이티브 코드를 장치에 업로드하고 실행하며, HIP이 자체 생성 장치 코드를 로드하는 방식과 유사합니다. AMDGPU.jl은 또한 BLAS용 rocBLAS, 난수 생성을 위한 rocRAND, FFT용 rocFFT와 같은 ROCm 라이브러리와의 통합을 지원합니다. rocALUTION, rocSOLVER, MIOpen 및 기타 ROCm 라이브러리와의 추가 통합이 계획되어 있습니다.
소프트웨어 배포
공식
Linux 및 Windows용 설치 지침은 공식 AMD ROCm 문서에서 제공됩니다. ROCm 소프트웨어는 현재 여러 공개 GitHub 저장소에 분산되어 있습니다. 주요 공개 메타 저장소 내에는 각 공식 릴리스에 대한 XML 매니페스트가 있으며, git-repo( Git 기반 버전 제어 도구)를 사용하여 스택을 로컬로 동기화하는 것이 좋습니다. AMD는 또한 ROCm용 컨테이너화된 애플리케이션, 특히 AMD Infinity Hub에서 수집된 과학 연구 애플리케이션과 다양한 Linux 배포판용 패키지를 배포합니다.
타사
ROCm을 공식적으로 패키징하는 Linux 배포판이 점점 늘어나고 있습니다. 여기에는 Arch Linux, Gentoo, Debian, Fedora, GNU Guix 및 NixOS가 포함됩니다. HPC 환경을 위한 Spack 패키지도 있습니다.
구성 요소
커널 공간 구성 요소(ROCk) 하나와 사용자 공간 구성 요소(약 100개)가 있습니다. 비공식 명명 규칙은 대문자 ROC와 소문자 약어(예: ROCt)를 사용하여 로우 레벨 라이브러리(예: ROCm)를 나타내고, 소문자 약어(예: rocBLAS)는 사용자 중심 라이브러리를 나타냅니다. AMD는 LLVM 커뮤니티와 적극적으로 협력하고 있지만, 업스트림은 즉각적이지 않으며 2022년 1월 현재 여전히 뒤쳐져 있습니다. AMD는 아직 업스트림되지 않은 다양한 부분에 대해 자체 LLVM 포크를 공식적으로 패키징합니다. 여기에는 컴파일러 최적화, 디버그 지원, OpenMP 오프로딩 등이 포함됩니다.
로우 레벨
#### ROCk - 커널 드라이버
ROCk은 GPU 하드웨어를 관리하고 사용자 공간 라이브러리에 대한 인터페이스를 제공하는 핵심 커널 공간 구성 요소입니다.
#### ROCm - 장치 라이브러리
장치 라이브러리는 LLVM 비트코드로 구현됩니다. 여기에는 수학 연산, 원자 연산, 장치 쿼리, 온디바이스 커널 실행 등 다양한 유틸리티와 함수가 포함됩니다.
#### ROCt - 썽크
썽크는 커널 드라이버와의 모든 상호 작용과 스택에 대한 큐잉을 담당합니다.
#### ROCr - 런타임
ROC 런타임은 호스트 애플리케이션이 컴퓨트 커널을 실행할 수 있게 하는 API 및 라이브러리 세트입니다. AMD의 HSA 런타임 API 구현입니다. ROC 공통 언어 런타임과는 다릅니다.
#### ROCm - 컴파일러 지원
ROCm 코드 객체 관리자는 LLVM 중간 표현과 상호 작용하고 코드 객체 및 로딩을 관리합니다.
중간 레벨
#### ROCclr - 공통 언어 런타임
공통 언어 런타임은 Linux에서 ROCr로, Windows에서 PAL(플랫폼 추상화 라이브러리)로 호출을 조정하는 간접 계층입니다. 이전에는 HSAIL 컴파일러와 같은 다양한 컴파일러 간의 라우팅에 사용되었습니다. 현재는 상위 간접 계층(HIP 및 OpenCL)에 흡수되고 있습니다.
#### OpenCL
ROCm은 설치 가능한 클라이언트 드라이버(ICD) 로더와 OpenCL 구현을 함께 제공합니다. 2022년 1월 현재 ROCm 4.5.2는 OpenCL 2.2를 제공하며 경쟁사에 비해 뒤쳐져 있습니다.
#### HIP - 이식성을 위한 이기종 인터페이스
AMD GPU용 AMD 구현은 HIPAMD라고 합니다. 주로 데모용으로 CPU 구현도 있습니다.
#### HIPCC
HIP은 Clang을 래핑하고 LLVM 오픈 AMDGPU 백엔드로 컴파일하거나 NVIDIA 컴파일러로 리디렉션하는 HIPCC 컴파일러를 구축합니다.
#### HIPIFY
HIPIFY는 소스 간 컴파일 도구입니다. CUDA를 HIP로 또는 그 반대로 변환하며, Clang 기반 도구 또는 sed 유사 Perl 스크립트를 사용합니다.
#### GPUFORT
HIPIFY와 마찬가지로 GPUFORT는 소스 코드를 다른 대상으로 컴파일하는 도구로, Fortran 코드를 GPU 실행으로 포팅하는 것을 용이하게 합니다.