Post

2. CUDA 시스템 소개

CUDA = Compute Unified Device Architecture, from NVIDIA


Computer graphics

현실과 똑같은 이미지

  • 복잡한 모델
  • 물리학, 광학 법칙 적용
  • 부드러운 동작(motion) 생성


게다가, (매우 빠르게)

  • 실시간 처리 목표 -> 영화 “매트릭스” 시리즈


결국, 괴물 하드웨어 사용

  • 괴물 하드웨어를 계산용으로 사용하자!
  • 대규모 병렬 컴퓨팅 MPC로 발전



3D 그래픽스 파이프 라인

  • 매우 많은 데이터를 단계적으로 처리



병렬 처리를 도입

  • 중요 단계마다 병렬 처리로 가속



반도체 기술의 발전

무어의 법칙에 따라 더 많은 트랜지스터 -> 더 많은 병렬처리



GPGPU의 도입

GPGPU: General Purpose Graphics Processing Unit

  • GPU의 괴물 하드웨어를 계산용으로 사용하는 테크닉



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의 구성

  • 다양한 언어와 라이브러리를 제공 -> 가장 기본은 C/C++ API



Super computer

가장 빠른 컴퓨터들

  • 초당 1조번 이상 계산
  • 초당 1000조 번 -> Peta 급


특징 : 계산 속도를 높이기 위해서

  • CPU/GPU 1000개 이상을 동시 사용
  • 액화 질소 냉각, 건물 1개 층 이상


용도 : 엄청난 계산이 꼭 필요한 분야

  • 기상대 (일기 예보)
  • 과학 계산 (물리학, 분자생물학)
  • 시뮬레이션 (핵폭발, 태풍) 등등



FLOPS

FLOPS : Floating-point Operations per Second

  • 컴퓨터의 성능을 나타내는 지표 중 하나
  • 초당 floating-point operation 횟수


PC CPU의 최대 성능은 약 1TFLOPS



  • 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로 뭘 할 수 있는가?

  1. 이미지 처리
    • 필터 적용: CUDA를 사용하여 이미지에 다양한 필터(예: 가우시안 블러, 샤프닝, 소벨 엣지 디텍션 등)를 적용하는 프로젝트.
    • 이미지 변환: 이미지의 회전, 크기 조정, 컬러 공간 변환 등을 CUDA로 구현.
  2. 과학적 계산
    • N-Body 시뮬레이션: 천체 물리학에서 많은 물체들이 중력 상호작용을 하는 시뮬레이션.
    • 행렬 연산 가속화: 대규모 행렬의 곱셈, 덧셈 등의 연산을 CUDA로 가속화.
  3. 기계 학습
    • 딥러닝 모델 가속화: CUDA를 이용해 신경망 훈련 및 추론 속도 개선.
    • K-Means 클러스터링: 대규모 데이터셋에 대해 K-Means 알고리즘을 CUDA로 가속화.
  4. 컴퓨터 비전
    • 실시간 객체 추적: 비디오 스트림에서 객체를 실시간으로 추적하는 알고리즘을 CUDA로 구현.
    • 얼굴 인식: 얼굴 인식 알고리즘을 CUDA로 최적화하여 성능 향상.
  5. 게임 개발
    • 물리 엔진 가속화: 게임 내 물리 연산(충돌 감지, 강체 역학 등)을 CUDA로 가속화.
    • 실시간 광선 추적: CUDA를 사용하여 실시간으로 고품질 그래픽을 렌더링.
  6. 데이터 분석
    • 빅데이터 처리: CUDA를 사용하여 대규모 데이터셋의 통계 분석 및 데이터 마이닝 알고리즘 구현.
    • 실시간 스트리밍 데이터 분석: 실시간으로 들어오는 데이터 스트림을 분석하고 시각화.
  7. 생물 정보학
    • 유전자 서열 정렬: 대규모 유전자 서열 데이터를 빠르게 정렬 및 분석.
    • 단백질 구조 예측: 단백질의 3차원 구조를 예측하는 알고리즘을 CUDA로 가속화.
  8. 신호 처리
    • FFT(고속 푸리에 변환): 신호 처리에서 자주 사용되는 FFT 알고리즘을 CUDA로 가속화.
    • 음성 인식: 음성 신호를 분석하고 인식하는 알고리즘을 CUDA로 최적화
This post is licensed under CC BY 4.0 by the author.