当我直接使用 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 Toolkit,而无需正确安装 driver。此错误可能是在这种情况下构建(非静态链接)CUDA 应用程序的结果。
或者,也可能是库搜索路径配置错误 - 因为通常,
libcuda.so.*
应该安装在该路径上的某个目录中!
那么,搜索路径上有什么?正如here所解释的,它是:
$LD_LIBRARY_PATH
/etc/ld.so.conf
/lib
/usr/lib
一个典型的场景是
/etc/ld.so.conf
添加 /usr/lib/x86_64-linux-gnu
;并让 libcuda.so.*
在那里。
这是你应该做的:
libcuda.so.1
文件(例如使用 locate
)。如果它被放置在不在库搜索路径中的奇怪位置 - 请按照步骤 1 操作。$LD_LIBRARY_PATH
。尝试将
libcuda.so.1
路径放入 LD_LIBRARY_PATH
环境变量。
示例:
export LD_LIBRARY_PATH=/path/of/libcuda.so.1:$LD_LIBRARY_PATH
根据我的情况,我在docker容器环境中开发,我执行以下步骤:
sudo find /usr/ -name 'libcuda.so.*'
$LD_LIBRARY_PATH
(在我的例子中为 /usr/local/cuda-11.5/compat
):
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.5/compat
如果您尝试在容器内运行作业,请尝试使用
nvidia-docker run
而不是 docker run
来启动它。其他说明可以在这里找到:https://github.com/NVIDIA/nvidia-docker
首先,将其放入我的笔记本中(协作):
´´´ 蟒蛇 导入操作系统 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