【问题标题】:Tensorflow GPU Python 3.5. Eclipse has error: ImportError: libcudart.so.8.0: cannot open shared object file:TensorFlow GPU Python 3.5。 Eclipse 有错误:ImportError: libcudart.so.8.0: cannot open shared object file:
【发布时间】:2017-08-12 08:44:25
【问题描述】:

我在 Python 3.5 Anaconda 环境中安装了 Tensorflow GPU v1.0。一切似乎都很好。我可以运行 Juputer notebook 并在终端中运行以下几行。它告诉 GPU 运行良好:

import tensorflow as tf
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))



====Output
Python 3.5.3 |Continuum Analytics, Inc.| (default, Mar  6 2017, 11:58:13) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened    CUDA library libcublas.so.8.0 locally
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcudnn.so.5 locally
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcufft.so.8.0 locally
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcuda.so.1 locally
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcurand.so.8.0 locally
>>> sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))


…

I tensorflow/core/common_runtime/gpu/gpu_device.cc:906] DMA: 0 1 
I tensorflow/core/common_runtime/gpu/gpu_device.cc:916] 0:   Y Y 
I tensorflow/core/common_runtime/gpu/gpu_device.cc:916] 1:   Y Y 
…

但是,在 Eclipse 中,我通过选择 Ananconda/env//bin/python 来设置环境。以上 2 个 GPU 验证行给出错误:

ImportError: libcudart.so.8.0: 无法打开共享对象文件:没有这样的文件或目录

我在另一个 Anaconda 环境中尝试过 Tensorflow CPU,Jupyter、终端、Eclipse,都很好!

Eclipse 中对于 tensorflow GPU 缺少什么?让 Eclipse 为 Tensoflow GPU v1.0 工作的任何额外步骤。

========错误信息========

File "/home/<username>/anaconda3/envs/dl-conda-py35/lib/python3.5/imp.py", line 242, in load_module
return load_dynamic(name, filename, file)
File "/home/<username>/anaconda3/envs/dl-conda-py35/lib/python3.5/imp.py", line 342, in load_dynamic
return _load(spec)
ImportError: libcudart.so.8.0: cannot open shared object file: No such file or directory

但文件:libcudart.so.8.0 存在。

$ls /usr/local/cuda/lib64/libcudart.so.8.0
/usr/local/cuda/lib64/libcudart.so.8.0

我设置 Eclipse Python 解释器的方式与 Tensorflow CPU 相同(CPU 没有问题)。但是GPU tensorflow有问题。

【问题讨论】:

  • 您安装了 CUDA 版本 8 吗?如果是这样,您的所有库都应该位于 /usr/local/cuda/lib64/libcuda* 中,您可能必须运行 ldconfig 来更新共享库缓存(以便 tensorflow 可以找到它)
  • cuda8,cudnn5 已安装。我检查了安装,它看起来不错。我可以运行一些 tensorflow 项目。有些项目不在 tensorflow gpu 版本上运行,但在 tensorflow cpu 上运行良好。我知道gpu版本似乎不稳定。我没关系。我试图弄清楚为什么 Eclipse 不适用于 tensorflow gpu v1.0,并给我错误。
  • 运行ls /usr/local/cuda/lib64/ 你会得到什么?然后制作并运行几个 cuda8 样本@/usr/local/cuda/samples/1_Utilities(将使用 libcudart)并确保它们运行。如果它们不运行,则说明您的安装不正确(Eclipse 将找不到它)。
  • ls /usr/local/cuda/lib64/.找到 libcudart.so。 /usr/local/cuda/samples/1_Utilities/bandwidthTest$ ./bandwidthTest.它运行正常。 Eclipse不行,只有Tensorflow GPU v1.0,Python3.5。对于 Tensorflow CPU,Eclipse 适合我。
  • 在原帖中添加了详细的错误信息。

标签: eclipse tensorflow gpu


【解决方案1】:

您遇到了与此cuda7.5 question 类似的问题。快速浏览一下。

我建议在运行 IDE 时将 CUDA lib 文件夹添加到 PYTHONPATH。

PYTHONPATH=$PYTHONPATH:/usr/local/cuda/lib64 ./myEclipseFolder/eclipse

