因为有个实验原始代码使用theano写的,想要在此基础上做出改变和提升,所以被迫了解了一下theano有多么难用。以下就是一些出现的问题。
importError: libcudnn.so: cannot open shared object file: No such file or directory
针对这个问题,首先要找到cuda所在的路径为/usr/local/cuda/lib64这个路径,查看libcudnn.so文件是否存在,本linux环境使用的cuda10.2中是包含该文件的,但是文件为空,应该是要调用libcudnn.so.7这个文件。另外本服务器的cuda10.1中该文件不为空,因此修改cuda。
首先,输入geit ~/.bashrc修改配置文件,在末尾添加一下行,之后输入source ~/.bashrc刷新,然重新连接服务器。
export PATH="/usr/local/cuda-10.1/bin:$PATH" export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda-10.1/lib64/"
theano使用GPU的方法如下:
THEANO_FLAGS="mode=FAST_RUN,device=cuda0,floatX=float32" python -u theano_test.py
可以通过theano.config.device查看是否调用了GPU。
.theanorc这个文件的配置
配置的格式如下:
[global] floatX = float64 device = cuda root=/usr/local/cuda-10.1 [cuda] root = /usr/local/cuda-10.1 [dnn] enabled = True include_path = /usr/local/cuda-10.1/include library_path = /usr/lical/cuda-10.1/lib64
我愿意称之为死马当活马医,没啥办法的时候,就看看这里面有没有问题。
pygpu.gpuarray.GpuArrayException: cuMemAlloc: CUDA_ERROR_OUT_OF_MEMORY: out of memory
这个问题的话,我的解决办法是添加如下代码段:
import os os.environ['CUDA_VISIBLE_DEVICES']='0,1,2, 3'
使所有gpu都是可见的。
总结:遇到问题了就是误打误撞一下,啥都试试,咱也不知道 究竟是谁的锅。



