2. CUDA 시스템 소개
CUDA = Compute Unified Device Architecture, from NVIDIA
Computer graphics
현실과 똑같은 이미지
- 복잡한 모델
- 물리학, 광학 법칙 적용
- 부드러운 동작(motion) 생성
게다가, (매우 빠르게)
- 실시간 처리 목표 -> 영화 “매트릭스” 시리즈
결국, 괴물 하드웨어 사용
- 괴물 하드웨어를 계산용으로 사용하자!
- 대규모 병렬 컴퓨팅 MPC로 발전
3D 그래픽스 파이프 라인
병렬 처리를 도입
반도체 기술의 발전
무어의 법칙에 따라 더 많은 트랜지스터 -> 더 많은 병렬처리
GPGPU의 도입
GPGPU: General Purpose Graphics Processing Unit
CUDA
Compute Unified Device Architecture
- 2006년, NVIDIA 전용으로 출시
범용 general purpose 프로그래밍 모델
- GPU에서 대규모 thread를 실행
- GPU = 대규모 병렬 처리 코프로세서 massively data parallel co-processor
- 모델 = 디바이스 / 컴퓨터 구조 + 프로그래밍 언어 + 컴파일러 + …
GPU를 범용으로 사용하는 toolkit으로 구성
- CUDA 드라이버 -> GPU 구동
- CUDA 라이브러리 -> API함수들
- GPU기능을 직접 제어 가능 -> 최고 효율 획득
CUDA의 구성
Super computer
가장 빠른 컴퓨터들
- 초당 1조번 이상 계산
- 초당 1000조 번 -> Peta 급
특징 : 계산 속도를 높이기 위해서
- CPU/GPU 1000개 이상을 동시 사용
- 액화 질소 냉각, 건물 1개 층 이상
용도 : 엄청난 계산이 꼭 필요한 분야
- 기상대 (일기 예보)
- 과학 계산 (물리학, 분자생물학)
- 시뮬레이션 (핵폭발, 태풍) 등등
FLOPS
FLOPS : Floating-point Operations per Second
- 컴퓨터의 성능을 나타내는 지표 중 하나
- 초당 floating-point operation 횟수
PC CPU의 최대 성능은 약 1TFLOPS
NVLink, SLI, Crossfire 기술
- NVLink : NVIDIA link
- SLI : Scalable Link Interface, from NVIDIA
- Crossfire Technology, from AMD(former ATI)
- GPU 2 ~ 4개를 병렬 연결
- 1개의 GPU 처럼 작동 가능
또 다른 시도
- 암호 화폐 채굴기 crypto mining machine
- PCI Express 버스로 GPU 연결 가능
그래서 CUDA로 뭘 할 수 있는가?
- 이미지 처리
- 필터 적용: CUDA를 사용하여 이미지에 다양한 필터(예: 가우시안 블러, 샤프닝, 소벨 엣지 디텍션 등)를 적용하는 프로젝트.
- 이미지 변환: 이미지의 회전, 크기 조정, 컬러 공간 변환 등을 CUDA로 구현.
- 과학적 계산
- N-Body 시뮬레이션: 천체 물리학에서 많은 물체들이 중력 상호작용을 하는 시뮬레이션.
- 행렬 연산 가속화: 대규모 행렬의 곱셈, 덧셈 등의 연산을 CUDA로 가속화.
- 기계 학습
- 딥러닝 모델 가속화: CUDA를 이용해 신경망 훈련 및 추론 속도 개선.
- K-Means 클러스터링: 대규모 데이터셋에 대해 K-Means 알고리즘을 CUDA로 가속화.
- 컴퓨터 비전
- 실시간 객체 추적: 비디오 스트림에서 객체를 실시간으로 추적하는 알고리즘을 CUDA로 구현.
- 얼굴 인식: 얼굴 인식 알고리즘을 CUDA로 최적화하여 성능 향상.
- 게임 개발
- 물리 엔진 가속화: 게임 내 물리 연산(충돌 감지, 강체 역학 등)을 CUDA로 가속화.
- 실시간 광선 추적: CUDA를 사용하여 실시간으로 고품질 그래픽을 렌더링.
- 데이터 분석
- 빅데이터 처리: CUDA를 사용하여 대규모 데이터셋의 통계 분석 및 데이터 마이닝 알고리즘 구현.
- 실시간 스트리밍 데이터 분석: 실시간으로 들어오는 데이터 스트림을 분석하고 시각화.
- 생물 정보학
- 유전자 서열 정렬: 대규모 유전자 서열 데이터를 빠르게 정렬 및 분석.
- 단백질 구조 예측: 단백질의 3차원 구조를 예측하는 알고리즘을 CUDA로 가속화.
- 신호 처리
- FFT(고속 푸리에 변환): 신호 처리에서 자주 사용되는 FFT 알고리즘을 CUDA로 가속화.
- 음성 인식: 음성 신호를 분석하고 인식하는 알고리즘을 CUDA로 최적화
This post is licensed under CC BY 4.0 by the author.