用gpu导入theano失败,因为“内存不足”错误

时间:2016-04-20 22:16:20

标签: python theano theano-cuda

当我尝试导入 theano 库时,我收到此错误:

>>> import theano
ERROR (theano.sandbox.cuda): ERROR: Not using GPU. Initialisation of device gpu failed:
initCnmem: cnmemInit call failed! Reason=CNMEM_STATUS_OUT_OF_MEMORY. numdev=1

.theanorc 的内容:

[global]
floatX = float32
device = gpu
optimizer = fast_run

[lib]
cnmem = 0.9

[nvcc]
fastmath = True

[blas]
ldflags = -llapack -lblas

[cmodule]
mac_framework_link=True

我也尝试使用theano标志运行python环境,但仍然存在同样的问题:

$ THEANO_FLAGS=mode=FAST_RUN,device=gpu,floatX=float32,lib.cnmem=0.9 python3

他们还在Theano Github页面上提到类似的问题:Initialisation of device gpu failed!,但他们正在讨论floatint的{​​{1}}值,我认为我已正确设置为CNMeM(由于没有特殊原因,我实际上尝试了0.91.00.95和其他一些值,结果相同。)

我的设置:

  • Mac OS X 10.11.4
  • Xcode 7.2(我不得不从7.3降级)
  • Cuda 7.5.19
  • Python 3.5.1

解决方案:

首先,我没有意识到0.5的值是总内存的百分比,因为我使用的是带有两个显示器的gpu,实际上我没有太多内存无论如何,我已经尝试CNMeM并且它有效。

禁用cuDNN的第二个问题我通过将此行添加到theano配置解决了这个问题:

0.1

有关详情,请参阅此页:sandbox/cuda/dnn

1 个答案:

答案 0 :(得分:0)

首先,我没有意识到CNMeM的值是总内存的,并且因为我将gpu与两个监视器一起使用,所以实际上我没有多少内存可用于备用,无论如何,我都尝试过0.1,它仍然有效。

禁用cuDNN的第二个问题是通过将以下行添加到theano配置中解决的:

optimizer_including = cudnn

有关详情,请参见此页面:sandbox/cuda/dnn