Theano 搜索 CUDA 7.5 文件,但我安装了 CUDA 8。如何告诉它使用 CUDA 8?
Theano search for CUDA 7.5 files but I have CUDA 8 installed. How to tell it to use CUDA 8?
我使用 theano 0.9.0、CUDA 8.0.61、gcc 版本 4.9.3、NVIDIA UNIX x86_64 内核模块 375.39、Ubuntu 16.04.2 LTS,我有一个 geforce 1060。 CUDA 的工作原理和我测试过的一样。
但是每当我使用 theano (http://deeplearning.net/software/theano/tutorial/using_gpu.html) 进行 gpu 测试时,我都会收到此错误:ImportError: ('The following error happened while compiling the node', GpuElemwise{exp,no_inplace}((float64, vector )>), '\n', 'libnvrtc.so.7.5: cannot open shared object file: No such file or directory', '[GpuElemwise{exp,no_inplace}((float64, vector)>)]')
这真的很愚蠢,因为我有 CUDA 8,而不是 CUDA 7.5,所以它当然找不到 libnvrtc.so.7.5。我如何告诉 theano 我使用的是 CUDA 8 而不是 CUDA 7.5?
我的 .bashrc 设置过于复杂:
- 导出 PATH="/usr/local/cuda-8.0/bin:$PATH"
- 导出LD_LIBRARY_PATH="/usr/local/cuda-8.0/lib64"
- 导出 CUDA_HOME=/usr/local/cuda-8.0
- 导出 CUDA_ROOT=/usr/local/cuda-8.0
- export CPATH="$CPATH:~/.local/include"
- 导出 CPATH="/usr/local/cuda-8.0/include:$CPATH"
- 导出 LIBRARY_PATH="$LIBRARY_PATH:~/.local/lib"
- 导出 LIBRARY_PATH="/usr/lib/nvidia-375:$LIBRARY_PATH"
- 导出 LIBRARY_PATH="/usr/local/cuda-8.0/lib64:$LIBRARY_PATH"
- 导出 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:~/.local/lib"
我的 .theanorc 是:
[nvcc]
标志=-D_FORCE_INLINES
[全球]
设备=cuda0
[cuda]
root = /usr/local/cuda-8.0/
你不能。安装 CUDA 7.5 或安装针对 CUDA 8 构建的框架版本。没有办法使您尝试做的事情起作用。
编辑:鉴于您的卡是 Pascal 一代而 CUDA 7.5 是 Pre-Pascal,您也许不应该坚持尝试使这项工作成功。考虑到这一点...
虽然@talonmies 的回答是正确的,但至少以下一项(可能更多)实际上应该让 Theano 为您工作:
为针对 *buntu 16.04 Xenial 的较新版本的 CUDA 添加软件包存储库:
deb http://ppa.launchpad.net/graphics-drivers/ppa/ubuntu xenial main
deb-src http://ppa.launchpad.net/graphics-drivers/ppa/ubuntu xenial main
将这些文件命名为 /etc/apt/sources.list.d/graphics-drivers-ppa-xenial.list
- 但如果您升级到较新版本的 *buntu,请记住 remove/update 它。这应该可以让您访问 CUDA 7.5。不过,请确保不要安装较旧的 nVIDIA 驱动程序版本。
手动安装 CUDA 7.5。您可以从 here 下载它。调整问题中提到的设置以指向 /usr/local/cuda-7.5
。同样,请确保您没有同时安装较旧的 nVIDIA 驱动程序。
按照安装说明进行操作 here。我不确定除了使用 pip 之外还有更多的东西,但也许有。
警告:我自己从未使用过 Theano。
我使用 theano 0.9.0、CUDA 8.0.61、gcc 版本 4.9.3、NVIDIA UNIX x86_64 内核模块 375.39、Ubuntu 16.04.2 LTS,我有一个 geforce 1060。 CUDA 的工作原理和我测试过的一样。
但是每当我使用 theano (http://deeplearning.net/software/theano/tutorial/using_gpu.html) 进行 gpu 测试时,我都会收到此错误:ImportError: ('The following error happened while compiling the node', GpuElemwise{exp,no_inplace}((float64, vector )>), '\n', 'libnvrtc.so.7.5: cannot open shared object file: No such file or directory', '[GpuElemwise{exp,no_inplace}((float64, vector)>)]')
这真的很愚蠢,因为我有 CUDA 8,而不是 CUDA 7.5,所以它当然找不到 libnvrtc.so.7.5。我如何告诉 theano 我使用的是 CUDA 8 而不是 CUDA 7.5?
我的 .bashrc 设置过于复杂:
- 导出 PATH="/usr/local/cuda-8.0/bin:$PATH"
- 导出LD_LIBRARY_PATH="/usr/local/cuda-8.0/lib64"
- 导出 CUDA_HOME=/usr/local/cuda-8.0
- 导出 CUDA_ROOT=/usr/local/cuda-8.0
- export CPATH="$CPATH:~/.local/include"
- 导出 CPATH="/usr/local/cuda-8.0/include:$CPATH"
- 导出 LIBRARY_PATH="$LIBRARY_PATH:~/.local/lib"
- 导出 LIBRARY_PATH="/usr/lib/nvidia-375:$LIBRARY_PATH"
- 导出 LIBRARY_PATH="/usr/local/cuda-8.0/lib64:$LIBRARY_PATH"
- 导出 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:~/.local/lib"
我的 .theanorc 是:
[nvcc]
标志=-D_FORCE_INLINES
[全球]
设备=cuda0
[cuda]
root = /usr/local/cuda-8.0/
你不能。安装 CUDA 7.5 或安装针对 CUDA 8 构建的框架版本。没有办法使您尝试做的事情起作用。
编辑:鉴于您的卡是 Pascal 一代而 CUDA 7.5 是 Pre-Pascal,您也许不应该坚持尝试使这项工作成功。考虑到这一点...
虽然@talonmies 的回答是正确的,但至少以下一项(可能更多)实际上应该让 Theano 为您工作:
为针对 *buntu 16.04 Xenial 的较新版本的 CUDA 添加软件包存储库:
deb http://ppa.launchpad.net/graphics-drivers/ppa/ubuntu xenial main deb-src http://ppa.launchpad.net/graphics-drivers/ppa/ubuntu xenial main
将这些文件命名为
/etc/apt/sources.list.d/graphics-drivers-ppa-xenial.list
- 但如果您升级到较新版本的 *buntu,请记住 remove/update 它。这应该可以让您访问 CUDA 7.5。不过,请确保不要安装较旧的 nVIDIA 驱动程序版本。手动安装 CUDA 7.5。您可以从 here 下载它。调整问题中提到的设置以指向
/usr/local/cuda-7.5
。同样,请确保您没有同时安装较旧的 nVIDIA 驱动程序。按照安装说明进行操作 here。我不确定除了使用 pip 之外还有更多的东西,但也许有。
警告:我自己从未使用过 Theano。