我正在尝试在aws实例中导入theano库以使用GPU。我已经编写了一个使用boto自动化aws设置的python脚本,它本质上是从我的本地机器执行ssh到实例,然后启动一个bash脚本,我在那里" python -c' import theano& #39;" 启动GPU。但是我收到以下错误:
错误(theano.sandbox.cuda):无法编译cuda_ndarray.cu:libcublas.so.7.5:无法打开共享对象文件:没有这样的文件或 目录
当我尝试直接在实例命令shell中导入theano模块时,它会自动开始使用GPU。
使用gpu device 0:GRID K520(禁用CNMeM)
我想我错过了通过我的自动化python脚本导入时必须进行的其他一些导入。什么可能是解决方案?
答案 0 :(得分:6)
我会尝试清楚简洁地解决这个问题,因为我发现对于那些开始使用unix或者不熟悉编译和链接的人来说不是很好的答案。
问题与动态链接有关,可以通过两种方式解决。第一个是通过设置LD_LIBRARY_PATH环境变量。假设cuda安装在/ usr / local / cuda /中,只需在你的环境文件/ etc / enviroment中添加:
LD_LIBRARY_PATH=/usr/local/cuda/
或者只是在你的bashrc中:
export LD_LIBRARY_PATH=/usr/local/cuda/lib64/
这个解决方案不是由unix大师推荐的(我不是我刚刚在互联网上读过的,我跟随linux大师)。所以我发现的解决方案很简单,默认情况下修改linux ld软件搜索库的路径。要做到这一点(你必须以root身份):
cd /etc/ld.so.conf.d/
然后选择例如并编辑:
vi libc.conf
在此文件中,只需添加lib64根目录的路径,如:
/usr/local/cuda/lib64/
你会在文件中得到这样的东西:
\# libc default configuration
/usr/local/lib
/usr/local/cuda/lib64/
然后运行:
sudo ldconfig
希望这个答案可以帮助那些开始看编程的人,或者使用高级语言,例如python,使用下面的C代码(比如theano),并且不熟悉编译,链接......
答案 1 :(得分:4)
我在使用cuda 7.5的Ubuntu 16.04上遇到了同样的错误并找到了解决方案here:
cuda 7.5不支持默认的g ++版本。安装支持的版本并将其设为默认值:
sudo apt-get install g++-4.9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 10
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 20
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 10
sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30
sudo update-alternatives --set cc /usr/bin/gcc
sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30
sudo update-alternatives --set c++ /usr/bin/g++
解决glibc错误 - 使用以下设置在主目录中创建.theanorc:
[global]
device=gpu
floatX=float32
[nvcc]
flags=-D_FORCE_INLINES
不要忘记检查环境变量: PATH应包含您的cuda bin文件夹位置,CUDA_HOME应包含cuda home location
我已经通过这种方式将它添加到.bashrc文件中了:
export PATH="/usr/local/cuda/bin:$PATH"
export CUDA_HOME="/usr/local/cuda:$CUDA_HOME"
答案 2 :(得分:3)
我最近遇到了类似的问题,花了很多时间搞清楚出了什么问题(我破坏了我的Linux安装并且不得不重新安装)。
此错误的潜在解决方案是删除(可能)位于您主目录中的.theano/
目录:
sudo rm -rf ~/.theano
要防止再次发生此错误,请不要以root用户身份运行脚本(即没有sudo
)。
以root身份运行脚本将创建具有root权限的隐藏目录,使其无法访问其他进程。
答案 3 :(得分:0)