ImportError:libcuda.so.1:无法打开共享对象文件



当我直接用TensorFlow运行代码时,一切都很正常。

然而,当我在屏幕窗口中运行它时,我会得到以下错误。

ImportError: libcuda.so.1: cannot open shared object file: No such file or directory

我尝试过命令:

source /etc/profile

但它不起作用。

因为我使用ssh连接到服务器,所以屏幕是必要的。

我该怎么修?

接下来的步骤:
查找libcuda.so.1

echo $LD_LIBRARY_PATH #path
sudo find /usr/ -name 'libcuda.so.*' #version

然后在终端中使用以下命令添加到$LD_LIBRARY_PATH,在本例中为/usr/local/cuda-10.0/compat

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-10.0/compat

背景

libcuda.so.1是用于与CUDA驱动程序交互的库(与CUDA的"运行时API"相反,您需要libcudart.so.*)。

现在,在没有正确安装驱动程序的情况下,很有可能正确安装CUDA工具包。这种错误可能是在这种情况下构建(非静态链接的)CUDA应用程序的结果。

或者,也可能是库搜索路径配置错误——因为通常情况下,libcuda.so.*应该安装在该路径上的某个目录中!

那么,搜索路径上有什么?正如这里所解释的,它是:

$LD_LIBRARY_PATH中的
  1. 目录
  2. /etc/ld.so.conf中的目录
  3. /lib
  4. /usr/lib

典型的场景是/etc/ld.so.conf添加/usr/lib/x86_64-linux-gnu;并且CCD_ 11在那里。

底线

以下是您应该做的:

  1. 请确保已正确安装(n个最新的)CUDA驱动程序。如果还没有,下载并安装它,问题就解决了
  2. 找到libcuda.so.1文件(例如,使用locate)。如果它被放置在库搜索路径之外的某个奇怪的地方,请按照步骤1操作
  3. 如果希望驱动程序库安装在某个奇怪的地方,将该路径添加到用户的$LD_LIBRARY_PATH

尝试将libcuda.so.1路径放置到LD_LIBRARY_PATH环境变量。

示例:

export LD_LIBRARY_PATH=/path/of/libcuda.so.1:$LD_LIBRARY_PATH

根据我的情况,我在docker容器环境中进行开发,我执行以下步骤:

  1. 确认您的docker容器已使用nvidia gpu运行
  2. 找到libcuda.so.1:sudo find /usr/ -name 'libcuda.so.*'
  3. 然后在终端中使用以下命令添加到$LD_LIBRARY_PATH,在我的情况下是/usr/local/cuda-11.5/compatexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.5/compat

如果您试图在容器内运行作业,请尝试用nvidia-docker run而不是docker run启动它。其他说明可在此处找到:https://github.com/NVIDIA/nvidia-docker

相关内容

  • 没有找到相关文章

最新更新