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所解释的那样,它是:
- 来自
$LD_LIBRARY_PATH
的目录
- 来自
/etc/ld.so.conf
的目录
/lib
/usr/lib
一个典型的场景是 /etc/ld.so.conf
添加,比方说,/usr/lib/x86_64-linux-gnu
; libcuda.so.*
在那里。
底线
这是你应该做的:
- 确保已正确安装(最新的)CUDA 驱动程序。如果没有,下载安装,问题解决
- 找到
libcuda.so.1
文件(例如使用 locate
)。如果它被放置在不在库搜索路径中的某个奇怪的地方 - 按照步骤 1 中的方式操作。
- 如果您想要驱动程序库安装在某个奇怪的地方,然后将该路径添加到您的用户
$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
当我 运行 我的代码直接使用 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所解释的那样,它是:
- 来自
$LD_LIBRARY_PATH
的目录
- 来自
/etc/ld.so.conf
的目录
/lib
/usr/lib
一个典型的场景是 /etc/ld.so.conf
添加,比方说,/usr/lib/x86_64-linux-gnu
; libcuda.so.*
在那里。
底线
这是你应该做的:
- 确保已正确安装(最新的)CUDA 驱动程序。如果没有,下载安装,问题解决
- 找到
libcuda.so.1
文件(例如使用locate
)。如果它被放置在不在库搜索路径中的某个奇怪的地方 - 按照步骤 1 中的方式操作。 - 如果您想要驱动程序库安装在某个奇怪的地方,然后将该路径添加到您的用户
$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