Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在theano中使用CUDA8_Python_Theano_Theano Cuda - Fatal编程技术网

Python 在theano中使用CUDA8

Python 在theano中使用CUDA8,python,theano,theano-cuda,Python,Theano,Theano Cuda,我有CUDA8的工作安装,并且安装了theano,在导入theano时,它搜索CUDA7.5而不是CUDA8,如何告诉theano使用CUDA8而不是CUDA7.5 我的系统只有CUDA8,不包含混合环境cuda(即既有CUDA7.5又有CUDA8) 这是英伟达smi的输出 $ nvidia-smi Sat Feb 4 11:32:30 2017 +-----------------------------------------------------------------

我有CUDA8的工作安装,并且安装了theano,在导入theano时,它搜索CUDA7.5而不是CUDA8,如何告诉
theano
使用CUDA8而不是CUDA7.5

我的系统只有CUDA8,不包含混合环境cuda(即既有CUDA7.5又有CUDA8)

这是英伟达smi的输出

$ nvidia-smi 
Sat Feb  4 11:32:30 2017       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 375.26                 Driver Version: 375.26                         |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 970M    Off  | 0000:01:00.0     Off |                  N/A |
| N/A   54C    P0    22W /  N/A |      0MiB /  3016MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|  No running processes found                                                 |
这里是
nvcc-V

$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2016 NVIDIA Corporation
Built on Sun_Sep__4_22:14:01_CDT_2016
Cuda compilation tools, release 8.0, V8.0.44
在ipython中导入theano时,它无法在gpu模式下运行,出现错误,无法找到
libcudart.so.7.5

Python 3.6.0 (default, Jan 16 2017, 12:12:55) 
Type "copyright", "credits" or "license" for more information.

IPython 5.1.0 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [1]: import theano
ERROR (theano.sandbox.cuda): Failed to compile cuda_ndarray.cu: libcudart.so.7.5: cannot open shared object file: No such file or directory
WARNING (theano.sandbox.cuda): CUDA is installed, but device gpu0 is not available  (error: cuda unavailable)
这是我的
.theanoc

[global]                                                                                                                                                                                                       
floatX = float32
device = gpu0
cuda.root = /opt/cuda
在卸载以前安装的theano后,我试图从源代码构建它,但同样不起作用。我确实用
theano cache clean
/
theano cache purge
清除了theano缓存,并手动删除了
.theano
目录下的内容,这也帮不上忙

通过更多的调试,我在这里得到了错误

nvcc\u编译器
尝试加载无缓存中的
cuda\u ndarray.so

mod.cu的comiplation阶段运行无误

在这种情况下,链接器指向错误的
libcudart

readelf -a cuda_ndarray.so | grep NEEDED
 0x0000000000000001 (NEEDED)             Shared library: [libcublas.so.8.0]
 0x0000000000000001 (NEEDED)             Shared library: [libpython3.6m.so.1.0]
 0x0000000000000001 (NEEDED)             Shared library: [libcudart.so.7.5]
 0x0000000000000001 (NEEDED)             Shared library: [librt.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libpthread.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libdl.so.2]
 0x0000000000000001 (NEEDED)             Shared library: [libstdc++.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libgcc_s.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
我假设
ldconfig
正在正确缓存cuda库

$ sudo ldconfig -v | grep -e 'cuda\|blas'
/opt/cuda/lib64:
    libcublas.so.8.0 -> libcublas.so.8.0.45
    libcudart.so.8.0 -> libcudart.so.8.0.44
    libnvblas.so.8.0 -> libnvblas.so.8.0.44
/opt/cuda/nvvm/lib64:
    libcuda.so.1 -> libcuda.so.375.26
    libblas.so.3 -> libblas.so.3.7.0
    libicudata.so.58 -> libicudata.so.58.2
    libopenblas.so.0 -> libopenblas.so
    libicudata.so.58 -> libicudata.so.58.1

在进一步挖掘“我的问题”之后,我重构了我的原始问题,并将其发布在这里,从而解决了我的问题。

可能会检查.theanoc的内容,但可能需要根据源代码重新编译?我已检查了它(),但似乎没有关于它的选项“config.cuda.root”中是否有任何内容在.theanoc?yes@colinbeckham中,我尝试了这个,在我的例子中,
/opt/cuda
是我的安装目录。