我需要使用Theano和我的GPU(Nvidia 820M)。但是,cudNN至少要求Compute Capability 3.0。我的是2.1。因此,我不想(实际上,不能)使用cudNN,但我仍然希望将我的GPU与CUDA和Theano一起使用。
我正在使用Theano 0.9(dev),当我在.theanorc文件中禁用cudNN时,只使用了cpu。有没有办法使用Theano和我的GPU(CUDA),但没有cudNN?
提前致谢!
这就是我得到的:
Can not use cuDNN on context None: Disabled by dnn.enabled flag
Mapped name None to device cuda: GeForce 820M (0000:09:00.0)
[GpuElemwise{exp,no_inplace}(<GpuArrayType<None>(float32, (False,))>), HostFromGpu(gpuarray)(GpuElemwise{exp,no_inplace}.0)]
Looping 1000 times took 0.900911 seconds
Result is [ 1.23178029 1.61879349 1.52278066 ..., 2.20771813 2.29967761 1.62323296]
Used the cpu
编辑:
我刚看到这个链接(http://philipperemy.github.io/configure_gpu_for_deep_learning/),作者也没有使用cudnn,但是使用了gpu而不是cpu。我可以做些什么?
编辑2:
我完全忘记粘贴生成此输出的代码。我为此道歉。这是:
from theano import function, config, shared, sandbox
import theano.tensor as T
import numpy
import time
vlen = 10 * 96 * 768 # 10 x #cores x # threads per core
iters = 1000
rng = numpy.random.RandomState(22)
x = shared(numpy.asarray(rng.rand(vlen), config.floatX))
f = function([], T.exp(x))
print(f.maker.fgraph.toposort())
t0 = time.time()
for i in range(iters):
r = f()
t1 = time.time()
print("Looping %d times took %f seconds" % (iters, t1 - t0))
print("Result is %s" % (r,))
if numpy.any([isinstance(x.op, T.Elemwise) for x in f.maker.fgraph.toposort()]):
print('Used the cpu')
else:
print('Used the gpu')
我有新闻。我注意到,尽管它打印了“使用cpu&#39;当我在.theanorc中设置device = cuda时,执行时间比使用device = cpu时短近30倍。然后我进行了另一次体验,这次是CNN处理一些图像,我注意到当我进入&nvidia-smi&#39;在算法运行时,命令使用的gpu内存量从330 MB增加到超过415 MB。当我关闭进程时,它会回到最初的330 MB。很明显,theano正在使用GPU,但上面的测试代码打印出了“使用cpu&#39;出于某种原因。
另一个信息。当我进入&#39;导入theano&#39;在python解释器中,它显示以下消息:
Can not use cuDNN on context None: Disabled by dnn.enabled flag
Mapped name None to device cuda: GeForce 820M (0000:09:00.0)
我不明白为什么测试说它正在使用CPU,而我有证据证明我的GPU是正在使用的。
最后,这是我的.theanorc文件:
[dnn]
enabled = False
[global]
device = cuda
floatX = float32
optimizer = None
我必须将None分配给优化器选项,否则程序将无法工作,因为显示以下异常:
AssertionError: AbstractConv2d Theano optimization failed: there is no
implementation available supporting the requested options. Did you
exclude both "conv_dnn" and "conv_gemm" from the optimizer? If on GPU,
is cuDNN available and does the GPU support it? If on CPU, do you have a
BLAS library installed Theano can link against?
这可能是因为我的gpu不支持cuDNN。不是吗?