【问题标题】:tensorflow GPU on AWS elastic beanstalk - tf import error with calling "python" + "sudo" ( libcublas.so.9.0 error)AWS弹性beantalk上的tensorflow GPU-调用“python”+“sudo”时出现tf导入错误(libcublas.so.9.0错误)
【发布时间】:2019-01-01 16:35:42
【问题描述】:

我收到了

“ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory”

当我用“sudo python3.6 ...”调用我的应用程序时出错,但当我只调用“python3.6 ...”时不会出错

elastic beanstalk 使用“sudo”,因此删除命令不是一种选择。

仅安装了 CUDA 9.0(这是我们环境的正确版本),并且 /usr/local/cuda/lib64/libcublas.so.9.0 存在。

我们使用相同的配置和相同的 AMI ID 创建了一个单独的 ec2 实例:CUDA9ClassicAmazonLinuxDLAMIwithMXNetTensorflowandCaffe2,并且没有任何问题。这似乎是只有弹性豆茎才会出现的问题。

$LD_LIBRARY_PATH = '/usr/local/cuda/lib64:/usr/local/lib:/usr/lib:/usr/local/cuda/extras/CUPTI/lib64:/usr/local/mpi/lib: /lib/:/home/ubuntu/src/caffe2/build:/home/ec2-user/src/caffe2/build:/usr/local/cuda/lib64:/usr/local/lib:/usr/lib:/ usr/local/cuda/extras/CUPTI/lib64:/usr/local/mpi/lib:/usr/local/cuda/lib64:/usr/local/lib:/usr/lib:/usr/local/cuda/extras /CUPTI/lib64:/usr/local/mpi/lib:/lib/:/home/ubuntu/src/caffe2/build:/home/ec2-user/src/caffe2/build:/usr/local/cuda/lib64 :/usr/local/lib:/usr/lib:/usr/local/cuda/extras/CUPTI/lib64:/usr/local/mpi/lib:'

$PATH = '/usr/local/cuda/bin:/usr/local/bin:/opt/aws/bin:/usr/local/mpi/bin:/home/ubuntu/src/caffe2/build: /home/ec2-user/src/caffe2/build:/usr/local/cuda/bin:/usr/local/bin:/opt/aws/bin:/usr/local/mpi/bin:/usr/local/ cuda/bin:/usr/local/bin:/opt/aws/bin:/usr/local/mpi/bin:/home/ubuntu/src/caffe2/build:/home/ec2-user/src/caffe2/build :/usr/local/cuda/bin:/usr/local/bin:/opt/aws/bin:/usr/local/mpi/bin:/usr/local/bin:/bin:/usr/bin:/usr /local/sbin:/usr/sbin:/sbin:/opt/aws/bin:/home/ec2-user/.local/bin:/home/ec2-user/bin'

有什么想法吗?

【问题讨论】:

  • 这可能是环境问题。 sudo 环境可能无法获取您的 LD_LIBRARY_PATH 变量。作为诊断,您可以尝试:sudo -E python3.6 ...,参见here
  • sudo -E python3.6 ... 也给出了 libcublas.so.9.0 错误,我们也在 python 代码中设置了 os.environ['LD_LIBRARY_PATH'] ,我们将如何设置LD_LIBRARY_PATH 所以 sudo 可以看到吗?
  • 更多诊断:1. 只是为了确认,echo $LD_LIBRARY_PATH 的输出是什么,2. sudo -E bash -c 'echo $LD_LIBRARY_PATH' 的输出是什么(如果您愿意,您可以使用回复编辑您的问题)
  • 我不知道您是不是在暗示这一点,但 os.environ['LD_LIBRARY_PATH'] 本身是不够的。您需要执行类似os.environ['LD_LIBRARY_PATH']='/path/to/cudatoolkit/lib64' 的操作,但可能这就是您的意思。 (如果您在任何导入之前做了类似的事情,我会认为这也可以解决问题。)
  • 是的,我们正在设置 "os.environ['LD_LIBRARY_PATH'] = $path/to/libcublas.so.9.0" 如上所示

标签: python linux amazon-web-services tensorflow


【解决方案1】:

中添加一个用于设置新库(在您的情况下为CUDA)路径的文件
/etc/ld.so.conf.d/foo.conf

文件的内容是CUDA库的路径(/usr/local/cuda/lib64)

然后调用

 sudo ldconfig 

确保库包含在环境中。

【讨论】:

    猜你喜欢
    • 2019-06-18
    • 1970-01-01
    • 2017-11-04
    • 2023-03-15
    • 2018-04-14
    • 1970-01-01
    • 2019-03-20
    • 2019-10-09
    • 2017-12-05
    相关资源
    最近更新 更多