Theano:共享变量在代码运行后不释放内存

时间:2016-08-26 22:21:29

标签: memory-management out-of-memory gpgpu theano theano-cuda

我正在运行这个简单的代码,它将两个大型数组复制到GPU内存中进行点积计算。

import numpy as np
import theano
import theano.tensor as T

a = np.asarray(np.random.uniform(-1,1, (10000,40000)), dtype=np.float32)
b = np.asarray(np.random.uniform(-1,1, (40000,20000)), dtype=np.float32)

aa = theano.shared(a)
bb = theano.shared(b)

x = T.matrix()
y = T.matrix()

dd = T.dot(x,y)

ddd = theano.function([], dd, givens=[(x,aa), (y,bb)])

ddd()

但是,似乎在每次代码运行后(在Spyder中),都没有释放为这些共享变量分配的GPU内存。

我正在使用带有12GB RAM的Titan-X,我只能运行此代码两次,第三次会产生以下错误:

MemoryError: ('Error allocating 3200000000 bytes of device memory (CNMEM_STATUS_OUT_OF_MEMORY).', "you might consider using 'theano.shared(..., borrow=True)'")

这是我的theanorc文件:

[blas]
ldflags =

[nvcc]
flags=-LC:\Anaconda\libs
compiler_bindir=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin

[global]
device = gpu0
floatX = float32
print_active_device = True
optimizer_including = cudnn
allow_gc = True

[lib]
cnmem = 0.8

[dnn]
enabled = True
conv.algo_fwd = time_on_shape_change
conv.algo_bwd_filter = time_on_shape_change
conv.algo_bwd_data = time_on_shape_change

我正在使用nvidia-smi监控GPU内存使用情况,我可以看到它在3次代码运行后消耗掉所有12GB的内存。

0 个答案:

没有答案