※ rtx 3090, ubuntu 20.04, docker, tensorflow 사용
맨 처음 tensorflow-gpu의 버전부터 바꿔보기, 2.4를 사용하면 똑바로 gpu가 인식되는 경우가 있다.
$ pip3 install tensorflow-gpu==2.4.0
해당 에러로 도커 내부의 tensorflow에서 gpu가 잡히지 않는다.
필요로 하는 것은 11 버전인데 cudnn을 깔면 8이나 10으로 설치되었기 때문이다.
뒤에 나와있는 숫자를 다 11로 바꿔주면 된다.
※ 이미 cudnn이 다 깔려있다면 3번으로 가서 숫자만 바꾸면 된다.
[해결방법]
1. nvidia 홈페이지(밑의 링크)에 가서, 로그인 후 cudnn을 본인의 환경에 맞게 다운로드 후 압축 해제
https://developer.nvidia.com/cudnn
$ tar xvzf [cudnn tgz 파일명]
( 파일을 풀면 cuda 폴더가 생성됨 )
2. 경로에 맞게 파일 복사, 이동
- 이 때 도커 컨테이너 내부 경로로 파일을 이동해야 한다.
$ cp cuda [본인이 연결한 도커 컨테이너 경로]
- 본인의 도커 컨테이너에 접속 후 옮긴 cuda 폴더가 있는 경로까지 이동
$ docker exec -it [컨테이너명] /bin/bash
$ cd [cuda 폴더 있는 경로]
$ cp lib64/* /usr/local/cuda/lib64
$ cp include/* /usr/local/cuda/include
$ chmod a+r /usr/local/cuda/lib64/* /usr/local/cuda/include/*
3. 파일들의 cuda 버전을 맞춰주기
에러 뜰 때 could not load dynamic library, libcudart.so.11.0 not found 이런 식으로 파일명이랑, 버전을 다 알려주니까 알려주는 버전에 맞게 잘 바꿔보기.
위의 버전으로 다 들고 와야하는데 파일이 없다고 하는 거니까 저거에 맞게 다 바꿔준다.
먼저 파일들이 어디 있는지부터 알아야 한다
- 가장 상단의 폴더 경로로 이동
$ cd /
- 해당 파일들이 어디 존재하는지 검색 (그러면 경로가 나옴 --> 해당 경로에 있는 파일들의 이름을 바꿔주면 됨)
$ find -name libcud*
$ mv /usr/local/cuda/lib64/[error난 파일명].so.* /usr/local/cuda/lib64/[error난 파일명].so.11.x[본인 버전에 맞게]
위의 libcudart.so.11.0처럼 libcudart를 load할 수 없다고 뜨면
ex) mv /usr/local/cuda/lib64/libcudart.so.* /usr/local/cuda/lib64/libcudart.so.11.0
'Setting, Error > GPU' 카테고리의 다른 글
ubuntu cache 메모리 지우기 (0) | 2022.07.07 |
---|---|
실시간 nvidia-smi 확인하기 (0) | 2022.06.20 |
[nvtop] GPU 사용량 확인 (0) | 2021.08.09 |
[Install] GPU 환경세팅 (CUDA) (0) | 2021.08.09 |
[Error] Error response from daemon: could not select device driver with capabilities: [gpu_name] Error: failed to start containers: [container_name] (0) | 2021.08.06 |