【问题标题】:Cuda: library nvvm not foundCuda:未找到库 nvvm
【发布时间】:2018-07-01 07:50:06
【问题描述】:

我正在尝试运行下面的代码但报错:

NvvmSupportError:找不到 libNVVM。做conda install cudatoolkit: library nvvm not found

我的开发环境是:Ubuntu 17.04、Spyder/Python3.5,我已经通过 conda(numba 和 cudatoolkit)安装。 Nvidia GPU(GTX 1070 和 GTX 1060)。

import numpy as np
from timeit import default_timer as timer
from numba import vectorize

@vectorize(["float32(float32, float32)"], target='cuda')     
def VecADD(a,b):
    return a+b        

n = 32000000
a = np.ones (n, dtype=np.float32) 
b = np.ones (n, dtype=np.float32)     
c = np.zeros(n, dtype=np.float32) 

start = timer()
C = VecADD(a,b)
print (timer() - start)

有人知道如何解决这个问题吗?

【问题讨论】:

  • 听起来像 GPU 驱动程序或 CUDA 工具包没有正确安装。安装 CUDA 工具包后,是否正确设置了 PATH 和 LD_LIBRARY_PATH 环境变量?您是否验证了 CUDA 工具包安装? /usr/local/cuda/nvvm/lib64 是否有任何 libnvvm 库?
  • 我怀疑(如果我没记错的话),您不需要指定首先使用哪个 GPU 吗?
  • @stucash:不,你没有。发布的代码对我来说是开箱即用的
  • @talonmies 是的,我想我错了 :)
  • 我做了几次测试,我相信这是一个PATH问题,但我仍然无法解决它。无论如何,我在 jupyter-notebook 上对其进行了测试,它运行良好,我现在就使用它。谢谢!

标签: python ubuntu cuda gpu numba


【解决方案1】:

以防万一其他人偶然发现类似问题,不再支持其他答案中建议的环境变量。已弃用并替换为 CUDA_HOME http://numba.pydata.org/numba-doc/latest/cuda/overview.html#setting-cuda-installation-path

