无法编译cuda_ndarray.cu:libcublas.so.7.5:无法打开共享对象文件

Abi*_*vam 6 python cuda gpu amazon-web-services theano

我试图在aws实例中导入theano库以使用GPU.我已经编写了一个使用boto自动化aws设置的python脚本,它本质上是从我的本地机器对该实例执行ssh,然后启动一个bash脚本,我在其中执行" python -c'import theano'"来启动GPU.但是我收到以下错误:

错误(theano.sandbox.cuda):无法编译cuda_ndarray.cu:libcublas.so.7.5:无法打开共享对象文件:没有这样的文件或目录

当我尝试直接在实例命令shell中导入theano模块时,它会自动开始使用GPU.

使用gpu设备0:GRID K520(禁用CNMeM)

我想我错过了通过我的自动化python脚本导入时必须进行的其他一些导入.什么可能是解决方案?

jde*_*uan 6

我将尝试清楚简洁地解决这个问题,因为我发现对于那些开始使用unix或者不熟悉编译和链接的人来说不是很好的答案.

问题与动态链接有关,可以通过两种方式解决.第一个是通过设置LD_LIBRARY_PATH环境变量.假设cuda安装在/ usr/local/cuda /中,只需在您的环境文件/ etc/enviroment中添加:

LD_LIBRARY_PATH=/usr/local/cuda/
Run Code Online (Sandbox Code Playgroud)

或者只是在你的bashrc中:

export LD_LIBRARY_PATH=/usr/local/cuda/lib64/
Run Code Online (Sandbox Code Playgroud)

这个解决方案不是由unix大师推荐的(我不是我刚刚在互联网上读过的,我跟随linux大师).所以我发现的解决方案很简单,默认情况下修改linux ld软件搜索库的路径.要做到这一点(你必须以root身份):

cd /etc/ld.so.conf.d/
Run Code Online (Sandbox Code Playgroud)

然后选择例如并编辑:

vi libc.conf 
Run Code Online (Sandbox Code Playgroud)

在这个文件里面只需添加lib64根的路径,如:

/usr/local/cuda/lib64/
Run Code Online (Sandbox Code Playgroud)

你会在文件中得到这样的东西:

\# libc default configuration

/usr/local/lib

/usr/local/cuda/lib64/
Run Code Online (Sandbox Code Playgroud)

然后运行:

sudo ldconfig
Run Code Online (Sandbox Code Playgroud)

希望这个答案可以帮助那些开始看编程的人,或者使用高级语言,比如下面使用C代码的python(比如theano),并且不熟悉编译,链接......