尽管安装了 CUDA,但仍未找到 libcuda.so.1?

尽管安装了 CUDA,但仍未找到 libcuda.so.1?

在 ubuntu 16.04 上运行 tensorflow 时找不到 libcuda.so.1。此文件是 CUDA 工具的一部分,我应该安装它;也许只是没有安装到正确的位置?我尝试通过以下命令搜索文件:

find / -type f -name "libcuda.so.1

我得到了一个文件列表(缩短列表):

ind: ‘/etc/cups/ssl’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/ssl/private’: Permission denied
find: ‘/tmp/systemd-private-bfc953f066c54c8f8989b0585e58681d-colord.service-QhckWW’: Permission denied
find: ‘/tmp/systemd-private-bfc953f066c54c8f8989b0585e58681d-systemd-timesyncd.service-A46ooI’: Permission denied
find: ‘/tmp/systemd-private-bfc953f066c54c8f8989b0585e58681d-rtkit-daemon.service-pZ6U3J’: Permission denied
find: ‘/lost+found’: Permission denied
find: ‘/var/tmp/systemd-private-7216baf4e9e24f4b99aa9cd9d37e9779-rtkit-daemon.service-vEpGYO’: Permission denied
find: ‘/var/tmp/systemd-private-c9508c53c88848febd8d6b9c7758d44d-colord.service-6sVMbw’: Permission denied
find: ‘/var/tmp/systemd-private-7216baf4e9e24f4b99aa9cd9d37e9779-systemd-timesyncd.service-DifcXc’: Permission denied
find: ‘/var/tmp/systemd-private-7216baf4e9e24f4b99aa9cd9d37e9779-colord.service-j5hYyg’: Permission denied
find: ‘/var/tmp/systemd-private-81dcc732570e47799cb04c3cb0c5a2c6-systemd-timesyncd.service-dSg1Cz’: Permission denied
find: ‘/var/tmp/systemd-private-f72e80f0374645bda6c2d99c5628e374-colord.service-FbxlSK’: Permission denied
find: ‘/var/tmp/systemd-private-5065912711c44bfd880f3aca2d0008e7-colord.service-rq0MKq’: Permission denied
find: ‘/var/tmp/systemd-private-bfc953f066c54c8f8989b0585e58681d-rtkit-daemon.service-W2mqTy’: Permission denied
find: ‘/var/tmp/systemd-private-5065912711c44bfd880f3aca2d0008e7-rtkit-daemon.service-Nmhoc5’: Permission denied
find: ‘/var/tmp/systemd-private-bfc953f066c54c8f8989b0585e58681d-colord.service-yD6AKb’: Permission denied
find: ‘/var/tmp/systemd-private-310aa08f8dac48c087fb3d04eb13211d-rtkit-daemon.service-2aRSdk’: Permission denied
find: ‘/var/tmp/systemd-private-cc0e6bd6ee4c4e5a8e66d39c662b4262-systemd-timesyncd.service-cR7tKn’: Permission denied
find: ‘/var/tmp/systemd-private-81dcc732570e47799cb04c3cb0c5a2c6-colord.service-RpnOff’: Permission denied
find: ‘/var/tmp/systemd-private-93e35b4b8e084692829998454c625032-rtkit-daemon.service-FPP0C0’: Permission denied
find: ‘/var/tmp/systemd-private-f72e80f0374645bda6c2d99c5628e374-rtkit-daemon.service-KSb7II’: Permission denied
find: ‘/var/tmp/systemd-private-93e35b4b8e084692829998454c625032-colord.service-umcrrr’: Permission denied
find: ‘/var/tmp/systemd-private-bfc953f066c54c8f8989b0585e58681d-systemd-timesyncd.service-zCbfRG’: Permission denied
find: ‘/var/tmp/systemd-private-cc0e6bd6ee4c4e5a8e66d39c662b4262-rtkit-daemon.service-YUHCBb’: Permission denied
find: ‘/var/tmp/systemd-private-f72e80f0374645bda6c2d99c5628e374-systemd-timesyncd.service-3gwsBe’: Permission denied
find: ‘/var/tmp/systemd-private-c9508c53c88848febd8d6b9c7758d44d-systemd-timesyncd.service-9KAj0J’: Permission denied
find: ‘/var/tmp/systemd-private-81dcc732570e47799cb04c3cb0c5a2c6-rtkit-daemon.service-Lua60R’: Permission denied
find: ‘/var/tmp/systemd-private-cc0e6bd6ee4c4e5a8e66d39c662b4262-colord.service-9wRZuD’: Permission denied
find: ‘/var/tmp/systemd-private-310aa08f8dac48c087fb3d04eb13211d-systemd-timesyncd.service-1IVY9S’: Permission denied
find: ‘/var/tmp/systemd-private-310aa08f8dac48c087fb3d04eb13211d-colord.service-BcEhRd’: Permission denied

