wsl2에 3.11.10 파이썬으로 가상환경을 구성하였다.
목표: nvidia driver, computer compatibility, cuda, cudnn의 버전을 확인하고 특정 버전으로 모두 구성한다.


https://developer.nvidia.com/cuda-gpus
gpu: rtx 4060 laptop


nvidia-smi에서는 해당 드라이버가 지원가능한 쿠다 버전을 의미한다.(아래 링크 참조)
https://velog.io/@paradeigma/WSL2에-tensorflow-gpu-cudnn-cuda-nvidia-driver-설치하기
따라서 cuda는 설치가 안되어 있는 것이고, 그 의미는 cudnn도 없다는 것이다.
cuda multi version 관리

설치 파일 형식: .deb 패키지 (Debian 기반의 패키지)
설치 방식: apt 패키지 매니저를 통해 설치
장점:
설치가 간편하며, Ubuntu나 Debian 등 Debian 기반 배포판의 패키지 관리 시스템과 호환됩니다.설치와 함께 의존성도 자동으로 관리되며, 패키지 업데이트도 apt로 관리할 수 있습니다.
단점:
패키지 매니저에 따라 의존성 문제가 발생할 수 있습니다.
일부 구성이 자동으로 설정되므로, 세부 설정을 수동으로 조정하기 어려울 수 있습니다.
설치 파일 형식: run 파일 (자체 실행형 설치 파일)
설치 방식: 스크립트를 실행해 수동 설치
장점:
설치 과정을 사용자가 직접 제어할 수 있어, 커스터마이징이 용이합니다.
CUDA와 NVIDIA 드라이버를 독립적으로 설치할 수 있어 특정 요구에 맞게 조정할 수 있습니다.
단점:
설치와 업데이트가 복잡하며, 의존성 관리도 수동으로 해야 합니다.
패키지 매니저를 통하지 않으므로 업데이트가 자동화되지 않습니다.
sudo wget https://developer.download.nvidia.com/compute/cuda/12.4.1/local_installers/cuda_12.4.1_550.54.15_linux.run

여기서 쿠다 툴킷만 설치해도 괜찮다.
1) permission denied
wget https://developer.download.nvidia.com/compute/cuda/12.4.1/local_installers/cuda_12.4.1_550.54.15_linux.run
해당 코드를 작성하니 permission denied가 났다. 그래서, sudo를 붙여야지만 다운이 받아진다.
=> 내가 /usr/local 에 다운을 받다보니 권한이 필요했다. /home/paradeigma에서 받으면 sudo 권한이 필요없다.
nvcc --version

$ vi ~/.bashrc
가장 아랫줄에 2줄 추가
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
$ source ~/.bashrc
$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2024 NVIDIA Corporation
Built on Thu_Mar_28_02:18:24_PDT_2024
Cuda compilation tools, release 12.4, V12.4.131
Build cuda_12.4.r12.4/compiler.34097967_0
위의 과정을 11.8로 반복
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
sudo sh cuda_11.8.0_520.61.05_linux.run
이후 multiversion을 관리할거면 simbolic link를 잘 설정해야 하는데 아래의 글을 참조하면 도움이 될 것이다.
https://xoft.tistory.com/86
이 때 조심할 것은 심볼릭 링크를 override 할 것이냐는 물음에 no를 입력하는 것이다. 이미지는 yes가 활성화되어 있는데 이미지 캡쳐가 잘못된 것이다.

출처: https://gooopy.tistory.com/134

