본문 바로가기
STUDY/YOLO

gpu설치

by brown_board 2023. 1. 5.
728x90

1. 그래픽 카드 드라이버 설치

$ ubuntu-drivers devices

470을 recommended 하고 있으므로 470설치합니다.

$ sudo add-apt-repository ppa:graphics-drivers/ppa
$ sudo apt update
$ sudo apt-get install nvidia-driver-470
$ reboot

비밀번호 8자리를 설정합니다.

$ sudo reboot

그러면 위와 같은 화면이 나옵니다.
Enroll MOK -> View Key 0 -> ESC 클릭 -> Continue -> password: 아까 설정한 비밀번호 -> OK -> reboot

$ nvidia-smi

470 드라이버설치된것과 동시에 cuda 11.4가 설치 됩니다.

 

2. cuda-10.2 설치

기존 cuda삭제

$ sudo apt-get --purge remove "*cublas*" "cuda*"
$ sudo autoremover
$ reboot

했는데 

음... 제거되는 게 없다고 뜨는 데 nvidia-smi를 입력했을 때 cuda는 11.4버전이다.
$ find / -name "cuda*"  > out
$ less out
로 찾아봐도 11.4버전은 안보인다. 그래서 그냥 재설치하였습니다.

https://developer.nvidia.com/cuda-toolkit-archive

 

CUDA Toolkit Archive

Previous releases of the CUDA Toolkit, GPU Computing SDK, documentation and developer drivers can be found using the links below. Please select the release you want from the list below, and be sure to check www.nvidia.com/drivers for more recent production

developer.nvidia.com

공식 사이트에 접속합니다.

$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
$ sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
$ wget https://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb
$ sudo dpkg -i cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb
$ sudo apt-key add /var/cuda-repo-10-2-local-10.2.89-440.33.01/7fa2af80.pub
$ sudo apt-get update

명령어 중에 맨 마지막 줄 빼고 입력합니다.

# CUDA 10.2 설치 (명령어 중 맨 마지막 줄은 cuda-10-2를 꼭 붙여야함 아니면 여러개 설치되는 걸로 알고 있습니다)
$ sudo apt-get -y install cuda-10-2

$ sudo gedit ~/.bashrc

가장 아래에 다음을 추가

export PATH=$PATH:/usr/local/cuda-10.2/bin
export CUDADIR=/usr/local/cuda-10.2
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-10.2/lib64

값만 넣지말고 실제로 경로에 들어가 파일명 맞는지 확인합니다. cuda-10.2버전이 아니라면 버전명과 폴더명이 다를 수도 있습니다.

$ sudo reboot
$ nvidia-smi

위와 같이 cuda버전이 10.2가 된 것을 확인할 수 있습니다.
이제와서 보니깐 드라이버 440을 깔아야 RTX 2060 SUPER를 제대로 인식하는 것 같다. 처음 알았네

3. cudnn 8.0.3 설치

https://developer.nvidia.com/cudnn

 

CUDA Deep Neural Network

cuDNN provides researchers and developers with high-performance GPU acceleration.

developer.nvidia.com

공식 다운로드 사이트에 접속하고 로그인을 합니다.

 

위의 파일을 다운 받고 압축을 해제합니다.
tar -xvf cudnn-10.2-linux-x64-v8.0.3.33.tgz
 

cuDNN header 파일들을  local/cuda/cuda-10.2/include 폴더에 붙여 넣어주는 명령어입니다.

