NVIDIA 프로그램 설치과정에서 nvidia-smi
, nvcc
등과 같은 여러가지 프로그램을 확인하는 명령어가 존재한다. 이러한 명령어가 어느 상황에서 쓰이는지 확인해보자
nvidia-smi
NVIDIA-Dirver를 설치후에 드라이버의 환경을 확인하기 위해서 실행하는 명령어
CUDA의 버전과 GPU의 메모리 사이즈 등이 나와있다.
nvcc --version
/ nvcc -V
CUDA(CUDA Toolkit)을 설치한 후에 버전을 확인하기 위한 명령어이다.
release 버전을 확인할 수 있다.
위의 두 사진을 보면 모두 CUDA와 관련된 버전을 확인할 수 있다.
CUDA (Driver) library → 11.6
NVIDIA Driver과 함께 설치되는 드라이버로 저수준의 CUDA 프로그래밍을 위해서 사용하는 라이브러리이다.
CUDA (Runtime) library → 11.4
CUDA Toolkit과 함께 설치되는 라이브러리로 고수준 CUDA 프로그래밍을 위해서 사용하는 라이브러리이다.
위의 두 라이브러리는 기능적으로 겹치는 부분이 많지만, 대체로 CUDA Runtime API를통해서 대부분의 문제를 더욱 간편하게 해결할 수 있다고 한다.
→ 어떤이의 기술블로그에 따르면 CUDA 코딩을 할때, CUDA Driver library로 짠 코드는 하나도 없을 정도로 문제 해결을 휘해선 CUDA Runtime library의 활용이 절대적이라고 한다.
CUDA Toolkit
NVIDIA의 tool installation 패키지에의해 다운로드 받을 수 있으며, CUDA 프로그램의 컴파일러, CUDA 프로그램을 개발하기 위한 개발 도구 및 라이브러리들이 있다.
NVCC
CUDA를 위한 전용 컴파일러로 gcc와 비슷한 역할을 한다.
PyTorch 구동을 위해 CUDA Toolkit 설치가 필요한가? → 아니다.
PyTorch는 사전에 자동으로 CUDA Toolkit을 설치하게 된다.
위와 같이 환경 자체에 설치가 된다.
NVIDIA Driver 버전과 CUDA Toolkit은 서로 상관이 없는가? → 아니다.
CUDA Toolkit을 설치하기 위해서는 NVIDIA가 설정한 NVIDIA Driver의 최소 버전보다 높아야 한다. 그 이상이라면 설치하는 데에 문제는 없다.
Docker container에서 GPU를 구동하기 위해서는 CUDA Toolkit이 필요한가? → 아니다.
NVIDIA-Driver과 NVIDIA 컨테이너 런타임만 있다면 구동이 가능하다.
Docker에서 GPU를 사용하기 위해서 NVIDIA-docker runtime을 설치해야 하는가? → 그렇다.
–gpus all
****옵션을 활용하기 위해서는 nvidia-docker를 설치해야한다.
docker run -it --gpus all -p 8888:8888 tensorflow/tensorflow:2.7.1-gpu
NVIDIA container 안에서 cuDNN과 NVCC 명령어를 사용할 수 있는가? → 아니다.
컨테이너 안에서는 nvidia-smi
만 사용할 수 있다. cuDNN을 사용하기 위해선 다른 docker 이미지를 사용하면 된다. → 예) nvidia/cuda:10.2-cudnn7-devel-ubuntu18.04
CUDA
CUDA란 NVIDIA에서 만든 GPU 라이브러리. 하드웨어 수준으로 C/C++로 사전에 만들어 일반적인 컴퓨터에서도 쉽고 빠르게 GPU를 사용할 수 있게 만들어진 패키지이다.