CUDA
개념
NVIDIA가 만든 ‘병렬 컴퓨팅 플랫폼 및 프로그래밍 모델’
하드웨어 아키텍처 (Hardware Architecture)
- NVIDIA GPU 내부의 병렬 처리 구조 그 자체를 의미
- (그래픽 카드를 살 때 “쿠다 코어가 몇 개냐”라고 묻는 것이 바로 이 하드웨어 단위)
소프트웨어 플랫폼 (Software Platform)
- 개발자들이 쉽게 제어할 수 있도록 돕는 도구
- 하드웨어를 돌리기 위한 명령 체계
CUDA의 주요 특징 (Software Platform)
사용자 친화적
- 개발자가 C++이나 Python같은 언어를 이용하여 GPU 프로그래밍 가능
- 개발자가 쓴 언어를 번역을 하여 GPU에게 알려주는 역할
여러 툴 및 라이브러리 제공
- NVCC (CUDA 컴파일러): C++ 코드를 GPU 기계어로 바꿔주는 핵심 번역기
- Debugger & Profiler (NVIDIA Nsight): 코드가 왜 느린지, 어디서 에러가 나는지 현미경처럼 들여다보는 도구
-
가속 라이브러리 제공
라이브러리 명 용도 (무엇을 도와주나?) cuDNN 딥러닝의 핵심 연산(컨볼루션 등)을 초고속으로 처리 (TensorFlow, PyTorch가 이걸 사용) cuBLAS 기초적인 행렬 및 벡터 연산 (수학 계산의 기본) cuFFT 신호 처리 등에 쓰이는 푸리에 변환 가속 NVCC / NVCOMP 데이터 압축 및 고성능 연산 지원
NVIDIA
- NVIDIA 그래픽 카드에서만 작동
- TensorFlow, PyTorch 같은 프레임워크들이 CUDA에 최적화
| 구분 | 주요 특징 | 상세 내용 |
|---|---|---|
| 하드웨어적 특징 | 병렬 아키텍처 | 수천 개의 CUDA 코어가 동시에 연산을 수행하는 구조 |
| 메모리 계층화 | GPU 전용 메모리(VRAM)를 효율적으로 활용하여 데이터 병목 현상 최소화 | |
| 소프트웨어적 특징 | 표준 언어 확장 | C/C++ 문법에 몇 가지 키워드(예: <<< >>>)만 추가하여 사용 가능 |
| 컴파일러 (NVCC) | 개발자가 짠 코드를 GPU 전용 기계어로 자동 번역 | |
| 풍부한 라이브러리 | 딥러닝(cuDNN), 선형대수(cuBLAS) 등 미리 만들어진 도구 모음 제공 | |
| 생태계적 특징 | GPGPU 실현 | 그래픽 전용이던 GPU를 범용 계산기로 탈바꿈시킨 핵심 기술 |
| 독점적 호환성 | 오직 NVIDIA GPU에서만 구동되는 강력한 폐쇄형 생태계 |
결론
- 하드웨어와 소프트웨어가 하나로 묶인 거대한 ‘생태계’
- 개발자가 만든 코드를 실제 실행시키기 위한 ‘번역기’로 이해하면 된다.
Leave a comment