반응형

1. CUDA 란 무엇인가? - 단순한 API가 아니라 하나의 생태계

CUDA(Compute Unified Device Architecture)는 NVIDIA GPU에서 범용 계산을 수행하기 위한 병렬 컴퓨팅 플랫폼이자 프로그래밍 모델, 그리고 이를 둘러싼 툴체인·라이브러리·소프트웨어 생태계 전체를 의미한다.

 

단순히 "GPU를 계산에 쓰는 기술"이라고 정의하기에는 너무 범위가 좁다. CUDA는 다음을 모두 포함하는 종합적인 아키텍처다.

 

CUDA를 구성하는 핵심 요소

요소 설명
CUDA C/C++ 언어 확장 GPU에서 동작하는 kernel 작성
런타임 API 메모리 관리, 커널 실행, 스트림 제어
Driver API 더 낮은 레벨의 GPU 제어(프로페셔널/OS 레벨)
CUDA Toolkit 컴파일러, 디버거, 프로파일러, SDK
GPU 라이브러리 생태계 cuBLAS, cuDNN, NCCL, TensorRT 등
Nsight 개발 도구 디버깅 및 커널 병목 분석

CUDA가 탄생하면서 GPU는 그래픽 장치에서 다목적 병렬 슈퍼컴퓨터로 변모했다.


2. CUDA가 등장한 이유 - 병렬 연산 패러다임 전환

(1) CPU Scaling의 끝: Dennard Scaling의 붕괴

2005년 이후 CPU는 더 이상 클럭을 무한정 올릴 수 없게 되었다.

  • 발열 급증(전력 밀도 증가)
  • 클럭 상승 속도 4GHz 근처에서 정체
  • 파이프라인 심화는 한계 도달

CPU는 "직렬 성능"은 강하지만 코어 수 확장에는 물리적 제약이 있다.

 

(2) GPU의 구조적 강점: Massive Parallelism

GPU는 반대로 '호출량이 많고 반복적인 계산'을 위한 최적화로 발전했다.

  • 수천~수만 개의 연산 유닛
  • 단순 연산을 초고속 반복
  • SIMD/SPMD 패턴에 특화

CPU가 '두뇌'라면 GPU는 '수천 명의 일꾼'


3. CUDA 아키텍처 핵심 이해 - 하드웨어 레벨 상세 분석

(1) SM(Stream Multiprocessor)

NVIDIA GPU의 계산 단위

하나의 SM 구성 요소:

  • CUDA Core(정수/부동연산)
  • Tensor Core(행렬 곱셈 전용)
  • Warp Scheduler
  • Register File
  • Shared Memory
  • Load/Store Unit
  • Special Function Unit(SFU)

(2) Warp의 개념

CUDA 병렬 계산 이해의 핵심은 Warp(32 threads) 개념이다.

  • GPU는 32개 스레드를 '한 덩어리'로 실행
  • Warp 단위로 스케줄링
  • 분기(divergence) 발생 시 warp 성능 저하

따라서 branch divergence 최소화는 GPU 최적화의 기본 중 기본


4. CUDA 프로그래밍 모델 - Host/Device, Kernel, Thread Hierarchy

(1) Host ↔ Device

역할 설명
Host(CPU) 프로그램 제어, 메모리 할당, 커널 호출
Device(GPU) 커널 실행, 대규모 계산 담당

(2) Kernel 함수

__global__ void kernel(/* args */){
	int idx = blockIdx.x * blockDim.x + threadIdx.x;
}
  • __global__ : GPU에서 실행
  • Launch syntax: kernel<<<grid, block, shared_mem, stream>>>(...)

(3) Thread / Block / Grid 구조

Grid
   ㄴBlock (SM에 매핑)
       ㄴWarp (32 threads)
           ㄴThread

각 block은 SM에 독립적으로 배치되며, block 수가 SM 수보다 많으면 동적으로 스케줄링된다.

 

(4) Occupancy 개념

GPU 성능에 가장 중요한 요소 중 하나는 Occupancy다.

Occupancy = 활성 워프 수 / SM 최대 워프 수

 

Occupancy를 높이기 위한 요소

  • register 사용 최적화
  • shared memory 크기 조절
  • block/thread 구성 조정

5. CUDA 메모리 모델 - 고급 최적화의 핵심

GPU는 다양한 메모리 계층을 가진다.

