개요

CUDA(NVIDIA)와 ROCm(AMD)은 GPU 범용 연산(GPGPU) 플랫폼의 양대 산맥. CUDA가 사실상 업계 표준이고, ROCm은 오픈소스 대안으로 AMD GPU에서 작동. AI/HPC 워크로드 선택 시 GPU 하드웨어뿐 아니라 소프트웨어 생태계가 결정적 요인.


한 줄 요약

CUDAROCm
벤더NVIDIAAMD
라이선스독점 (Proprietary)오픈소스 (MIT 등)
첫 출시20072016
생태계업계 표준, 가장 성숙성장 중, 아직 부족
경쟁력성능·도구·라이브러리 압도가격·메모리·개방성

아키텍처 & 프로그래밍 모델

CUDA

// CUDA 커널 예시
__global__ void vectorAdd(float* A, float* B, float* C, int N) {
    int i = blockDim.x * blockIdx.x + threadIdx.x;
    if (i < N) C[i] = A[i] + B[i];
}
 
// 호출
vectorAdd<<<blocks, threads>>>(d_A, d_B, d_C, N);
  • 컴파일러: nvcc
  • 언어: CUDA C/C++, Python (PyCUDA, CuPy)
  • 실행 단위: Thread → Warp(32) → Block → Grid
  • Tensor Core: AI 연산 가속 (FP16/BF16/FP8/FP4)

ROCm / HIP

// HIP 커널 (CUDA와 거의 동일)
__global__ void vectorAdd(float* A, float* B, float* C, int N) {
    int i = blockDim.x * blockIdx.x + threadIdx.x;
    if (i < N) C[i] = A[i] + B[i];
}
 
// 호출
hipLaunchKernelGGL(vectorAdd, blocks, threads, 0, 0, d_A, d_B, d_C, N);
  • 컴파일러: hipcc (LLVM 기반)
  • 언어: HIP C++, Python (ROCm PyTorch)
  • 실행 단위: Thread → Wavefront(64, RDNA는 32) → Workgroup → Grid
  • Matrix Core: AI 연산 가속 (AMD의 Tensor Core 대응)
  • HIPIFY: CUDA 코드를 HIP로 자동 변환하는 도구

소프트웨어 스택 비교

레이어CUDAROCm
드라이버NVIDIA DriverAMDGPU (오픈소스)
런타임CUDA RuntimeHIP Runtime
수학 라이브러리cuBLAS, cuFFT, cuSPARSErocBLAS, rocFFT, rocSPARSE
딥러닝 프리미티브cuDNNMIOpen
통신NCCLRCCL
추론 최적화TensorRT, TensorRT-LLMMIGraphX, vLLM (ROCm)
프로파일러Nsight, nvprofROCm Profiler, rocprof
모니터링nvidia-smirocm-smi

AI 프레임워크 지원

프레임워크CUDAROCm
PyTorch✅ 네이티브, 완벽✅ 공식 지원 (2022~)
TensorFlow✅ 네이티브✅ 지원 (설정 복잡)
JAX✅ 완벽⚠️ 실험적
vLLM✅ 완벽✅ 공식 지원
DeepSpeed✅ 완벽✅ 지원
Triton (OpenAI)✅ 완벽⚠️ 부분 지원
FlashAttention⚠️ 포팅 중 (일부만)
Hugging Face✅ 대부분 동작

하드웨어 매트릭스 (2025)

데이터센터

항목NVIDIA H100AMD MI300XNVIDIA B200AMD MI325X
메모리80GB HBM3192GB HBM3192GB HBM3e256GB HBM3e
대역폭3.35 TB/s5.3 TB/s8 TB/s6 TB/s
FP161,979 TF1,307 TF-1,307 TF
FP83,958 TF2,615 TF4,500 TF2,615 TF
가격비쌈H100 대비 30~40% 저렴매우 비쌈MI300X 동급

소비자

항목NVIDIA RTX 4090/5090AMD RX 7900 XTX
AI 지원강력 (CUDA·DLSS·RTX)ROCm은 공식 미지원 (커뮤니티 우회)
ML 개발표준실험용 수준
게이밍강력강력

