导入错误:libcuda.so.1:无法打开共享对象文件

问题描述 投票:0回答:6

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

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

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

我已经尝试过命令:

source /etc/profile

但这不起作用。

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

我该如何修复它?

python tensorflow cuda screen cuda-driver
6个回答
12
投票

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

6
投票

背景

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

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

或者,也可能是库搜索路径配置错误 - 因为通常,

libcuda.so.*
应该安装在该路径上的某个目录中!

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

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

一个典型的场景是

/etc/ld.so.conf
添加
/usr/lib/x86_64-linux-gnu
;并让
libcuda.so.*
在那里。

底线

这是你应该做的:

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

3
投票

尝试将

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

示例:

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

0
投票

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

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

0
投票

如果您尝试在容器内运行作业,请尝试使用

nvidia-docker run
而不是
docker run
来启动它。其他说明可以在这里找到:https://github.com/NVIDIA/nvidia-docker


0
投票

首先,将其放入我的笔记本中(协作):

´´´ 蟒蛇 导入操作系统 os.environ['LD_LIBRARY_PATH'] += ':/usr/local/cuda-12.2/compat' ´´´ /usr/local/cuda-12.2/compat <--- This is my path (libcuda.so.1)

下一步 !pip 从 git 安装 llama.cpp,然后将路径复制到新目录中

!导出 LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./llama.cpp/quantize

© www.soinside.com 2019 - 2024. All rights reserved.