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에서만 구동되는 강력한 폐쇄형 생태계

결론

  • 하드웨어와 소프트웨어가 하나로 묶인 거대한 ‘생태계’
  • 개발자가 만든 코드를 실제 실행시키기 위한 ‘번역기’로 이해하면 된다.

Categories:

Updated:

Leave a comment