Edit 1
Я забыл упомянуть, что хочу использовать библиотеку theano.
После того, как я обратился к администратору, они предоставили модули cudnn. Тем не менее, я все еще получаю ту же ошибку.
$ module load devel/cudnn/10.2
$ python -c "import theano"
Can not use cuDNN on context None: cannot compile with cuDNN. We got this error:
/pfs/work7/workspace/scratch/ul_dco32-conda-0/conda/envs/my_env/bin/../lib/
gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../
x86_64-conda_cos6-linux-gnu/bin/ld: cannot find -lcudnn
collect2: error: ld returned 1 exit status
Mapped name None to device cuda: Tesla V100-SXM2-32GB (0000:3A:00.0)
$ vi $HOME/.theanorc
[global]
floatX = float32
device = cuda
[cuda]
root=$CUDA_HOME/bin
[dnn]
include_path=$CUDA_HOME/include
library_path=$CUDA_HOME/lib64
[lib]
cnmem=1
Так что, скорее всего, у меня проблема со связью, однако я не могу найти ее где.
Проблема
Я борюсь с ld: cannot find -lcudnn
.
Описание
Я хочу использовать Cuda и CuDnn для моего проекта. Я работаю в кластере, Cuda уже установлена в кластере (ps у меня нет разрешений root). Поэтому я копирую файлы Cuda в свою локальную папку и устанавливаю Cudnn в соответствии с инструкциями на официальном сайте. Однако ld не может найти libcudnn.so
.
$ lsb_release -a
Description: Red Hat Enterprise Linux Server release 7.7 (Maipo)
Release: 7.7
Что я пробовал
$ ld -lcudnn --verbose
attempt to open //usr/x86_64-redhat-linux/lib64/libcudnn.so failed
attempt to open //usr/x86_64-redhat-linux/lib64/libcudnn.a failed
attempt to open //usr/lib64/libcudnn.so failed
attempt to open //usr/lib64/libcudnn.a failed
attempt to open //usr/local/lib64/libcudnn.so failed
attempt to open //usr/local/lib64/libcudnn.a failed
attempt to open //lib64/libcudnn.so failed
attempt to open //lib64/libcudnn.a failed
attempt to open //usr/x86_64-redhat-linux/lib/libcudnn.so failed
attempt to open //usr/x86_64-redhat-linux/lib/libcudnn.a failed
attempt to open //usr/local/lib/libcudnn.so failed
attempt to open //usr/local/lib/libcudnn.a failed
attempt to open //lib/libcudnn.so failed
attempt to open //lib/libcudnn.a failed
attempt to open //usr/lib/libcudnn.so failed
attempt to open //usr/lib/libcudnn.a failed
ld: cannot find -lcudnn
Если я добавлю путь к библиотеке libcudnn.so
вручную
$ ld -L "$CUDA_HOME/lib64" -lcudnn
attempt to open /home/ul/ul_student/ul_dco32/pkg/cuda/10.2/lib64/libcudnn.so succeeded
-lcudnn (/home/ul/ul_student/ul_dco32/pkg/cuda/10.2/lib64/libcudnn.so)
librt.so.1 needed by /home/ul/ul_student/ul_dco32/pkg/cuda/10.2/lib64/libcudnn.so
found librt.so.1 at /usr/lib64/librt.so.1
libpthread.so.0 needed by /home/ul/ul_student/ul_dco32/pkg/cuda/10.2/lib64/libcudnn.so
found libpthread.so.0 at /usr/lib64/libpthread.so.0
libdl.so.2 needed by /home/ul/ul_student/ul_dco32/pkg/cuda/10.2/lib64/libcudnn.so
found libdl.so.2 at /usr/lib64/libdl.so.2
libstdc++.so.6 needed by /home/ul/ul_student/ul_dco32/pkg/cuda/10.2/lib64/libcudnn.so
found libstdc++.so.6 at /usr/lib64/libstdc++.so.6
libm.so.6 needed by /home/ul/ul_student/ul_dco32/pkg/cuda/10.2/lib64/libcudnn.so
found libm.so.6 at /usr/lib64/libm.so.6
libgcc_s.so.1 needed by /home/ul/ul_student/ul_dco32/pkg/cuda/10.2/lib64/libcudnn.so
found libgcc_s.so.1 at /usr/lib64/libgcc_s.so.1
libc.so.6 needed by /home/ul/ul_student/ul_dco32/pkg/cuda/10.2/lib64/libcudnn.so
found libc.so.6 at /usr/lib64/libc.so.6
ld-linux-x86-64.so.2 needed by /home/ul/ul_student/ul_dco32/pkg/cuda/10.2/lib64/libcudnn.so
found ld-linux-x86-64.so.2 at /usr/lib64/ld-linux-x86-64.so.2
ld: warning: cannot find entry symbol _start; not setting start address
Вот мой LD_LIBRARY_PATH
$ echo $LD_LIBRARY_PATH
/home/ul/ul_student/ul_dco32/pkg/cuda/10.2/lib64
ld как-то игнорирует LD_LIBRARY_PATH
. Поскольку у меня нет разрешений root, я не могу ни создать символьную ссылку c, ни внести изменения в ldconfig
. Таким образом, установка LD_LIBRARY_PATH
- единственный способ исправить это.
Спасибо за вашу помощь.