1

ubuntu 14.04 と cuda 7.5 を使用しています。以下を使用して cuda のバージョン情報を取得し$ nvcc --versionます。

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2015 NVIDIA Corporation
Built on Tue_Aug_11_14:27:32_CDT_2015
Cuda compilation tools, release 7.5, V7.5.17

$PATH と $LD_LIBRARY_PATH は次のとおりです。

$ echo $PATH
/usr/local/cuda-7.5/bin:/usr/local/cuda-7.5/bin/:/opt/ros/indigo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

$ echo $LD_LIBRARY_PATH
/usr/local/cuda-7.5/lib64

theanoをインストールします。私はCPUで使用しますが、GPUでは使用しません。このガイドによると、

GPU で Theano をテストする¶ GPU が使用されているかどうかを確認するには、次のプログラムをコピーしてファイルに貼り付けて実行します。

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') The program just computes the exp() of a bunch of random numbers. Note that we use the shared function to make
> sure that the input x is stored on the graphics device.

このプログラム (check1.py 内) を device=cpu で実行すると、私のコンピューターでは 3 秒強かかりますが、GPU では 0.64 秒強かかります。GPU は、常に CPU とまったく同じ浮動小数点数を生成するとは限りません。ベンチマークとして、numpy.exp(x.get_value()) を呼び出すループには約 46 秒かかります。

$ theano_flags = mode = fast_run、device = cpu、floatx = float32 python check1.py [elemwise {exp、no_inplace}()]ループ1000回は3.06635117531秒かかりました。 CPU

$ THEANO_FLAGS=mode=FAST_RUN,device=gpu,floatX=float32 python check1.py gpu デバイスを使用 0: GeForce GTX 580 [GpuElemwise{exp,no_inplace}(), HostFromGpu(GpuElemwise{exp,no_inplace}.0)] ループ 1000時間は 0.638810873032 秒かかりました。

sudo なしで gpu version コマンドを実行すると、パーミッション拒否エラーがスローされます。

/theano/gof/cmodule.py", line 741, in refresh
    files = os.listdir(root)
OSError: [Errno 13] Permission denied: '/home/user/.theano/compiledir_Linux-3.16--generic-x86_64-with-Ubuntu-14.04-trusty-x86_64-2.7.6-64/tmp077r7U'

sudo で使用すると、コンパイラは nvcc パスを見つけることができません。

ERROR (theano.sandbox.cuda): nvcc compiler not found on $PATH. Check your nvcc installation and try again.

このエラーを修正するにはどうすればよいですか?

4

2 に答える 2

1

実行してみてください

chown -R user /home/user/.theano
chmod -R 775 /home/user/.theano

これにより、Python スクリプトがアクセスできないフォルダーのアクセス許可が変更されます。最初のものはフォルダーをユーザーに属させ、2番目のものはパーミッションを変更して、ユーザーが読み取り、書き込み、実行できるようにします。

于 2016-05-29T18:53:51.833 に答える