sudo cp ./cuda/include/* /usr/local/cuda-10.2/include

 

 

cuDNN Library 파일들을  local/cuda/cuda-10.2/include 폴더에 붙여 넣어주는 명령어입니다.

sudo cp -P ./cuda/lib64/* /usr/local/cuda-10.2/lib64

 

 

라이브러리 실행 권한을 부여합니다.

 

sudo chmod a+r /usr/local/cuda-10.2/lib64/libcudnn*

 

cudnn 버전을 확인합니다.

cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

8.0.3버전에 맞게 표시가 됩니다.

 

4. opencv 4.5.1 빌드

https://ellun.tistory.com/333

 

딥러닝을 위한 cuda 지원 opencv 설치 및 활용 방법 (with Python + Windows 10)

opencv는 c++ 기반의 영상, 이미지 처리 오픈소스 라이브러리로 많이 활용되고 있는데요. 몇 년전부터 딥러닝 기술이 많이 이루어지면서 대용량 데이터 학습 및 처리를 위해 속도 향상을 위해 GPU의

ellun.tistory.com

위의 블로그를 참고하여 opencv4.2버전 이상인 4.5버전을 사용하여 cuda 가속을 사용할려고 했다. 전부 다하고 결과만 따졌을 때는 적용이 안됬다. 그러므로 4. opencv 4.5.1 빌드 부분은 하거나 말거나 마음대로 하시라!

-기존 버전 확인

pkg-config --modversion opencv

삭제 명령어
$ sudo apt-get purge libopencv* python-opencv
$ sudo apt-get autoremove
$ sudo find /usr/local/ -name "*opencv*" -exec rm -i {} \;
패키지 업데이트
$ sudo apt-get update
$ sudo apt-get upgrade
opencv 관련 패키지

  • build-essential: C/C++ 컴파일러와 관련 라이브러리, make 같은 도구들이 포함
  • cmake: 컴파일 옵션이나 빌드된 라이브러리에 포함시킬 OpenCV 모듈 설정 등을 위해 필요 (나는 앞에서 미리 깔아서 이건 안했음)
  • pkg-config: 프로그램 컴파일 및 링크시 필요한 라이브러리에 대한 정보를 메타파일(확장자가 .pc 인 파일)로부터 가져오는데 사용됨. 터미널에서 특정 라이브러리를 사용한 소스코드를 컴파일시 필요한 컴파일러 및 링커 플래그를 추가하는데 도움이 됨.
  • libjpeg-dev, libtiff5-dev, libpng-dev : 특정 포맷의 이미지 파일을 불러오거나 기록하기 위해 필요
  • libavcodec-dev, libavformat-dev, libswscale-dev, libxvidcore-dev, libx264-dev, libxine2-dev: 특정 코덱의 비디오 파일을 읽어오거나 기록하기 위해 필요
  • libv4l-dev, v4l-utils: Video4Linux 패키지는 리눅스에서 실시간 비디오 캡처를 지원하기 위한 디바이스 드라이버와 API 포함
  • libgstreamer1.0-dev, libgstreamer-plugins-base1.0-dev: 비디오 스트리밍을 위한 라이브러리
  • libgtk2.0-dev: highgui 모듈을 사용하여 자체적으로 윈도우 생성하여 이미지나 비디오를 보여줄 수 있음. 윈도우 생성 등의 GUI를 위해 gtk 또는 qt를 선택해서 사용 가능. 여기서는 gtk2를 지정함 (다른 가능한 패키지: libgtk-3-dev, libqt4-dev, libqt5-dev)
    3.2.0
  • mesa-utils, libgl1-mesa-dri, libgtkgl2.0-dev, libgtkglext1-dev: OpenGL 지원하기 위해 필요
  • libatlas-base-dev, gfortran, libeigen3-dev: OpenCV 최적화하기 위해 필요
  • python2.7-dev, python3-dev: OpenCV-Python 바인딩 위해 필요
  • python-numpy, python3-numpy: numpy는 매트릭스 연산 등을 빠르게 처리 가능

$ sudo apt-get install build-essential cmake (#이거는 앞에서 cmake 깔아서 안함.)
$ sudo apt-get install pkg-config
$ sudo apt-get install libjpeg-dev libtiff5-dev libpng-dev
$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libxvidcore-dev libx264-dev libxine2-dev
$ sudo apt-get install libv4l-dev v4l-utils
$ sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
$ sudo apt-get install libgtk2.0-dev
$ sudo apt-get install mesa-utils libgl1-mesa-dri libgtkgl2.0-dev libgtkglext1-dev
$ sudo apt-get install libatlas-base-dev gfortran libeigen3-dev
$ sudo apt-get install python2.7-dev python3-dev python-numpy python3-numpy

이제 opencv를 빌드하자.
먼저 디렉터리를 생성한다.

$ mkdir opencv
$ cd opencv

그 후 opencv와 opencv-contrib를 다운받는다.

$ wget -O opencv.zip https://github.com/opencv/opencv/archive/4.5.1.zip

$ unzip opencv.zip

 $ wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.5.1.zip

$ unzip opencv_contrib.zip

다음으로 opencv 디렉터리 안으로 이동해서 빌드할 디렉터리 생성.

$ cd opencv-4.5.1
$ mkdir build
$ cd build

cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D OPENCV_ENABLE_NONFREE=OFF \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv/opencv_contrib-4.5.1/modules \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D BUILD_EXAMPLES=ON \
-D BUILD_DOCS=OFF \
-D BUILD_SHARED_LIBS=ON \
-D BUILD_opencv_python2=OFF \
-D BUILD_opencv_python3=ON \
-D PYTHON_DEFAULT_EXECUTABLE=$(which python3) \
-D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-10.2 \

-D BUILD_NEW_PYTHON_SUPPORT=ON \
-D WITH_CUDA=ON \
-D WITH_CUBLAS=ON \
-D WITH_CUDNN=ON \
-D CUDNN_LIBRARY=/usr/local/cuda-10.2/lib64/libcudnn.so.8.0.3 \
-D CUDNN_INCLUDE_DIR=/usr/local/cuda-10.2/include \
-D CUDA_FAST_MATH=1 \
-D OPENCV_DNN_CUDA=ON \
-D CUDA_ARCH_BIN=7.5 \
-D CUDA_ARCH_PTX=7.5 \
-D WITH_VTK=ON \
-D WITH_OPENCL=ON \
-D OPENCV_SKIP_PYTHON_LOADER=ON \
-D PYTHON_EXECUTABLE=~/anaconda3/envs/yolov8/bin/python3 \
-D PYTHON3_INCLUDE_DIR=~/anaconda3/envs/yolov8/include/python3.7m \
-D PYTHON3_NUMPY_INCLUDE_DIRS=~/anaconda3/envs/yolov8/lib/python3.7/site-packages/numpy/core/include \
-D PYTHON3_PACKAGES_PATH=~/anaconda3/envs/yolov8/lib/python3.7/site-packages \
-D PYTHON3_LIBRARY=~/anaconda3/envs/yolov8/lib/libpython3.7m.so \
-D PYTHON_LIBRARIES=~/anaconda3/envs/yolov8/lib/python3.7 ../

---------------------------------------------------------------------------------------------------------------------------------------------------------------

-D PYTHON_DEFAULT_EXECUTABLE=$(which python3) 이거는 python(for build) 메뉴가 python2로 설정되어 있어서 입력해주었다.
-빨간색글씨는 사용자의 PC에 맞는 파일 경로에 맞게 수정해야함. 

-주황색 줄은 자신의 GPU에 맞게 바꿔야함. 
https://en.wikipedia.org/wiki/CUDA

 

CUDA - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search Parallel computing platform and programming model CUDA (or Compute Unified Device Architecture) is a parallel computing platform and application programming interface (API) that allows

en.wikipedia.org

이를 확대하면

GeForce GTX Titan X의 경우 Maxwell이며 5.2이다.
-D CUDA_ARCH_BIN=7.5 \
-D CUDA_ARCH_PTX=7.5 \
그러면 여기서 7.5대신에 5.2로 바꿔야한다.

이렇게 cmake 명령어를 다 입력하면
이러니깐 
-- Configuring done
-- Generating done

이런식으로 화면이 떠야 ok이다. 아닐 경우 cmake 명령어 구문에 이상이 있다는 의미이다. 파일 경로 등을 수정해야한다.

통과가 되면

$ cat /proc/cpuinfo | grep processor

를 실행시켜 cpu의 코어 수를 확인합니다. 

필자의 코어 수는 4개이므로

$ time make -j4

를 눌러 빌드합니다.

$ sudo make install
$ cat /etc/ld.so.conf.d/*
를 입력해서 /usr/local/lib가 있는지 확인한다. 있으면 $ sudo ldconfig를 해주면 완료입니다.


5. ubuntu 18.04 ros melodic 설치

https://brownboard.tistory.com/20

저번에 정리해둔게 있다.

1) Setup your sources.list

$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

2) Set up your keys

$ sudo apt install curl
$ curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -

3) ROS 설치

$ sudo apt update
$ sudo apt install ros-melodic-desktop-full

4) Environment setup

$ echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
$ source ~/.bashrc

5) Dependencies for building packages

$ sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
$ sudo apt install python-rosdep
$ sudo rosdep init
$ rosdep update

9.node 테스트

https://robertchoi.gitbook.io/ros/install

728x90

'STUDY > YOLO' 카테고리의 다른 글

ubuntu 프젝과정 최종정리  (0) 2022.06.06
우분투 opencv 정리  (0) 2022.06.04
ubuntu에서 살아남기 yolo_cuda편  (0) 2022.05.30
우분투 그래픽드라이버 cuda cudnn  (0) 2022.05.28
우분투 yolo 환경구축  (0) 2022.05.28

댓글