메모리 용도 속도 특징
Register 스레드 전용 ★ ★ ★ ★ ★ fastest
Shared Memory block 내 공유 ★ ★ ★ ★ ☆ L1 cache 수준
Global Memory 전체 접근 ★ ★ ☆ ☆ ☆ 느림(최적화 필수)
Local Memory spill 시 사용      전역 메모리 기반
Constant Memory 불변    broadcast 효율
Texture Memory 공간적 locality      이미지 처리 최적

 

전역 메모리 최적화 포인트

  • Coalescing(연속 메모리 접근) → 성능 폭 증가
  • misaligned access = 속도 급감
  • shared memory 활용 = global memory latency 완화

6. CUDA 스트림·비동기 프로그래밍 - CPU와 GPU가 동시에 일하기

CUDA는 기본적으로 비동기 기반이다.

스트림(Stream)

  • GPU에서 실행되는 커맨드 큐
  • 같은 스트림 → 순차 실행
  • 다른 스트림 → 병렬 실행 가능

활용:

  • CPU/GPU overlap
  • memcpy 와 kernel 병렬 실행
  • pipelines 구성

예:

데이터 전송 → 커널 실행 → 결과 복사

이 세 단계를 여러 스트림으로 동시에 수행해 처리량 최적화 가능


7. CUDA 라이브러리 생태계 - 산업계 표준

딥러닝/AI

  • cuDNN: CNN/RNN/Attention 최적화
  • NCCL: GPU 간 고속 통신 (멀티 GPU 학습 필수)
  • TensorRT: 추론 최적화

과학 계산(HPC)

  • cuBLAS: BLAS Level 1~3
  • cuFFT: 고성능 FFT
  • cuSPARSE: 희소 행렬 연산
  • cuSOLVER: 선형대수 분해, 고유값, LU/QR 등
  • Thrust: GPU STL

NVIDIA의 라이브러리들은 하드웨어 특성까지 고려한 최적화가 되어 있어 직접 구현한 코드보다 10~100배 더 빠르다.


8. CUDA의 장점 - 왜 산업에서 사실상 표준인가?

(1) 압도적 성능

GPU의 수천 개 코어를 활용해 CPU보다 수십~수백 배 빠른 병렬 처리 가능

(2) 개발 난이도 낮음

OpenGL/DirectX로 GPGPU를 하던 시대에 비해 CUDA는 C/C++ 기반이라 접근성이 뛰어남

(3) 최적화된 생태계

라이브러리·툴킷·프로파일러·디버거·AI 프레임워크가 모두 CUDA 중심

(4) 머신러닝·딥러닝과의 완벽한 호환

오늘날 AI 산업이 발전한 배경에는 NVIDIA의 CUDA + cuDNN 조합이 존재한다.

(5) HPC 및 슈퍼컴퓨터의 사실상 표준

TOP500 슈퍼컴퓨터 상당수가 NVIDIA GPU 기반


9. CUDA의 한계

NVIDIA GPU에 종속적

CUDA는 NVIDIA 전용

AMD, Intel GPU는 사용 불가

복잡한 최적화 과정

최고 성능을 끌어내기 위해서는:

  • warp divergency 관리
  • 메모리 coalescing
  • occupancy 튜닝
  • shared memory bank conflict 해결 등이 필요해 난이도가 높다.

학습 비용

입문은 쉽지만 고성능 CUDA 커널 작성은 연구 수준의 역량을 요구함


10. CUDA와 관련 기술 비교

기술 장점 단점
CUDA 최고 성능, 생태계 풍부 NVIDIA 종속
OpenCL 다중 벤더 지원 성능/편의성 떨어짐
HIP(AMD) CUDA 호환성 생태계 작은 편
SYCL 차세대 표준 후보 성숙도 부족

CUDA와 생태계의 최적화 수준은 경쟁자들을 압도한다.


11. CUDA의 미래

  • H100, B100 등 차세대 GPU는 Tensor Core 중심으로 이동
  • Warp-level primitive 강화(shuffle, reduction)
  • AI workload에 맞춘 아키텍처 진화
  • CUDA 그래프(CUDA Graphs) 활용 증가
    → 수백 개의 커널 호출 오버헤드를 하나로 묶어 성능 극대화

CUDA는 GPU 컴퓨팅의 현재이자 미래다.

※주식 사라

반응형

'인공지능' 카테고리의 다른 글

임베딩(Embedding)  (0) 2025.12.03
AI 강의  (0) 2025.11.24
A2A(Agent2Agent) protocol  (0) 2025.11.19
MCP(Model Context Protocol) - AI 시대의 새로운 표준 인터페이스  (0) 2025.11.19
RAG(Retrieval-Augmented Generation)  (0) 2025.11.18

+ Recent posts