gcc 라는 것이 cuda를 설치할 때 필요하다. 이 때 cuda 12.4는 gcc 13.2.0이 필요하지만, 11.8은 11이 필요하다
https://stackoverflow.com/questions/6622454/cuda-incompatible-with-my-gcc-version
일단 여기에서 cuda multi-version은 멈추고, 추후에 cuda 를 더 깔 때 생각하기로 한다.
(24.10.29)
gcc 또한 심볼릭 링크만 잘 관리하면 된다. 이에 대한 글은 하단된다. 이에 대한 설명은 하단을 참조하기로 한다.
https://velog.io/@paradeigma/wsl-cuda-다중-버전-관리
gcc 호환성 오류 문제
예시1) Failed to verify gcc version.
예시2) [ERROR]: unsupported compiler version.
해결 방안 : gcc, g++ 버전에 맞는 것을 다운 받고 심볼릭 링크 관리
$ sudo apt update # apt 패키지 목록/버전 업데이트
$ sudo apt install build-essential # gcc설치에 필요한 패키지 설치
$ sudo apt-get install manpages-dev # gcc설치에 필요한 패키지 설치
$ sudo apt install gcc-11 g++-11 # 필요한 gcc 버전으로 설치
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 11 # gcc변경 가능하도록 등록
$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 11 # gcc변경 가능하도록 등록
sudo update-alternatives --config gcc
sudo update-alternatives --config g++
나는 11.8과 12.4를 설치하였다. 이에 대한 심볼릭 링크를 관리하기 위해서 아래의 코드를 사용하였다.
sudo update-alternatives --install /usr/local/cuda cuda /usr/local/cuda-11.8 118
sudo update-alternatives --install /usr/local/cuda cuda /usr/local/cuda-12.4 124
sudo update-alternatives --config cuda
여기서 cuda 버전을 관리한다.
설치 방법은 아래 문서에서 추출해왔다.
https://devskim.tistory.com/44
버전 정보는 아래 문서에서 추출해왔다.
https://docs.nvidia.com/deeplearning/cudnn/latest/reference/support-matrix.html
wget https://developer.download.nvidia.com/compute/cudnn/9.5.1/local_installers/cudnn-local-repo-ubuntu2404-9.5.1_1.0-1_amd64.deb
sudo dpkg -i cudnn-local-repo-ubuntu2404-9.5.1_1.0-1_amd64.deb
sudo cp /var/cudnn-local-repo-ubuntu2404-9.5.1/cudnn-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cudnn

참조:
https://hjh1023.tistory.com/59
tar -xvf cudnn-linux-x86_64-8.6.0.163_cuda11-archive.tar.xz
sudo cp cudnn-linux-x86_64-8.6.0.163_cuda11-archive/include/cudnn*.h /usr/local/cuda-11.8/include
sudo cp -P cudnn-linux-x86_64-8.6.0.163_cuda11-archive/lib/libcudnn* /usr/local/cuda-11.8/lib64
sudo chmod a+r /usr/local/cuda-11.8/lib64/libcudnn*
설치 경로
https://developer.nvidia.com/tensorrt/download/10x
공식 문서
https://docs.nvidia.com/deeplearning/tensorrt/install-guide/index.html#installing-tar
가상환경에서 설치
python3 -m pip install --upgrade tensorrt
python3 -m pip install --upgrade tensorrt-lean
python3 -m pip install --upgrade tensorrt-dispatch
1) 특징
모든 필요 라이브러리 포함: PyPI에서 제공하는 TensorRT Python 패키지는 필요한 CUDA 라이브러리를 포함하여 설치되므로, 별도의 CUDA 또는 TensorRT C++ 라이브러리 설치가 필요 없습니다.
2) 단점
C++ 헤더 파일 포함 안 됨: C++ API에 접근하거나 플러그인 컴파일이 필요한 경우 별도의 설치가 필요합니다.
3) 버전 확인
import tensorrt
print(tensorrt.__version__)
assert tensorrt.Builder(tensorrt.Logger())
ubuntu에서 공식 문서 상의 코드를 실행할 예정이다. 이 또한 환경 변수를 관리하면서 설치를 하면 된다. 다만 cuda 11.8 / 12.4가 tensorrt 10.5와 모두 호환 되는 것으로 일단 파악 되어서 tensorrt는 단일로 로컬에 설치하고서 호환성을 실험해보기로 한다.