성능 비교 (AI 워크로드)

LLM 추론 (Llama 2 70B, FP16 기준)

GPUThroughput비고
H100 80GB~1,500 tok/s표준, 가장 최적화됨
MI300X 192GB~1,400 tok/s단일 GPU로 큰 모델 수용 가능 (메모리 이점)
B200 192GB~4,500 tok/sFP8/FP4 가속

LLM 학습

  • H100이 ROCm 생태계 성숙도·NVLink·NCCL로 대규모 클러스터 학습 압도
  • MI300X는 단일 노드·중소 규모에서 경쟁력

장단점

CUDA 장점

  • 업계 표준 (사실상 모든 AI 연구·논문이 CUDA 기반)
  • 성숙한 라이브러리 생태계
  • 우수한 개발 도구 (Nsight, Visual Profiler)
  • 클라우드 지원 최고 (AWS/Azure/GCP 모두 NVIDIA GPU 인스턴스)
  • 커뮤니티·문서·튜토리얼 압도적

CUDA 단점

  • 높은 GPU 가격 (H100 $30K+)
  • NVIDIA 독점 (벤더 락인)
  • 오픈소스 아님

ROCm 장점

  • 오픈소스 (MIT 라이선스)
  • AMD GPU가 메모리 용량 우위 (H100 80GB vs MI300X 192GB)
  • H100 대비 가격 경쟁력 (30~40% 저렴)
  • CUDA 코드를 HIP로 자동 변환 가능 (HIPIFY)
  • Linux 커널에 드라이버 통합 (오픈소스)

ROCm 단점

  • 생태계 미성숙 — 일부 최신 라이브러리 미지원
  • 문서·튜토리얼·커뮤니티 부족
  • Windows 지원 제한적 (주로 Linux)
  • 소비자 GPU(RX 시리즈) ROCm 공식 지원 제한
  • FlashAttention, Triton 등 최신 기법 포팅 지연

CUDA → ROCm 마이그레이션

HIPIFY 도구로 자동 변환 가능:

# CUDA 코드를 HIP로 변환
hipify-perl my_cuda_code.cu > my_hip_code.hip
 
# 또는 clang 기반
hipify-clang my_cuda_code.cu

대부분의 CUDA API는 HIP와 1:1 대응:

  • cudaMallochipMalloc
  • cudaMemcpyhipMemcpy
  • __global____global__ (동일)
  • cuBLASrocBLAS

선택 가이드

상황추천
AI 연구·논문 구현CUDA (H100)
프로덕션 LLM 추론CUDA (B200/H200)
대규모 클러스터 학습CUDA (NVLink·NCCL)
메모리 많이 필요한 추론ROCm (MI300X 192GB)
비용 절감 목표ROCm (MI300X/MI325X)
오픈소스 선호·벤더 락인 회피ROCm
로컬 개발 (게이밍 GPU)CUDA (RTX 4090/5090)
엣지 AICUDA (Jetson)

대안: Intel Gaudi, OpenCL, SYCL, Metal

플랫폼벤더특징
Intel Gaudi (SynapseAI)IntelAI 전용 가속기, PyTorch 네이티브
OpenCLKhronos (개방)크로스 벤더, 성능은 CUDA 대비 열세
SYCL / oneAPIIntel 주도C++ 표준 기반, 크로스 플랫폼
Metal / MPSAppleApple Silicon, M 시리즈 GPU
Vulkan ComputeKhronos게이밍 중심이나 컴퓨트 가능

현실적 조언

2025년 현재:

AI 개발 시작 → CUDA 먼저 배우는 것이 정석
  - 튜토리얼·교재·직장 수요 모두 CUDA 중심
  - PyTorch + CUDA가 사실상 진입점

AMD 전환 고려 시점 → 이 중 하나:
  - 대량 추론 인프라 비용 최적화 필요
  - 192GB+ 단일 GPU 메모리 필요 (초대형 모델)
  - 벤더 락인 회피가 전략적 우선순위

결론: 업계는 당분간 CUDA 압도적 우세 유지 예상
     (ROCm은 천천히 추격 중)

관련 항목