Tensorflow 1.x 대는 CUDA 10.x 버젼대만,
Tensorflow 2.x 대는 CUDA 11.x 만 호환이 됨. 게다가 RTX 3090 은 CUDA 11 미만의 버젼을 호환하지 않기 때문에 3090 에서 tf 1 코드를 사용할 수가 없다.
2080 Ti 에서 tf1, tf2 모두를 테스트하기 위해 CUDA 10.x, CUDA 11.x 버젼을 모두 설치하고자한다.
출처 : https://m31phy.tistory.com/125
2) 다른 버전의 CUDA 인스톨
만약 다운로드를 받은 cuda의 runfile이 "cuda-9.1.run"일 경우 다음과 같은 명령어를 입력하여, cuda를 설치하자.
$sudo sh cuda-9.1.run --silent --toolkit --toolkitpath=/usr/local/cuda-9.1
각각의 옵션은 아래와 같다.
• --silent: interactive prompt 없이 silent mode 내에서 설치됨
• --toolkit: toolkit만 설치
• --toolkitpath: cuda toolkit이 설치될 경로를 명시함
인스톨을 하고나면, 다른 버전의 cuda들이 설치된 경로는 아래와 같다: /usr/local/cuda-x.x
예를들어, 만약 cuda-8.0, 9.0, 9.1 버전이 설치되었다면, /usr/local 디렉토리 내에는 아래와 같이 cuda 디렉토리가 존재한다.
$ ls /usr/local |grep cuda
cuda-8.0 cuda-9.0 cuda-9.1
※ cuda installer는 /usr/local/cuda 디렉토리를 symbolic link한다.
- 일반적으로 TesnorFlow를 비롯한 프로그램들은 cuda에 필요한 파일들을 찾을 때 /usr/local/cuda를 먼저 찾는다. 따라서, 자신이 필요한 CUDA 버전을 사용하기 위해선, 먼저 symbolic link된 /usr/local/cuda 디렉토리를 지운 후, 자신이 원하는 cuda 버전의 directory로 다시 symbolic link를 업데이트 하면 된다.
$ cd /usr/local
$ sudo rm cuda
$ sudo ln -s cuda-10.0 cuda
→ /usr/local/cuda를 지운 후, cuda-10.0 버전으로 다시 /usr/local/cuda로 symlink를 건다
이때, 아래와 같이 ~./bashrc에 아래의 명령어를 입력하자.
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
export PATH=$PATH:/usr/local/cuda/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda
※ TensorFlow의 경우 LD_LIBRARY_PATH 환경변수가 나타나는 위치 내에서 TensorFlow가 필요한 CUDA 버전과 매칭이 되는 라이브러리를 찾는다. 이때 만약 LD_LIBRARY_PATH가 다음과 같다고 가정을 하자.
/usr/local/cuda/lib64:/usr/local/cuda-10.0/lib64:/usr/local/cuda-8.0/lib64
그렇다면, default로 설정된 cuda, cuda-10.0, cuda-8.0 순으로 cuda를 찾는다. 따라서, 만일 CUDA 8.0 라이브러리 파일에 의존하는 어떤 것을 실행시켰을 경우, 처음에는 /usr/local/cuda에서 확인을 하고, 그 후에는 /usr/local/cuda-10.0에서 확인을 한다. 그 다음, /usr/local/cuda-8.0에서 확인을 한 후 실행한다
※ Cuda의 환경변수 확인: $env | grep -i cuda
※ 추가적인 확인 필요
다른 버전의 CUDA를 사용하기 위해서, 단순히 두 개의 환경변수인 PATH와 LD_LIBRARY_PATH를 조작하면 되는가?
가령, cuda 10.0과 cuda-9.2를 사용한다고 가정했을 때, 다음과 같이 두 환경변수를 변경함으로써 사용할 cuda를 지정할 수 있다.
- CUDA-10.0를 사용할 경우
export PATH=$PATH:/usr/local/cuda-10.0/bin
export CUDADIR=/usr/local/cuda-10.0
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-10.0/lib
- cuda-9.2를 사용할 경우
export PATH=$PATH:/usr/local/cuda-9.2/bin
export CUDADIR=/usr/local/cuda-9.2
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-9.2/lib
'ML or DL' 카테고리의 다른 글
[USAD] 논문 리뷰 (0) | 2021.10.26 |
---|---|
Optimizer 정리 (0) | 2021.09.15 |
[Loss 함수] loss 함수의 종류 및 비교, 사용 (0) | 2021.09.14 |
[모델 배포하기(2/2)] TF-Serving 예제 (0) | 2021.09.06 |
Scaler 정리 (0) | 2021.09.01 |