원래 참고 글 : https://lapina.tistory.com/130
워크스테이션 판매처에서 cuda, cudnn 설치 과정중에 심볼릭 링크가 깨진 것으로 보인다.
파일을 복사할 때, 심볼릭 링크를 살리지 않고 복사하면
→ 심볼릭 링크 깨짐 + 심볼릭 링크 파일이 일반 파일이 되면서 원본 파일의 내용이 복제되는 방식으로 처리 됨
Cudnn 카피 시 Symbolic link가 사라지기 때문임. 이를 다시 설정해주면 해결됨.
자신의 CUDA 버전에 맞는 폴더로 이동
$ cd /usr/local/cuda-11.3/lib64
아래와 같이 검색을 해주면 (심볼릭 링크를 포함한 파일에 대한 상세정보 확인 가능)
$ ls -lha libcudnn*
심볼릭 링크 ->
libcudnn.so, so.8, so.8.2.0 파일들에 링크가 없는걸 볼 수 있음.
아래와 같이 명령어를 입력 해주자.
$ sudo ln -sf libcudnn.so.8.2.0 libcudnn.so.8
$ sudo ln -sf libcudnn.so.8 libcudnn.so
$ ln -s [원본 파일] [심볼릭링크 파일]
심볼릭 링크를 생성한 후에 조회
-rwxr-xr-x 1 root root 124M Feb 28 08:28 libcudnn_adv_infer.so
-rwxr-xr-x 1 root root 124M Feb 28 08:28 libcudnn_adv_infer.so.8
-rwxr-xr-x 1 root root 124M Feb 28 08:28 libcudnn_adv_infer.so.8.2.0
-rwxr-xr-x 1 root root 82M Feb 28 08:28 libcudnn_adv_train.so
-rwxr-xr-x 1 root root 82M Feb 28 08:28 libcudnn_adv_train.so.8
-rwxr-xr-x 1 root root 82M Feb 28 08:28 libcudnn_adv_train.so.8.2.0
-rwxr-xr-x 1 root root 676M Feb 28 08:28 libcudnn_cnn_infer.so
-rwxr-xr-x 1 root root 676M Feb 28 08:28 libcudnn_cnn_infer.so.8
-rwxr-xr-x 1 root root 676M Feb 28 08:28 libcudnn_cnn_infer.so.8.2.0
-rw-r--r-- 1 root root 840M Feb 28 08:28 libcudnn_cnn_infer_static.a
-rw-r--r-- 1 root root 840M Feb 28 08:28 libcudnn_cnn_infer_static_v8.a
-rwxr-xr-x 1 root root 169M Feb 28 08:28 libcudnn_cnn_train.so
-rwxr-xr-x 1 root root 169M Feb 28 08:28 libcudnn_cnn_train.so.8
-rwxr-xr-x 1 root root 169M Feb 28 08:28 libcudnn_cnn_train.so.8.2.0
-rw-r--r-- 1 root root 228M Feb 28 08:28 libcudnn_cnn_train_static.a
-rw-r--r-- 1 root root 228M Feb 28 08:28 libcudnn_cnn_train_static_v8.a
-rwxr-xr-x 1 root root 272M Feb 28 08:28 libcudnn_ops_infer.so
-rwxr-xr-x 1 root root 272M Feb 28 08:28 libcudnn_ops_infer.so.8
-rwxr-xr-x 1 root root 272M Feb 28 08:28 libcudnn_ops_infer.so.8.2.0
-rwxr-xr-x 1 root root 57M Feb 28 08:28 libcudnn_ops_train.so
-rwxr-xr-x 1 root root 57M Feb 28 08:28 libcudnn_ops_train.so.8
-rwxr-xr-x 1 root root 57M Feb 28 08:28 libcudnn_ops_train.so.8.2.0
lrwxrwxrwx 1 root root 13 Apr 27 08:58 libcudnn.so -> libcudnn.so.8
lrwxrwxrwx 1 root root 17 Apr 27 08:58 libcudnn.so.8 -> libcudnn.so.8.2.0
-rwxr-xr-x 1 root root 159K Feb 28 08:28 libcudnn.so.8.2.0
-rw-r--r-- 1 root root 1.4G Feb 28 08:28 libcudnn_static.a
-rw-r--r-- 1 root root 1.4G Feb 28 08:28 libcudnn_static_v8.a
해당 부분만 조회해보면
ls -al libcudnn.so*
심볼릭 링크가 형성됨
lrwxrwxrwx 1 root root 13 Apr 27 08:58 libcudnn.so -> libcudnn.so.8
lrwxrwxrwx 1 root root 17 Apr 27 08:58 libcudnn.so.8 -> libcudnn.so.8.2.0
-rwxr-xr-x 1 root root 162360 Feb 28 08:28 libcudnn.so.8.2.0
다음의 명령어를 입력했을 때,
ldconfig -N -v $(sed 's/:/ /' <<< $LD_LIBRARY_PATH) 2>/dev/null | grep libcudnn
아래와 같이 나오면 해결 된 것임.
(아래와 같이 나오려면, libcudnn_cnn_train.so.8 같은 것들도 다 심볼릭 링크를 이어줘야 하는가 했는데 , 위에서 처리한 libcudnn.so, libcudnn.so.8, libcudnn.so.8.2.0 부분만 링크시키면 아래처럼 나옴)
libcudnn_cnn_train.so.8 -> libcudnn_cnn_train.so.8.2.2
libcudnn_ops_infer.so.8 -> libcudnn_ops_infer.so.8.2.2
libcudnn.so.8 -> libcudnn.so.8.2.2
libcudnn_cnn_infer.so.8 -> libcudnn_cnn_infer.so.8.2.2
libcudnn_adv_train.so.8 -> libcudnn_adv_train.so.8.2.2
libcudnn_ops_train.so.8 -> libcudnn_ops_train.so.8.2.2
libcudnn_adv_infer.so.8 -> libcudnn_adv_infer.so.8.2.2