我不太清楚这些文件的大部分含义。这些文件是“libcuda”的一部分吗?或者这是否意味着 libcuda 未安装。

谢谢。

听了@ravery 的建议后:

我尝试过这个:

ls /usr/local/cuda-8.0/doc/man/man7/libcuda.so.7 -la

这给了我这样的输出:

-rw-r--r-- 1 root root 26 Jan 26  2017 /usr/local/cuda-8.0/doc/man/man7/libcuda.so.7

如果我运行 nvidia-smi,我会得到以下结果:

------------------------------------------------------+                       
| NVIDIA-SMI 340.104    Driver Version: 340.104        |                       
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 260     Off  | 0000:01:00.0     N/A |                  N/A |
| 40%   46C   P12    N/A /  N/A |    226MiB /   895MiB |     N/A      Default |
+-------------------------------+----------------------+----------------------+

    +-----------------------------------------------------------------------------+
    | Compute processes:                                               GPU Memory |
    |  GPU       PID  Process name                                     Usage      |
    |=============================================================================|
    |    0            Not Supported      

所以我必须将我的 libdua.os.7 链接到我的显卡驱动程序?

找到这个驱动程序的最佳方法是什么?谢谢。

我也尝试过这个:

ln -s /usr/local/cuda-8.0/doc/man/man7/libcuda.so.7 /usr/local/cuda/lib/libcuda.so.1

输出:

failed to create symbolic link '/usr/local/cuda/lib/libcuda.so.1': No such file or directory

编辑:玩了几天后,我仍然卡住了。

更多信息:

如果我浏览我的计算机目录,我会注意到在这个位置有一个 CUDA-8.0:

/usr/local/

我还看到一个带有箭头的 CUDA 文件夹(我猜想它代表一个快捷方式)在这里

   /usr/local

第二次更新:

运行此命令:

export PATH=$PATH:/usr/local/cuda-8.0/bin

现在 nvcc --version 返回:

vcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2016 NVIDIA Corporation
Built on Tue_Jan_10_13:22:03_CST_2017
Cuda compilation tools, release 8.0, V8.0.61

然而,

locate libcuda.so.1

仍然返回一个空白屏幕。

答案1

NVIDIA GPU Cloud Image我在Azure上遇到了同样的问题Standard_NV6,在 Docker 中运行。对我来说,问题是我在运行

docker run -it tensorflow/tensorflow:latest-gpu-py3 bash

我应该用标志来运行它,--runtime=nvidia或者nvidia-docker而不是docker

nvidia-docker run -it tensorflow/tensorflow:latest-gpu-py3 bash
docker run --runtime=nvidia -it tensorflow/tensorflow:latest-gpu-py3 bash

答案2

它应该链接到/usr/local/lib/cuda/lib64/stubs/libcuda.so.1

答案3

可能存在各种问题。不仅与 CUDA 有关,还与 Nvidia 驱动程序有关。

我的建议:使用 conda 安装 tensorflow-gpu。

如果您已经安装了 CUDA9.0,我认为您能做的不多。请查看 tensorflow 网站以了解支持的 CUDA 版本。

答案4

这些不是文件,而是由于权限问题而无法打开的目录。您的文件不会在那里。

libcuda.so.1 其实是一个链接,而不是一个文件。它链接到你的版本文件:例如,libcuda.so.1 链接到 libcuda.so.361.42。

以下命令将打印您的链接所在的路径并找到您的版本文件。

echo $LD_LIBRARY_PATH #path
sudo find /usr/ -name 'libcuda.so.*' #version

如果找到 libcuda.so.1,则将其复制到您的路径中。如果没有,请在您的路径中创建一个指向版本文件的链接。

相关内容