2016-05-18 5 views
2

私はTheano exampleに基づいて、次のコードを持っている:私は2つのモードでコードをテストするときCNMeMが有効になっているのはなぜですか?Theanoでは 'cuDNN not available'ですか?

from theano import function, config, shared, sandbox 
import theano.tensor as T 
import numpy 
import time 

vlen = 10 * 30 * 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') 

は今:

GPUモードでは、私はこれを取得:

$ THEANO_FLAGS=mode=FAST_RUN,device=gpu,floatX=float32 python gpu.py 
Using gpu device 0: Tesla C2075 (CNMeM is enabled with initial size: 95.0% of memory, cuDNN not available) 
[GpuElemwise{exp,no_inplace}(<CudaNdarrayType(float32, vector)>), HostFromGpu(GpuElemwise{exp,no_inplace}.0)] 
Looping 1000 times took 0.475526 seconds 
Result is [ 1.23178029 1.61879349 1.52278066 ..., 2.20771813 2.29967761 
    1.62323296] 
Used the gpu 

CPUモードを、私はこれを入手する:

$ THEANO_FLAGS=mode=FAST_RUN,device=cpu,floatX=float32 python gpu.py 
[Elemwise{exp,no_inplace}(<TensorType(float32, vector)>)] 
Looping 1000 times took 5.221368 seconds 
Result is [ 1.23178029 1.61879337 1.52278066 ..., 2.20771813 2.29967761 
    1.62323284] 
Used the cpu 

GPUはind CPU(0.47秒対5秒)よりも速くなりました。しかし同時に、GPUでcuDNNが利用できないというメッセージが表示されます。

私の質問はこれです。 cuDNNがないことの影響は何ですか?それは有害ですか?

+1

最後にtheanoを使い終わってからしばらく経ちましたが、一般的なCUDAライブラリを使用している可能性がありますので、GPUアクセラレーションの利点を得ることはできますが、ライブラリ。あなたがcudNNをインストールして稼働させることができれば、いくつかの追加のスピードアップを得ることができます。 – Marius

答えて

1

cuDNNを使用しなかった場合は、GPUのすべての機能を使用するわけではありません。 CPU前のGPUのメリットは、GPUには1から8までの通常のCPU(700から4000まで)の実際のコアがたくさんあることです。

GPUコアはプリミティブ計算のみを行うことができます。あなたがcuDNNを使用していないなら、他の標準ライブラリが計算をするか、おそらく(私は正確にGPUメモリを使い、単純なCPUを使って計算するだけではわかりません)。

CuDNNは、プリミティブのGPUアクセラレーションライブラリです。 ディープニューラルネットワークアプリケーションを作成し始めると、それほど高速ではありません。

CuDNN

注意をお読みください:私は、GPUコアは唯一の原始的な計算を行うことができます書いたので、あなたは、GPUを使用していますが、GPUのサポートされていない機能を使用することを選択した場合、theanoは、このような機能のための一時的なアプリケーションを切り替えますCPU(それには時間がかかります)

関連する問題