升级到最新的 nvidia 驱动程序后缺少 libcuda.so.1 文件

升级到最新的 nvidia 驱动程序后缺少 libcuda.so.1 文件

我已升级到最新的(测试版)Nvidia 驱动程序 -nvidia-381因为之前的驱动程序存在问题。从挂起状态唤醒后,窗口边缘出现问题 - 请参阅这里

因此我升级到了较新的驱动程序,从375.39381.09

自从升级以来,我不得不重新安装 Nvidia 的Cuda 工具包 8.0(和 CUDNN v5.1),但似乎缺少一个驱动程序文件,这使我无法在 R 中安装 Tensorflow 和 gputools 包,这两个包基于 Cuda Toolkit 构建,而 Cuda Toolkit 又需要缺少的 libcuda.so.1 文件。 和 都Tensorflow无法gputools找到该文件:libcuda.so.1。 使用之前的驱动程序,我可以毫无问题地安装 Cuda Toolkit。

这是一个类似的问题,但涉及较老的司机:https://github.com/tensorflow/tensorflow/issues/4078

我读到过,我可以创建这个文件,因为它是一个符号链接,但是我宁愿不这样做,因为我不知道还存在什么其他依赖项。可能的解决方法示例:https://stackoverflow.com/questions/41890549/tensorflow-cannot-open-libcuda-so-1

我正在运行 Ubuntu 16.04。我也在Ubuntu launchpad

问题:

  1. 有人能知道为什么这个文件丢失或者提出一个稳定的解决方案吗?
  2. 如果我必须更换我的驱动程序 - 哪种降级方式最好以及如何决定降级到哪个?

额外信息:

  1. 如果我在系统上搜索丢失的文件,我会找到以下类似的文件,但不是我需要的文件:

    user@user $ tree / -fiC | grep libcuda.so
        /usr/local/cuda-8.0/doc/man/man7/libcuda.so.7
        /usr/local/cuda-8.0/lib64/stubs/libcuda.so
        /usr/share/man/man7/libcuda.so.7
    
  2. 如果我查看 Nvidia 驱动程序想要卸载,我应该使用给定的卸载脚本,然后我们发现它在安装时没有意识到 libcuda.so.1 文件,因此它不在这个脚本中:

    user@user $ /usr/local/cuda-8.0/bin$ cat 
    
    .uninstall_manifest_do_not_delete.txt | grep libcuda.so
    file:/usr/share/man/man7/libcuda.so.7:5708adf9bb3c591eb4f1d0d50e78f3df
    file:/usr/local/cuda-8.0/lib64/stubs/libcuda.so:8347cb2f5500934b1942ba42f3979fac
    file:/usr/local/cuda-8.0/doc/man/man7/libcuda.so.7:5708adf9bb3c591eb4f1d0d50e78f3df
    
  3. 由于存在 libcuda.so.1 文件的存根(如上面的输出所示),我创建了该文件缺失的符号链接:

    user@user $ sudo ln -s /usr/local/cuda-8.0/lib64/stubs/libcuda.so /usr/local/cuda-8.0/lib64/libcuda.so.1
    

    这实际上允许gputools成功安装 R 中的包,但是调用 GPU 的函数失败了:

    R> gpuMatMult(matA, matB)
    Error in gpuMatMult(matA, matB) : device memory allocation failed Calls: gpuMatMult -> .Call
    
  4. 使用deviceQuery捆绑到samplesCuda Toolkit 中的实用程序(您必须首先sudo make使用它),我发现肯定存在问题,Cuda 自己注意到了这一点:

    user@user $ /usr/local/cuda/samples/1_Utilities/deviceQuery$ ./deviceQuery
    
        ./deviceQuery Starting...
    
        CUDA Device Query (Runtime API) version (CUDART static linking)
    
        cudaGetDeviceCount returned 35
        -> CUDA driver version is insufficient for CUDA runtime version
        Result = FAIL
    

当前状态:

我已将我所知道的以前与 Cuda Toolkit 8.0、CUDNN 5.1 - 配合使用的驱动程序降级nvidia-378.13。使用 Cuda 和 CUDNN 的工具现在也能像以前一样正常工作,例如tensorflowgputools在 R 中)等。

一切都按预期进行,包括从挂起状态唤醒后显示像素化窗口边缘的错误。

相关内容