【讨论】:

    【解决方案2】:

    Debian »Buster« 与 CUDA 10.2(和 pip3 而不是 conda)

    numba -s
    …
    CUDA libraries:
    Finding cublas
        ERROR: can't locate lib
    Finding cusparse
        ERROR: can't locate lib
    Finding cufft
        ERROR: can't locate lib
    Finding curand
        ERROR: can't locate lib
    Finding nvvm
        ERROR: can't locate lib
        finding libdevice for compute_20... ERROR: can't open libdevice for compute_20
        finding libdevice for compute_30... ERROR: can't open libdevice for compute_30
        finding libdevice for compute_35... ERROR: can't open libdevice for compute_35
        finding libdevice for compute_50... ERROR: can't open libdevice for compute_50
    …
    

    然后是手册

    sudo ln -sv /usr/lib/x86_64-linux-gnu/libcublas.so.10 /usr/local/cuda/lib64/ 
    export NUMBAPRO_CUDALIB=/usr/local/cuda/lib64/
    export NUMBAPRO_LIBDEVICE=/usr/local/cuda/nvvm/libdevice/ 
    export NUMBAPRO_NVVM=/usr/local/cuda/nvvm/lib64/libnvvm.so
    

    我们得到

    numba -s
    …
    CUDA libraries:
    Finding cublas
        named  libcublas.so.10
        trying to open library...   ok
    Finding cusparse
        named  libcusparse.so.10.3.1.89
        trying to open library...   ok
    Finding cufft
        named  libcufft.so.10.1.2.89
        trying to open library...   ok
    Finding curand
        named  libcurand.so.10.1.2.89
        trying to open library...   ok
    Finding nvvm
        named  libnvvm.so
        trying to open library...   ok
        finding libdevice for compute_20... ok
        finding libdevice for compute_30... ok
        finding libdevice for compute_35... ok
        finding libdevice for compute_50... ok
    …
    

    【讨论】:

      【解决方案3】:

      在 Debian Stretch 系统中:

      ln -s /usr/lib/x86_64-linux-gnu/ /usr/lib/nvidia-cuda-toolkit/bin/nvvm/lib64

      ln -s /usr/lib/nvidia-cuda-toolkit/libdevice/ /usr/lib/nvidia-cuda-toolkit/bin/nvvm/libdevice

      导出 CUDA_HOME=/usr/lib/nvidia-cuda-toolkit/bin/


      修复了 pb..

      【讨论】:

        【解决方案4】:

        在完全相同的情况下对我有用的是在 .bashrc 中包含以下内容(我目前使用的是 cuda-9.0)。不要被变量名中的 NUMBAPRO 所迷惑——它适用于 numba(至少对我来说):

        export NUMBAPRO_NVVM=/usr/local/cuda-9.0/nvvm/lib64/libnvvm.so
        export NUMBAPRO_LIBDEVICE=/usr/local/cuda-9.0/nvvm/libdevice/
        

        更新:它也对我有用。由于我使用的是 Cuda 10.1,因此我包含了以下行而不是您的行:

        export NUMBAPRO_NVVM=/usr/local/cuda-10.1/nvvm/lib64/libnvvm.so
        export NUMBAPRO_LIBDEVICE=/usr/local/cuda-10.1/nvvm/libdevice/
        

        【讨论】:

        • 对我来说,将这些环境变量添加到 PyCharm 中的调试配置下的环境变量列表中。
        • @JEM_Mosig 仅供参考,或者任何想从终端访问它的人,您可以将这些行添加到您的 ~/.bashrc 文件中 - 它是您主目录中的隐藏文件
        • 谢谢。您的解决方案适用于我们的 HPC 系统(尽管路径不同)
        • miniconda3 安装我必须使用这些路径:export NUMBAPRO_NVVM=/opt/miniconda3/lib/; export NUMBAPRO_LIBDEVICE=/opt/miniconda3/lib/ 另请参阅:numba.pydata.org/numba-doc/latest/cuda/…
        【解决方案5】:

        根据我的经验,如果您使用来自 https://ngc.nvidia.com/catalog/landing 的容器,所有这些 CUDA(和类似的驱动程序)问题都会消失。

        您必须确保使用nvidia-docker 而不是docker 启动docker,这样会非常有效地启用与GPU 相关的驱动程序。

        【讨论】:

          【解决方案6】:

          在 Ubuntu 18.04 上,如果您从官方存储库安装所有库和软件包,您需要在 .bashrc 上添加两个信息,以允许 numba 找到您的库和设备:

          ...
          export NUMBAPRO_LIBDEVICE=/usr/lib/cuda/nvvm/libdevice
          export NUMBAPRO_NVVM=/usr/lib/x86_64-linux-gnu/
          ...
          

          NUMBAPRO_LIBDEVICE 信息已从包中提取:

          $ dpkg -L nvidia-cuda-toolkit
          

          和 NUMBAPRO_NVVM 来自:

          $ dpkg -L libnvvm3
          

          就是这样。

          【讨论】:

          • 效果很好。谢谢。 Python 3.7、Linux mint、numba 由 pip 安装。
          【解决方案7】:

          一种解决方案是:

          import os
          
          os.environ['NUMBAPRO_NVVM']      = r'C:\Program Files\NVIDIA GPU Computing 
          Toolkit\CUDA\v8.0\nvvm\bin\nvvm64_31_0.dll'
          
          os.environ['NUMBAPRO_LIBDEVICE'] = r'C:\Program Files\NVIDIA GPU Computing 
          Toolkit\CUDA\v8.0\nvvm\libdevice'
          

          或者,如果您使用 PyCharm,请转至运行 > 编辑配置

          export NUMBAPRO_NVVM=/usr/local/cuda-{cuda version}/nvvm/lib64/libnvvm.so
          export NUMBAPRO_LIBDEVICE=/usr/local/cuda-{cuda version}/nvvm/libdevice/
          

          【讨论】:

            【解决方案8】:

            我使用 anaconda-navigator 解决了这个问题。 你可以在这里下载:https://www.anaconda.com/distribution/

            1. 在终端中打开 anaconda 导航器:anaconda-navigator
            2. 在 anaconda 导航器中选择环境
            3. 搜索 cudatoolkit
            4. 选择 cudatoolkit
            5. 点击申请

            这是我安装的 cudatoolkit。

            这是当您选择未安装的软件包时单击的按钮

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-06-02
              • 1970-01-01
              • 1970-01-01
              • 2018-07-30
              • 2012-08-12
              • 2015-01-17
              相关资源
              最近更新 更多