ROCM

ROCm
ROCM
개발자AMD
초기 릴리즈2016년 11월 14일, 5년 전(2016-11-14)
안정된 릴리스
5.1.1 / 2022년 4월 9일, 2개월 전(2022-04-09)[1]
저장소메타 저장소
github.com/radeonopencompute/rocm
기입처C, C++, Python, Fortran, Julia
미들웨어엉덩이
엔진AMDgpu 커널 드라이버, HIPCC, LLVM 기반 컴파일러
운영 체제Linux, Windows
플랫폼지원되는 GPU
전임자금속가까운 Stream, HSA
크기2 GiB 미만
유형GPGPU 라이브러리 및 API
면허증.리브레
웹 사이트www.amd.com/en/graphics/servers-solutions-rocm

ROCm[2] 그래픽 처리 장치(GPU) 프로그래밍용 Advanced Micro Devices(AMD) 소프트웨어 스택입니다.ROCm은 그래픽 처리 유닛(GPGPU), 하이 퍼포먼스 컴퓨팅(HPC), 이종 컴퓨팅여러 분야에 걸쳐 있습니다.HIP(GPU 기반 프로그래밍), OpenMP/Message Passing Interface(MPI)(방향 기반 프로그래밍), OpenCL 여러 프로그래밍 모델을 제공합니다.

ROCm은 프리, libre 및 오픈 소스 소프트웨어(GPU 펌웨어[3] 블럽 제외)로 다양한 라이선스로 배포됩니다.

배경

ATI/AMD의 첫 번째 GPGPU 소프트웨어 스택은 Close to Metal로 Stream이 되었습니다.

ROCm은 Boltzmann Initiative와 [5]함께 2016년경에[4] 출시되었습니다.ROCM 스택은 이전 AMD GPU 스택을 기반으로 구축되어 있으며, 일부 툴은 GPUopen을 추적하고 다른 툴은 HSA(Hetheric System Architecture)를 추적하고 있습니다.

이기종 시스템 아키텍처

HSA는 적절한 파이널라이저를 사용하여 최종 하드웨어(GPU, FPGA...)에 JIT 컴파일할 수 있는 하드웨어에 의존하지 않는 중간 수준의 표현을 생성하는 것을 목적으로 했습니다.이 접근방식은 ROCm에 대해서는 폐기되었습니다.LLVM과 [6]업스트림된 AMDGPU 백엔드를 사용하여 GPU 코드만 구축합니다.단,[7] LLVM MLIR에 의한 모듈러 확장성에 대한 연구는 아직 남아 있습니다.

Microsoft AMP C++ 1.2

프로그래밍 능력

스택으로서의 ROCm은 커널 드라이버에서 최종 사용자 애플리케이션까지 다양합니다.AMD는 학습 [10]포털을 통해 AMD GCN 하드웨어 [8]및 ROCM 프로그래밍에[9] 대한 소개 비디오를 제공합니다.

스택과 ROCm/HIP 프로그래밍에 관한 최고의 기술 소개 중 하나가 Reddit에서 [11]현재도 볼 수 있습니다.

고급 프로그래밍

HIP 프로그래밍

HIP(HCC) 커널 언어

메모리 할당

NUMA
이기종 메모리 모델과 공유 가상 메모리

ROCm 코드 오브젝트

컴퓨팅/그래픽스 인터오퍼포먼스

저수준 프로그래밍

하드웨어 지원

ROCm은 주로 개별 프로페셔널 GPU를 대상으로 하고 있지만 공식 지원은 더 광범위하고 개인 사용자용 제품에도 적용됩니다.

주요 마이크로 아키텍처는 CDNA 1&2(프로), RDNA 1&2(컨슈머/프로슈머), GCN 4, 5위입니다.

RDNA2는 이미 "활성화"되어 있지만,[12] 2022년에 공식 지원이 계획되어 있습니다.

액셀러레이티드 프로세서 유닛(APU)은 「유효」하지만, 정식적으로는 서포트되고 있지 않습니다.거기에 ROCm이 기능하는 것은 [13]관여하고 있다.

프로 사양의 GPU

