2.5.11. CUDA & cuDNN

CUDA ("Compute Unified Device Architecture", 쿠다)는 그래픽 처리 장치(GPU)에서 수행하는 (병렬 처리) 알고리즘을 C 프로그래밍 언어를 비롯한 산업 표준 언어를 사용하여 작성할 수 있도록 하는 GPGPU 기술입니다. CUDA는 엔비디아(NVIDIA)가 개발해오고 있으며 이 아키텍처를 사용하려면 NVIDIA GPU와 특별한 스트림 처리 드라이버가 필요합니다. CUDA는 G8X GPU로 구성된 지포스 8 시리즈급 이상에서 동작합니다. CUDA 플랫폼은 컴퓨터 커널의 실행을 위해 GPU의 가상 명령 집합과 병렬 연산 요소들을 직접 접근할 수 있는 소프트웨어 계층입니다.

딥러닝을 도와주는 여러 라이브러리도 CUDA와 함께 제공됩니다. cuDNN, Convolution 연산을 더 빠르게 만들어주는 cuFFT, 선형대수 모듈인 cuBLAS 등 사실상 필요한 라이브러리들은 대부분 구현되어 있습니다.

NVIDIA 이외의 그래픽카드에서 작동하지 않습니다. 따라서 NVIDIA 외의 그래픽카드에 병렬 연산을 시키고 싶다면 OpenCL을 사용하면 됩니다. CUDA와 문법이나 메모리 모델은 비슷한데 코딩하기는 이 쪽이 조금 더 어렵다고 합니다. 애플, 인텔, AMD, ARM등 에서는 NVIDIA를 견제하기 위해 OpenCL을 밀고 있습니다.

Last updated