나무모에 미러 (일반/밝은 화면)
최근 수정 시각 : 2024-04-21 07:59:40

ROCm



||<tablewidth=100%><tablebordercolor=#000><bgcolor=#fff,#000><color=#000,#fff><height=70><nopad>
||<tablealign=center><tablebordercolor=#fff,#000><tablebgcolor=#fff,#000> 파일:AMD Radeon 로고.svg파일:AMD Radeon 로고 화이트.svg ||<(>
AMD Radeon Graphics
둘러보기 ||
||
{{{#!wiki style="margin:0 -10px -5px; min-height:calc(1.5em + 5px)"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin:-5px -1px -11px"
GPU 마이크로아키텍처
TeraScale GCN RDNA
CDNA
<rowcolor=white> 그래픽 카드 제품군 가속기 제품군
RADEON RX RADEON PRO INSTINCT
드라이버 및 소프트웨어
Radeon Software ROCm GPUOpen
기술
Video Core Next CrossFire Eyefinity
FreeSync Fluid Motion FidelityFX }}}}}}}}}

ROCm
Radeon Open Compute platform
파일:AMD ROCm logo.webp
<colbgcolor=#000><colcolor=#fff> 기업 파일:AMD 로고.svg
출시 Linux: 2016년 11월
Windows: 2023년 7월 27일
최신 버전 Linux: 6.0.0 (2023년 12월 15일)
Windows: 5.7.1 (2023년 12월 23일)
플랫폼 파일:Linux 로고.svg파일:Linux 로고 화이트.svg | 파일:Windows 로고.svg파일:Windows 로고 화이트.svg
웹페이지 파일:홈페이지 아이콘.svg홈페이지 | 파일:홈페이지 아이콘.svgWindows 전용

1. 개요2. 역사3. ROCm 스택4. HIP5. 문제점

[clearfix]

1. 개요

파일:ROCM.png

하드웨어배틀의 소개

AMD가 2016년에 발표한 GPGPU 소프트웨어 스택 및 HPC 플랫폼. NVIDIACUDA에 대응된다. 현재 최신 버전은 리눅스 기준 6.0 이다.

XILINX의 XDNA 아키텍처를 사용하는 Ryzen AI 개발은 Ryzen AI 소프트웨어를 사용한다.

발음은 사람마다 다르긴하나 로캠(Rockcam),록햄(Rockham) 등등 어려 발음이 존재한다.

2. 역사

ATI 시절에는 Close to Metal 이라는 GPGPU API가 있었으나 금방 사장되었고, 이후에는 FireStream이라는 전용 그래픽카드[1]를 내놓으며 ATI Stream이라는 SDK를 등장시켰다. 이는 CAL(저수준), Brook+(고수준)의 두 가지 언어로 이루어져 있었다.

이후 2011년부터 ATI APP Software Development Kit의 2.5 버전에서부터 OpenCL을 지원하기 시작하며 다시 사장되었다. 그러나 OpenCL 생태계가 많이 지지부진해지며 AMD는 2015년 11월에 개최된 SC15에서 볼츠만 계획(Boltzmann Initiative)을 발표하였고 이에 따라 # 2016년에 런칭된 플랫폼이 ROCm이다.

2023년 7월 27일, ROCm 5.5에서 드디어 Windows 지원이 추가되었다.

3. ROCm 스택

ROCm은 소프트웨어 스택으로 이루어져 있다. GPGPU 코드를 구동하기 위한 HIP 런타임과 컴파일러를 기본으로 가지며 연산 라이브러리인 HIPBLAS, HIPRAND, HIPDNN, HIPFFT 등으로 이루어져 있다.

4. HIP

HIP(Heterogeneous-Compute Interface for Portability)라는 언어를 기반으로 하며, HCC(Heterogeneous Compute Compiler)라는 컴파일러를 사용한다. 기존 시장의 풍부한 생태계를 가진 CUDA를 의식한 듯이 코드의 문법과 사용법이 CUDA와 매우 유사하여 단순 매크로로 재정의만 해도 어지간하면 CUDA코드를 HIP코드로 바꿔 쓸 수 있을 정도이며[2] 이렇게 HIP으로 작성된 코드는 HCC를 사용해 CUDA바이너리 트랜스컴파일을 지원해 기존 CUDA 플랫폼과의 호환성을 갖추었다.

C++의 병렬 코드에서는 HIP 코드로의 변경이 필요하나, Tensorflow, Pytorch, Caffe 프레임워크에서는 기존의 코드를 그대로 사용할수 있도록 배려되어 있다. 심지어 pytorch 에는 cuda 객체도 포함되어 이식성을 높였다.

Windows용 HIP SDK의 경우 PRO Edition 드라이버에 통합된 형태로 제공된다.

5. 문제점

한동안 AMD Instinct가 탑재된 데이터센터 및 슈퍼컴퓨터를 사용하는 기업 및 정부를 대상으로 개발 및 지원이 진행되어서 일반 사용자가 사용하기에는 아직 여러운 점이 있다.

ROCm이 출시된 지 거의 7년 반 동안 Windows를 지원하지 않았다. 비 Linux 환경에서 라데온을 사용해 GPGPU 프로그램을 구동하려는 경우 OpenCL만을 사용할 수밖에 없었다. 그래서 지지부진한 OpenCL 환경과 마찬가지로, 아니 어쩌면 더 시장에서 존재감이 없었다. GPT가 대두된 2023년부터는 AMD의 AI 투자가 대폭 늘어난 덕분에 이전보다는 나아졌다고는 하나, 여전히 갈 길이 멀다는 평가가 많다#1, #2(댓글 참고). 특히 일각에서는 이미 CUDA에 대항하기에는 너무 늦었다는 평가도 있을 정도.


[1] 그러나 항상 돈이 부족했던 ATi/AMD의 절약 사상 특성상 한가지 칩으로 여러가지 돌려막기를 했었기 때문에 일반 그래픽카드를 사서 드라이버만 바꿔도 FireStream이 되었다. 반면 당시 엔비디아는 같은 아키텍처에서도 다르게 컷한 그래픽 칩을 사용했고, 나중에는 아키텍처 사이에 Volta등의 연산 전용 아키텍처가 등장하기 시작했다. 결국 AMD 또한 RDNA 세대부터 게이밍용 RDNA와 연산용 CDNA를 분리하여 취급한다.[2] CUDA코드의 cu, cuda 심볼 prefix를 hip으로 바꾸기만 해도 어지간하면 컴파일이 된다.



파일:CC-white.svg 이 문서의 내용 중 전체 또는 일부는
문서의 r32
, 2.2번 문단
에서 가져왔습니다. 이전 역사 보러 가기
파일:CC-white.svg 이 문서의 내용 중 전체 또는 일부는 다른 문서에서 가져왔습니다.
[ 펼치기 · 접기 ]
문서의 r32 (이전 역사)
문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)



파일:CC-white.svg 이 문서의 내용 중 전체 또는 일부는
문서의 r168
, 4.7.1번 문단
에서 가져왔습니다. 이전 역사 보러 가기
파일:CC-white.svg 이 문서의 내용 중 전체 또는 일부는 다른 문서에서 가져왔습니다.
[ 펼치기 · 접기 ]
문서의 r168 (이전 역사)
문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)