无法编译 cuda_ndarray.cu:libcublas.so.7.5:无法打开共享对象文件
Failed to compile cuda_ndarray.cu: libcublas.so.7.5: cannot open shared object file
我正在尝试在 aws 实例中导入 theano 库以使用 GPU。我已经使用 boto 编写了一个 python 脚本来自动执行 aws 设置,它实际上将从我的本地计算机对实例执行 ssh,然后在我执行“[= 的地方启动一个 bash 脚本24=] -c 'import theano'" 启动 GPU。但是我收到以下错误:
ERROR (theano.sandbox.cuda): Failed to compile cuda_ndarray.cu: libcublas.so.7.5: cannot open shared object file: No such file or
directory
当我尝试在实例命令中直接导入 theano 模块时 shell 它会自动开始使用 GPU。
Using gpu device 0: GRID K520 (CNMeM is disabled)
我想我遗漏了一些在通过我的自动化 python 脚本导入时必须进行的其他导入。可能的解决方案是什么?
我最近遇到了类似的问题,花了很长时间才弄清楚出了什么问题(以至于我损坏了我的 Linux 安装,不得不重新安装)。
此错误的潜在解决方案是删除(可能)位于您家中的.theano/
目录目录:
sudo rm -rf ~/.theano
为防止此错误再次发生,请不要 运行 您的脚本作为 root 用户(即没有 sudo
)。
运行 root 脚本将创建具有 root 权限的隐藏目录,使其无法被其他进程访问。
我在 Ubuntu 16.04 和 cuda 7.5 上遇到了同样的错误并找到了解决方案 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 主目录位置
我以这种方式将它添加到我的 .bashrc 文件中:
export PATH="/usr/local/cuda/bin:$PATH"
export CUDA_HOME="/usr/local/cuda:$CUDA_HOME"
我会尝试清楚简洁地解决这个问题,因为我发现对于刚开始使用 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 专家不推荐此解决方案(我不是 unix 专家,我刚刚在 Internet 上阅读了它,我跟随 linux 专家)。所以我找到的解决办法很简单,修改linuxld软件默认搜索库的路径。要做到这一点就去做(你必须以 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 所做的那样)并且不熟悉编译,linkig ...
根据 Kumar here 的建议,我做了
sudo ldconfig /usr/local/cuda/lib64
它神奇地开始工作了。谢谢库马尔!
我正在尝试在 aws 实例中导入 theano 库以使用 GPU。我已经使用 boto 编写了一个 python 脚本来自动执行 aws 设置,它实际上将从我的本地计算机对实例执行 ssh,然后在我执行“[= 的地方启动一个 bash 脚本24=] -c 'import theano'" 启动 GPU。但是我收到以下错误:
ERROR (theano.sandbox.cuda): Failed to compile cuda_ndarray.cu: libcublas.so.7.5: cannot open shared object file: No such file or directory
当我尝试在实例命令中直接导入 theano 模块时 shell 它会自动开始使用 GPU。
Using gpu device 0: GRID K520 (CNMeM is disabled)
我想我遗漏了一些在通过我的自动化 python 脚本导入时必须进行的其他导入。可能的解决方案是什么?
我最近遇到了类似的问题,花了很长时间才弄清楚出了什么问题(以至于我损坏了我的 Linux 安装,不得不重新安装)。
此错误的潜在解决方案是删除(可能)位于您家中的.theano/
目录目录:
sudo rm -rf ~/.theano
为防止此错误再次发生,请不要 运行 您的脚本作为 root 用户(即没有 sudo
)。
运行 root 脚本将创建具有 root 权限的隐藏目录,使其无法被其他进程访问。
我在 Ubuntu 16.04 和 cuda 7.5 上遇到了同样的错误并找到了解决方案 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 主目录位置
我以这种方式将它添加到我的 .bashrc 文件中:
export PATH="/usr/local/cuda/bin:$PATH"
export CUDA_HOME="/usr/local/cuda:$CUDA_HOME"
我会尝试清楚简洁地解决这个问题,因为我发现对于刚开始使用 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 专家不推荐此解决方案(我不是 unix 专家,我刚刚在 Internet 上阅读了它,我跟随 linux 专家)。所以我找到的解决办法很简单,修改linuxld软件默认搜索库的路径。要做到这一点就去做(你必须以 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 所做的那样)并且不熟悉编译,linkig ...
根据 Kumar here 的建议,我做了
sudo ldconfig /usr/local/cuda/lib64
它神奇地开始工作了。谢谢库马尔!