简而言之,因为您可以从命令行工作但不能从 Eclipse IDE 工作,所以您必须正确配置 Eclipse python 解释器并将其指向正确的 CUDA lib 和 bin 路径。 TensorFlow CPU 不需要这个,它不依赖libcudart.so 祝你好运!

更新 -- 添加 Liclipse/PyDev 截图:

更新 2:运行上面的代码是我得到的消息,TF GPU 正在工作:

【讨论】:

  • 感谢您的回复。如何添加它?我只知道项目工作区下的 .project 文件。 1)我尝试手动将'/usr/local/cuda/lib64'添加到PyDev-Interpreter/Grammar配置-> python解释器:底部:库(PYTHONPATH)。 2) 添加'/usr/local/cuda/lib64' PyDev-PYTHONPATH:External Library。但是,两者都不起作用。
  • 我添加了一个屏幕截图...这与您的操作相符吗?我的设置中没有看到语法配置
  • 是的。这正是我所做的,我在我的机器上看到了与屏幕截图相同的配置。不行。我重新启动机器,仍然无法正常工作。这适合你吗?
  • 我发布了我的 Eclipse 运行命令的屏幕截图,TF GPU 正在工作...打开 GPU 并报告设备已准备好。你能跑pip freeze | grep tensorflow ...我显示:tensorflow-gpu==1.0.0
  • 点冻结 | grep tensorflow 在我的电脑上显示:tensorflow-gpu==1.0.0。但是 Eclipse 对我不起作用。您的屏幕截图显示 GPU 正在工作。让我挖掘更多。非常感谢您的屏幕截图(我认为这是我的问题,它应该可以工作)。如果切换到 CPU Tensoflow,它会立即为我工作。
【解决方案2】:

有趣的是,我遵循了 ruoho ruotsi 的指示。当我使用 sudo ./yourEclipse/eclipse 启动 eclipse 时,它​​仍然找不到 cuda,但没有 sudo,它可以。

更新: 如果我使用 sudo 启动 Eclipse,我必须通过设置运行配置 -> 环境变量在 Eclipse 中添加 LD_LIBRARY_PATH=:/usr/local/cuda/lib64。

【讨论】:

【解决方案3】:

在这种情况下,我认为第一件事是从命令行运行它...之后,我的建议是从同一个 shell 启动 Eclipse,然后在启动它时检查所有环境变量是否匹配从外壳。

请注意,PYTHONPATH 是 PyDev 中的一个特殊变量,由您在解释器和项目的源文件夹中添加的文件组成,因此,要检查 PYTHONPATH,我的建议是创建一个程序:

import sys
print('\n'.join(sorted(sys.path)))

并从命令行和 Eclipse 内部运行它以比较可能有什么不同(并相应地修复 PyDev 上的配置)。

【讨论】:

  • 我试过了。 Eclipse、终端、笔记本,都输出相同的环境。但是,Eclipse 仍然无法正常工作。在 Eclipse 中,我在设置解释器时将 /usr/local/cuda/lib64 添加到“库”。顺便说一句,这是新的 Anaconda 环境,“conda list”显示 tensorflow-gpu 1.0.1
  • 1) 创建 virtualenv python3.5,tensorflow GPU。 Eclipse 和 Anaconda 环境有同样的问题。终端工作,Eclipse 不工作。 2) 尝试了“Fabio Zadrozny”建议的 2 行脚本。终端和Eclipse输出是一样的,Eclipse多了一个:/usr/local/cuda-8.0/lib64 /usr/local/cuda/lib64,是我自己加的,希望Eclipse用这个目录解决“ImportError: libcudart. so.8.0:无法打开共享对象文件:没有这样的文件或目录”。还是不行。
  • 尝试执行以下操作:创建 virtualenv,激活它,从同一个 shell 启动 eclipse(激活 virtualenv)并检查它是否有效。
  • 法比奥,感谢您的重播。如何从终端启动 Eclipse。我有:~/eclipse/jee-neon/eclipse$ ls configuration dropins eclipse eclipse.ini icon.xpm plugins readme
  • 执行./eclipse
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-05
  • 2018-05-22
  • 2020-04-10
  • 1970-01-01
  • 2021-10-01
  • 2020-10-07
  • 1970-01-01
相关资源
最近更新 更多