AMD Instent 액셀러레이터프로슈머 Radeon Pro GPU 시리즈와 함께 ROCM의 1등급 사용자입니다.대부분의 경우 완전한 지원을 받을 수 있습니다.

비교적 동등한 지원을 제공하는 소비자용 GPU는 2022년 1월 현재 Radeon VII(GCN 5 - Vega)뿐입니다.

개인 사용자용 GPU

GPU 시리즈 이름 남부
섬들
바다
섬들
화산
섬들
북극
섬/폴라리스
베가 Navi 1X Navi 2X
방출된 2012년 1월 2013년 9월 2015년 6월 2016년 6월 2017년 6월 2019년 7월 2020년 11월
마케팅명 Radeon HD 7000 Radeon Rx 200 Radeon Rx 300 Radeon RX 400/500 라데온 RX 베가/라데온 VII (7 nm) Rade on RX 5000 Rade on RX 6000
AMD 지원 No Current
명령 집합 GCN 명령 세트 RDNA 명령 세트
마이크로아키텍처 GCN 제1세대 GCN 제2세대 GCN 제3세대 GCN 제4세대 GCN 제5세대 RDNA RDNA 2
유형 통합 셰이더 모델
ROCm / HSA Yes ?
OpenCL 1.2 (Linux: 1.1 (이미지 지원 없음) (Mesa 3D 사용) 2.0 (Windows 7 이상에서는 Adrenalin 드라이버)
(Linux의 경우: 1.1 (이미지 지원 없음), 2.0 (AMD 드라이버 또는 AMD ROCm)
2.0 2.1 [14]
불칸 1.0
(Windows 7+ 또는 Mesa 17+)
1.2 (Adrenalin 20.1, Linux Mesa 3D 20.0)
셰이더 모델 5.1 5.1
6.3
6.4 6.5
오픈GL 4.6 (Linux의 경우: 4.6 (Mesa 3D 20.0))
다이렉트 3D 11(11_1)
12(11_1)
11(12_0)
12 (12_0)
11(12_1)
12(12_1)
11(12_1)
12 (12_2)
/drm/amdgpu[a] 실험적인[15] Yes
  1. ^ DRM(Direct Rendering Manager)은 Linux 커널의 컴포넌트입니다.

소프트웨어 생태계

학습 자원

AMD ROCm 제품 매니저가 [16]스택을 둘러보았습니다.

서드파티 통합

스택의 주요 소비자는 머신 러닝과 고성능 컴퓨팅/GPGPU 애플리케이션입니다.

기계 학습

다양한 딥 러닝 프레임워크에는 [17]ROCM 백엔드가 있습니다.

슈퍼컴퓨팅

ROCm은 상위 [19]500위권 내에서 큰 주목을 받고 있습니다.ROCm은 Exascale 슈퍼컴퓨터 ElCapitan[20][21] Frontier에 사용되고 있습니다.

AMD Infinity 허브에서 관련 소프트웨어를 찾을 수 있습니다.

기타 액셀러레이션 및 그래픽스 상호 운용

버전 3.0부터 Blender는 렌더러 [22]사이클에 HIP 컴퓨팅 커널을 사용할 수 있게 되었습니다.

기타 언어

줄리아.

Julia는 LLVM과 통합되어 ROCm [23]스택의 컴포넌트를 선택하는 AMDGPU.jl 패키지를 가지고 있습니다.AMDGPU.jl은 HIP를 통해 코드를 컴파일하는 대신 Julia의 컴파일러를 사용하여 LLVM IR을 직접 생성합니다.이 IR은 나중에 LLVM에서 네이티브 디바이스 코드를 생성하기 위해 사용됩니다.AMDGPU.jl은 ROCr의 HSA 구현을 사용하여 디바이스에 네이티브 코드를 업로드하고 실행합니다.이는 HIP가 자체 생성된 디바이스 코드를 로드하는 방법과 유사합니다.

AMDGPU.jl은 ROCm의 ROCBLAS(BLAS용), ROCRAND(랜덤 번호 생성용) 및 ROCFFT(FT용)와의 통합도 지원합니다.향후 ROCALUTION, rocSOLVER, MIOpen 및 기타 ROCM 라이브러리와의 통합이 계획되어 있습니다.

소프트웨어 배포

공식적인

ROCM 소프트웨어는 현재 수십 개의 공용 GitHub 저장소에 배포되어 있습니다.메인 공개 메타 저장소에는 각 공식 릴리스에 대한 xml 매니페스트가 있습니다.git 위에 구축된 버전 관리 도구인 git-repo를 사용하는 것이 로컬에서 [24]스택과 동기화하는 권장 방법입니다.

ROCm 5.1의 발매가 임박했습니다.[17]매달 마이너 릴리즈를 고려하면 아마도 2월 중순입니다.

스택 영역 퍼블릭 GitHub 조직
로우 레벨(대부분) https://github.com/radeonopencompute
미드레벨(대부분) https://github.com/rocm-developer-tools
개요(대부분) https://github.com/rocmsoftwareplatform/

AMD는 ROCm용 컨테이너형 애플리케이션, 특히 AMD Infinity [25]Hub에서 수집된 과학 연구 애플리케이션을 배포하기 시작합니다.

AMD는 다양한 Linux 배포에 맞게 패키지를 배포합니다.

서드파티

ROCm을 패키징하는 서드파티 에코시스템이 증가하고 있습니다.

Linux 디스트리뷰션에서는 공식(네이티브) ROCm 패키징을 실시하고 있습니다.다양한 고도의 기능을 갖추고 있습니다.Arch,[26] Gentoo,[27] Debian 및 Fedora,[28] GNU Guix, NixOS.

스팩 [29]패키지가 있습니다.

구성 요소들

커널 공간 구성요소인 ROCk가 하나 있고, 나머지는 사용자 공간 모듈로 구성되어 있습니다.

비공식 인쇄 정책은 다음과 같습니다.저수준 라이브러리의 경우 대문자 ROC 소문자 뒤에 ROCt, 사용자용 라이브러리(예: ROCBLAS)[30]를 사용합니다.

AMD는 LLVM 커뮤니티와 함께 개발 중이지만 업스트림은 순간적이지 않으며 2022년 1월 현재도 여전히 [31]지연되고 있습니다.AMD는 아직 업스트림되지 않은 부품에 대해 공식적으로 다양한 LLVM[32][33][7] 포크를 패키지화하고 있습니다. - 컴파일러 최적화, 디버깅 지원, OpenMP 오프로드...

저레벨

ROCk - 커널 드라이버

ROCm - 디바이스 라이브러리

LLVM 비트코드로 구현된 라이브러리를 지원합니다.이들은 산술 연산, 원자학, 기동 파라미터 쿼리, 온디바이스 커널 기동 등을 위한 다양한 유틸리티와 함수를 제공합니다.

ROCt - 퉁크

트렁크는 스택에 들어가는 모든 사고와 큐잉을 담당합니다.

ROCr - 런타임

ROC 런타임은 동일하지 않다는 점에서 ROC 공용 언어 런타임과 다릅니다.

ROCm - 컴파일러 지원

ROCm 코드 오브젝트 매니저는 LLVM 중간 표현과의 상호작용을 담당합니다.

미드레벨

ROCclr 공용 언어 런타임

공통 언어 런타임은 linux에서는 ROCr, Windows에서는 PAL에 콜을 적응시키는 간접 레이어입니다.이전에는 HSAIL 컴파일러와 같은 다른 컴파일러 간에 라우팅이 가능했습니다.현재는 상위 간접 레이어(HIP, OpenCL)에 의해 흡수되고 있습니다.

OpenCL

ROCm은 Installable Client Driver ICD Loader와 OpenCL[34] 구현을 함께 제공합니다.2022년 1월 현재 ROCm 4.5.2는 OpenCL 2.2를 출하하고 있어 경쟁사에 [35]뒤처져 있다.

HIP - 휴대성을 위한 이종 인터페이스

AMD가 GPU에 실장하는 것을 HIPAMD라고 부릅니다.게다가 데모용으로 CPU를 실장하는 도 있습니다.

HIPCC

HIP는 Clang을 랩하고 LLVM 오픈 AMDGPU 백엔드로 컴파일하거나 NVIDIA [36]컴파일러로 리다이렉트하는 'HIPCC' 컴파일러를 구축합니다.

HIPIFY

HIPIFY는 소스 투 소스 컴파일 도구이며 CUDA를 Clang 기반 도구 또는 sed와 유사한 Perl 스크립트를 사용하여 HIP로 변환합니다.

GPU 포트

GPUFORT는 HIPIFY와 마찬가지로 소스 코드를 다른 제3세대 언어 소스로 컴파일하는 도구입니다.이를 통해 사용자는 CUDA Fortran에서HIP Fortran으로 이행할 수 있습니다.그것은 연구 프로젝트의 레퍼토리에 포함되기도 하고, 더더욱 그렇다.[37]

개략적인

ROCm 고급 라이브러리는 보통 머신 러닝 프레임워크와 같은 애플리케이션 소프트웨어에 의해 직접 소비됩니다.다음 라이브러리의 대부분은 GPU 아키텍처가 뛰어난 GEMM(General Matrix Multiply) 카테고리에 있습니다.

이러한 사용자용 라이브러리의 대부분은 듀얼 폼으로 제공되고 있습니다.Nvidia 하드웨어에 라우팅할 수 있는 간접 레이어에는 hip, AMD [38]구현에는 roc입니다.

록블라스/힙비라스

ROCBLAS힙비LAS는 고급 라이브러리의 중심이며, 기본 선형 대수 서브 프로그램을 위한 AMD 구현입니다.인장 라이브러리를 개인적으로 사용합니다.

록솔러/힙솔러

이 라이브러리 쌍은 ROCm의 LAPACK 구현을 구성하며 rocBLAS와 강하게 관련되어 있습니다.

유틸리티

  • ROCm 개발자 도구: 디버깅, 트레이서, 프로파일러, 시스템 관리 인터페이스, 검증 스위트, 클러스터 관리.
  • GPUOpen 도구: GPU Analyzer, 메모리 비주얼라이저...
  • 외부 공구: radeontop (TUI 개요)

경쟁사와의 비교

ROCm은 GPU 컴퓨팅을 목적으로 하는 유사한 스택의 경쟁사입니다.Nvidia CUDAIntel OneAPI.

엔비디아 쿠다

Nvidia는 cuBLAS 및 이와 같은 고급 라이브러리가 있기 전까지는 근접 소스입니다.
Nvidia는 Clang 프런트엔드와 PTX(Parallel Thread Execution) LLVM GPU 백엔드를 NVCC(Nvidia CUDA 컴파일러)로 판매합니다.
그 위에는 오픈소스 레이어가 있습니다(를 들어 RAPIDS).

인텔 OneAPI

「 」를 참조해 주세요.

  • AMD 소프트웨어 – AMD의 드라이버, API 및 개발 작업의 개요.
  • GPUOpen – AMD의 보완 그래픽스 스택
  • AMD Radeon 소프트웨어 – AMD의 소프트웨어 배포 채널

레퍼런스

  1. ^ "ROCm 5.1.1 release". 9 April 2022. Retrieved 1 May 2022.
  2. ^ "Question: What does ROCm stand for? · Issue #1628 · RadeonOpenCompute/ROCm". Github.com. Retrieved 18 January 2022.
  3. ^ "Debian -- Details of package firmware-amd-graphics in buster". Packages.debian.org. Retrieved 18 January 2022.
  4. ^ "AMD @ SC16: Radeon Open Compute Platform (ROCm) 1.3 Released, Boltzmann Comes to Fruition". anandtech.com. Retrieved 19 January 2022.
  5. ^ "AMD @ SC15: Boltzmann Initiative Announced - C++ and CUDA Compilers for AMD GPUs". anandtech.com. Retrieved 19 January 2022.
  6. ^ "User Guide for AMDGPU Backend — LLVM 13 documentation". Llvm.org. Retrieved 18 January 2022.
  7. ^ a b "The LLVM Compiler Infrastructure". GitHub. 19 January 2022.
  8. ^ "Introduction to AMD GPU Hardware" – via www.youtube.com.
  9. ^ "Fundamentals of HIP Programming". AMD.
  10. ^ "ROCm™ Learning Center". AMD.
  11. ^ "AMD ROCm / HCC programming: Introduction". December 26, 2018.
  12. ^ "Rdna 2 support? · Issue #1180 · RadeonOpenCompute/ROCm". GitHub.
  13. ^ "Here's something you don't see every day: PyTorch running on top of ROCm on a 6800M (6700XT) laptop! Took a ton of minor config tweaks and a few patches but it actually functionally works. HUGE!". 10 December 2021.
  14. ^ "AMD Radeon RX 6800 XT Specs". TechPowerUp. Retrieved 1 January 2021.
  15. ^ Larabel, Michael (7 December 2016). "The Best Features of the Linux 4.9 Kernel". Phoronix. Retrieved 7 December 2016.
  16. ^ "ROCm presentation". HPCwire.com. 6 July 2020. Retrieved 18 January 2022.
  17. ^ a b "AMD Introduces Its Deep-Learning Accelerator Instinct MI200 Series GPUs". Infoq.com. Retrieved 18 January 2022.
  18. ^ "Installation".
  19. ^ "AMD Chips Away at Intel in World's Top 500 Supercomputers as GPU War Looms". 16 November 2020.
  20. ^ "El Capitan Supercomputer Detailed: AMD CPUs & GPUs to Drive 2 Exaflops of Compute".
  21. ^ "Livermore's el Capitan Supercomputer to Debut HPE 'Rabbit' Near Node Local Storage". 18 February 2021.
  22. ^ "Blender 3.0 takes support for AMD GPUs to the next level. Beta support available now!". Gpuopen.com. 15 November 2021. Retrieved 18 January 2022.
  23. ^ "AMD ROCm ⋅ JuliaGPU". juliagpu.org.
  24. ^ "ROCm Installation v4.3 — ROCm 4.5.0 documentation". Rocmdocs.amd.com. Retrieved 18 January 2022.
  25. ^ "Running Scientific Applications on AMD Instinct Accelerators Just Got Easier". HPCwire.com. 18 October 2021. Retrieved 25 January 2022.
  26. ^ "ROCm for Arch Linux". Github.com. 17 January 2022. Retrieved 18 January 2022.
  27. ^ "Gentoo Linux Packages Up AMD ROCm, Makes Progress On RISC-V, LTO+PGO Python". Phoronix.com. Retrieved 18 January 2022.
  28. ^ "Fedora & Debian Developers Look At Packaging ROCm For Easier Radeon GPU Computing Experience". Phoronix.com. Retrieved 18 January 2022.
  29. ^ Gamblin, Todd; LeGendre, Matthew; Collette, Michael R.; Lee, Gregory L.; Moody, Adam; de Supinski, Bronis R.; Futral, Scott (November 15, 2015). "The Spack Package Manager: Bringing Order to HPC Software Chaos" – via GitHub.
  30. ^ Bloor, Cordell. "20211221 Packaging session notes and small update". debian-ai@lists.debian.org (Mailing list). Retrieved 18 January 2022.
  31. ^ "[Debian official packaging] How is ROCm LLVM fork still needed? · Issue #2449 · ROCm-Developer-Tools/HIP". GitHub.
  32. ^ "Aomp - V 14.0-1". GitHub. 22 January 2022.
  33. ^ "The LLVM Compiler Infrastructure". GitHub. 10 January 2022.
  34. ^ "Khronos OpenCL Registry - The Khronos Group Inc". www.khronos.org.
  35. ^ "List of OpenCL Conformant Products - The Khronos Group Inc". www.khronos.org. 3 February 2022.
  36. ^ "Figure 3. HIPCC compilation process illustration. The clang compiler".
  37. ^ "AMD Publishes Open-Source "GPUFORT" as Newest Effort to Help Transition Away from CUDA".
  38. ^ Maia, Julio; Chalmers, Noel; T. Bauman, Paul; Curtis, Nicholas; Malaya, Nicholas; McDougall, Damon; van Oostrum, Rene; Wolfe, Noah (May 2021). ROCm Library Support & Profiling Tools (PDF). AMD.

외부 링크