CUDA(NVIDIA)와 ROCm(AMD)은 GPU 범용 연산(GPGPU) 플랫폼의 양대 산맥. CUDA가 사실상 업계 표준이고, ROCm은 오픈소스 대안으로 AMD GPU에서 작동. AI/HPC 워크로드 선택 시 GPU 하드웨어뿐 아니라 소프트웨어 생태계가 결정적 요인.
한 줄 요약
CUDA
ROCm
벤더
NVIDIA
AMD
라이선스
독점 (Proprietary)
오픈소스 (MIT 등)
첫 출시
2007
2016
생태계
업계 표준, 가장 성숙
성장 중, 아직 부족
경쟁력
성능·도구·라이브러리 압도
가격·메모리·개방성
아키텍처 & 프로그래밍 모델
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);
# CUDA 코드를 HIP로 변환hipify-perl my_cuda_code.cu > my_hip_code.hip# 또는 clang 기반hipify-clang my_cuda_code.cu
대부분의 CUDA API는 HIP와 1:1 대응:
cudaMalloc → hipMalloc
cudaMemcpy → hipMemcpy
__global__ → __global__ (동일)
cuBLAS → rocBLAS
선택 가이드
상황
추천
AI 연구·논문 구현
CUDA (H100)
프로덕션 LLM 추론
CUDA (B200/H200)
대규모 클러스터 학습
CUDA (NVLink·NCCL)
메모리 많이 필요한 추론
ROCm (MI300X 192GB)
비용 절감 목표
ROCm (MI300X/MI325X)
오픈소스 선호·벤더 락인 회피
ROCm
로컬 개발 (게이밍 GPU)
CUDA (RTX 4090/5090)
엣지 AI
CUDA (Jetson)
대안: Intel Gaudi, OpenCL, SYCL, Metal
플랫폼
벤더
특징
Intel Gaudi (SynapseAI)
Intel
AI 전용 가속기, PyTorch 네이티브
OpenCL
Khronos (개방)
크로스 벤더, 성능은 CUDA 대비 열세
SYCL / oneAPI
Intel 주도
C++ 표준 기반, 크로스 플랫폼
Metal / MPS
Apple
Apple Silicon, M 시리즈 GPU
Vulkan Compute
Khronos
게이밍 중심이나 컴퓨트 가능
현실적 조언
2025년 현재:
AI 개발 시작 → CUDA 먼저 배우는 것이 정석
- 튜토리얼·교재·직장 수요 모두 CUDA 중심
- PyTorch + CUDA가 사실상 진입점
AMD 전환 고려 시점 → 이 중 하나:
- 대량 추론 인프라 비용 최적화 필요
- 192GB+ 단일 GPU 메모리 필요 (초대형 모델)
- 벤더 락인 회피가 전략적 우선순위
결론: 업계는 당분간 CUDA 압도적 우세 유지 예상
(ROCm은 천천히 추격 중)