ImportError: libcuda.so.1: cannot open shared object file

ImportError: libcuda.so.1: cannot open shared object file

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

但是,当我 运行 它出现在屏幕 window 中时,出现以下错误。

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

我试过命令:

source /etc/profile

但是不行。

因为我是用ssh连接服务器的,screen是必须的。

我该如何解决?

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

示例:

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

背景

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

现在,很可能已经正确安装了 CUDA Toolkit,而没有正确安装 driver。此错误可能是在这种情况下构建(非静态链接的)CUDA 应用程序的结果。

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

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

  1. 来自 $LD_LIBRARY_PATH
  2. 的目录
  3. 来自 /etc/ld.so.conf
  4. 的目录
  5. /lib
  6. /usr/lib

一个典型的场景是 /etc/ld.so.conf 添加,比方说,/usr/lib/x86_64-linux-gnulibcuda.so.* 在那里。

底线

这是你应该做的:

  1. 确保已正确安装(最新的)CUDA 驱动程序。如果没有,下载安装,问题解决
  2. 找到 libcuda.so.1 文件(例如使用 locate)。如果它被放置在不在库搜索路径中的某个奇怪的地方 - 按照步骤 1 中的方式操作。
  3. 如果您想要驱动程序库安装在某个奇怪的地方,然后将该路径添加到您的用户$LD_LIBRARY_PATH

要遵循的步骤:
查找 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