Отсутствует компилятор nvcc - theano

Я использую 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. Я использую его с процессором, но не с процессором. Это руководство говорит, что

Тестирование Theano с помощью GPU¶ Чтобы увидеть, используется ли ваш 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 секунды. Графический процессор не всегда будет выдавать те же числа с плавающей запятой, что и процессор. В качестве эталона цикл, вызывающий 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 сек. Результат равен [ 1,23178029 1,61879337 1,52278066 ..., 2,20771813 2,29967761 1,662 ЦПУ

$ 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)] Looping время заняло 0,638810873032 секунд. Результат равен [ 1.23178029 1.61879349 1.52278066 ..., 2.20771813 2.29967761 1.62323296]. Использовал gpu. Обратите внимание, что для работы графического процессора в Theano требуется, чтобы теперь floatX был float32 (см. также ниже).

Я запускаю команду gpu version без sudo, она выдает ошибку запрещенного доступа:

/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.

Как я могу исправить эту ошибку?

2 ответа

Решение

Попробуйте запустить

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

это изменит права доступа к папке, к которой ваш скрипт Python не может получить доступ. Первый из них сделает папку принадлежащей вашему пользователю, а вторая изменит права на чтение, запись и выполнение пользователем.

Относительно только этой ошибки:

Вы можете проверить, где установлен NVCC, путь по умолчанию - "/usr/local/cuda/bin", если вы можете увидеть его там, то сделайте следующее:

$  export PATH="/usr/local/cuda/bin:$PATH"
$  source .bashrc

Это сработало для меня, и теперь я могу использовать NVCC, и его больше нет.

Другие вопросы по тегам