CUDA 정리

구명규·2023년 8월 23일
0

etc.

목록 보기
4/4
post-thumbnail

  산학인턴을 하며 mmcv 라이브러리를 설치하려다 CUDA 및 PyTorch의 호환성 이슈로 애를 먹던 중, 한 두 번도 아니고 이런 특히 이 친구들의 버전 문제로 날려먹은 시간이 너무 많은 것 같아, 아예 각 잡고 공부해보자 싶어 만든 정리글. 대체 서로 버전 호환성을 맞춰주어야 하는 CUDA, CUDA Toolkit, cuDNN 등의 정체가 무엇인가?


CUDA (Compute Unified Device Architecture)

산업 표준 언어를 통해 GPU의 병렬 처리 알고리즘을 작성할 수 있게 해주어, 개발자들에게 GPU의 높은 진입장벽을 해소해 준 플랫폼 및 API

  GPU에서 수행하는 병렬 처리 알고리즘을 C 프로그래밍 언어를 비롯한 산업 표준 언어를 사용하여 작성할 수 있도록 하는 GPGPU 기술 중 하나(GPU 컴퓨팅에 대한 일종의 컴파일러)로, NVIDIA가 개발해오고 있다. 다른 기술들(ex. OpenCL)에 반해, low-level API의 하드웨어에 있는 고급 기능까지 사용해 성능을 끌어내지만 NVIDIA 이외의 그래픽카드에선 작동하지 않는다.

  GPGPU는 고급 그래픽 프로그래밍 기술 범주에 속했기에, 그래픽 API에 익숙치 않은 일반 개발자들은 GPU를 이용하기 쉽지 않았지만 NVIDIA가 2006년 CUDA 솔루션을 출시하며 그래픽 API를 알지 못하는 개발자들도 GPU를 활용할 수 있게 된 것. 실제로 인공지능 혁명을 견인한 원동력으로도 볼 수 있다.


CUDA Toolkit

CUDA 개발을 위해 필요한 모든 도구와 라이브러리

  CUDA를 실질적으로 개발하고 실행하기 위한 소프트웨어 개발 키트로, CUDA 프로그래밍을 위한 컴파일러(NVCC), GPU 병렬 처리 및 가속 컴퓨팅을 위한 라이브러리, 디버깅 및 최적화 툴, GPU 가속화 알고리즘 등을 포함한다. CUDA를 설치한다는 건 CUDA Toolkit을 설치한다는 것과 사실상 동일한 셈.

NVCC (NVIDIA CUDA Compiler)

  CUDA Toolkit에 포함된 CUDA 전용 C/C++ 컴파일러를 지칭하는 용어로, 일반적인 C/C++ 컴파일러와 CUDA 확장을 모두 지원한다.


cuDNN (CUDA, Deep Neural Network Library)

딥러닝 알고리즘을 가속화하기 위해 설계된 특정 CUDA 라이브러리

  딥러닝에 특화되어, convolution, pooling, normalization, activation 등과 같은 DNN의 기본적인 루틴을 빠르게 구현할 수 있도록 해주는 라이브러리이며, Tensorflow, Pytorch, Theano 등 대중적으로 널리 사용되는 딥러닝 프레임워크를 가속화해준다.


Version Dependency Hierarchy

NVIDIA GPU version ($ nvidia-smi)
\rarr NVIDIA GPU Driver version ($ nvidia-smi)
\rarr CUDA (Toolkit) version ($ nvidia-smi (Driver API) / $ nvcc --version (Runtime API))
\rarr cuDNN, Pytorch, Tensorflow, ...


References

profile
K'AI'ST 학부생까지의 기록

0개의 댓글