8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

nvcc 和 NVIDIA-smi 显示不同的 CUDA 版本

Jonald Penpillo 2月前

119 0

我对运行 which nvcc 和 nvidia-smi 所显示的不同 CUDA 版本感到非常困惑。我的 ubuntu 16.04 上安装了 cuda9.2 和 cuda10。现在我将 PATH 设置为指向 cuda9.2。所以...

which nvcc 显示的不同 CUDA 版本感到非常困惑 nvidia-smi 。我的 ubuntu 16.04 上安装了 cuda9.2 和 cuda10。现在我将 PATH 设置为指向 cuda9.2。因此,当我运行

$ which nvcc
/usr/local/cuda-9.2/bin/nvcc

然而,当我跑步时

$ nvidia-smi
Wed Nov 21 19:41:32 2018       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.72       Driver Version: 410.72       CUDA Version: 10.0     |
|-------------------------------+----------------------+----------------------+
| 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 106...  Off  | 00000000:01:00.0 Off |                  N/A |
| N/A   53C    P0    26W /  N/A |    379MiB /  6078MiB |      2%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      1324      G   /usr/lib/xorg/Xorg                           225MiB |
|    0      2844      G   compiz                                       146MiB |
|    0     15550      G   /usr/lib/firefox/firefox                       1MiB |
|    0     19992      G   /usr/lib/firefox/firefox                       1MiB |
|    0     23605      G   /usr/lib/firefox/firefox                       1MiB |

那么,我是按照建议使用 cuda9.2 which nvcc ,还是按照建议使用 cuda10 nvidia-smi ?我 看到了这个答案 ,但它并没有直接解答我的困惑,只是要求我们重新安装 CUDA 工具包,而我已经这样做了。

帖子版权声明 1、本帖标题:nvcc 和 NVIDIA-smi 显示不同的 CUDA 版本
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Jonald Penpillo在本站《tensorflow》版块原创发布, 转载请注明出处!
最新回复 (0)
  • nvidia-smi 命令显示的版本是驱动程序支持的最高 CUDA 版本。您可以在此处忽略它,因为驱动程序向后兼容较旧的工具包。

    如果您的问题与 PyTorch 安装有关,您会发现 Pytorch 通常使用稍旧版本的 CUDA 进行编译。因此,目前我们的最新版本是 CUDA 12.4,而 torch 2.3.0 是根据其文档说明在 CUDA 12.1 上编译的 pytorch.org 。但是,Pytorch 不需要本地 CUDA 工具包即可运行,因为它自带了工具包。您需要确保您的 CUDA 驱动程序允许的最高兼容版本高于编译 PyTorch 库时使用的 CUDA 版本。

    如果版本控制是个问题,最好从源代码编译所有内容。因此,我认为,截至目前,如果您要攻读法学硕士或深度学习等,CUDA 12.1、CUDNN8.9、NCCL 2.18.3 和 tensorrt 10 是您想要使用的稳定版本。

  • 长话短说,这是因为安装了两个不同版本的 CUDA 工具包,其中一个是旧的并且仍在路径上。例如,我的发行版预装了 版本 /usr/bin/nvcc 。安装新版本后,它位于默认路径 /usr/local/cuda/bin/nvcc 。用于 which nvcc 查找系统上的路径。

    无需担心这一点。只需在 .bashrc 中添加以下内容即可解决此问题:

    export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}
    
  • nvcc --version 报告的 CUDA 版本之间的差异 nvidia-smi 是由于它们报告系统 CUDA 设置的不同方面。

    • nvcc --version 报告您安装的 CUDA 工具包的版本。这是用于编译 CUDA 代码的版本。
    • nvidia-smi 另一方面,报告您的 GPU 驱动程序支持的最高 CUDA 版本。

    在您的情况下, nvcc --version 报告的是 CUDA 10.1,因为这是您安装的 CUDA 工具包的版本。 nvidia-smi 报告的是不同的版本,因为您的 GPU 驱动程序最高可以支持该 CUDA 版本。

    运行 CUDA 程序时,所使用的 CUDA 版本由编译程序时使用的 CUDA 工具包版本决定。但是,程序使用的 CUDA 版本也必须得到 GPU 驱动程序的支持。如果您的 GPU 驱动程序不支持程序使用的 CUDA 版本,您将遇到错误。

  • 这个答案也是正确的,为什么它被否决了; nvidia-smi 仅仅显示驱动程序支持的最大 cuda 版本,并没有真正暗示是否安装了 Cuda。

  • nvidia-smi 可以显示与 报告的“不同的 CUDA 版本” nvcc 。因为它们报告了两件不同的事情:

    nvidia-smi 显示对给定的 GPU 驱动程序支持的最大可用的 CUDA 版本。报告的第二项 nvcc -V 是系统当前正在使用的 CUDA 版本。

    简而言之

    nvidia-smi 显示驱动程序支持的最高 CUDA 版本。 nvcc -V 显示当前安装的 CUDA 版本。只要驱动程序支持的版本高于您安装的版本,就可以了。您甚至可以同时安装多个版本的 CUDA。

  • @monti 是的,您可以将命令写入 .bashrc 或 bash_profile,以便它自动加载每个 bash 会话。请参阅此处:.com/questions/14637979/…

  • 每次我打开终端时,我都必须运行两个路径命令(从步骤 7 中的 cuda 后安装开始)。有没有办法可以保持状态而不必重复运行路径命令?

  • 我按照安装后的步骤操作,但 nvcc 和 nvidia-smi 仍然显示不同的 cuda 版本

  • 引用 10

    NsightCompute-2019.1 在 CUDA 10.0 中被称为 NsightCompute-1.0。

  • 这是因为 $PATH$ 指定使用 CUDA 10。但某些软件需要不同版本的 CUDA。

  • nvcc 位于 CUDA bin 文件夹中 - 因此请检查 CUDA bin 文件夹是否已添加到您的 $PATH .

    具体来说,确保您已执行 CUDA 安装后操作(例如从 这里 ):

    1. 将 CUDA Bin 添加到 $PATH (即,将以下行添加到您的 ~/.bashrc )
    export PATH=/usr/local/cuda-10.1/bin:/usr/local/cuda-10.1/NsightCompute-2019.1${PATH:+:${PATH}}
    

    PS. 首先确保上述两个路径存在: /usr/local/cuda-10.1/bin /usr/local/cuda-10.1/NsightCompute-2019.1 (NsightCompute 路径的结尾可能会略有不同,具体取决于安装的 Nsight compute 版本...

    1. 更新 $LD_LIBRARY_PATH (即将以下行添加到您的 ~/bashrc )。
    export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64\
                             ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
    

    此后, nvcc nvidia-smi (或 nvtop )都报告相同版本的 CUDA......

  • 给大家做了这个图,希望更清楚一点。现在终于明白为什么nvidia-smi的版本可以比nvcc高了,因为nvidia-smi显示的是Driver的版本(最低级别的)。nvcc是高级的,所以低版本没问题。

    根据@Robert Crovella 的最高投票答案。

    enter image description here

  • 引用 14

    该注释很有用,但并未解释如果 nvcc 报告的版本(例如 10.2)高于 nvidia-smi(例如 10.1)会发生什么情况。在这种情况下,Cuda 会尝试将其编译为 10.2 并尝试在 10.1 上运行它。这通常会导致运行时错误,例如“RuntimeError:CUDA 错误:设备上没有可用于执行的内核映像”。

  • 这完全有可能。如果您安装了最新的驱动程序(导致 nvidia-smi 目前显示 CUDA 10.2),但安装了较早版本的 CUDA(例如 10.1),那么 nvidia-smi 报告的结果与 nvcc 报告的结果会有差异。在这种情况下,这不是问题。

  • 我按照安装后的步骤操作,但 nvcc 和 nvidia-smi 仍然显示不同的 cuda 版本

  • @Rober Crovella 谢谢你的澄清。我也有同样的情况,nvidia-smi 显示 CUDA 版本 10.1,nvcc 显示 9.1。现在可以训练网络了吗,还是安装仍然有效?

  • CUDA 有 2 个主要 API,即运行时 API 和驱动程序 API。两者都有相应的版本(例如 8.0、9.0 等)

    GPU 驱动程序安装程序安装了 libcuda.so 驱动程序 API 所需的支持(例如

    运行时 API 所需的支持(例如 libcudart.so 在 Linux 上,以及 nvcc )由 CUDA 工具包安装程序(其中可能还捆绑了 GPU 驱动程序安装程序)安装。

    无论如何,(已安装的)驱动程序 API 版本可能并不总是与(已安装的)运行时 API 版本匹配,特别是如果您独立于安装 CUDA(即 CUDA 工具包)安装 GPU 驱动程序。

    nvidia-smi 工具由 GPU 驱动程序安装程序安装,并且通常查看 GPU 驱动程序,而不是 CUDA 工具包安装程序安装的任何内容。

    最近(Linux 上驱动程序版本 410.48 和 410.73 之间),NVIDIA 的高层决定在驱动程序安装的 CUDA 驱动程序 API 版本的报告中添加以下输出: nvidia-smi .

    这与安装的 CUDA 运行时版本没有任何关系。

    nvcc 是随 CUDA 工具包一起安装的 CUDA 编译器驱动程序工具,它​​将始终报告其构建时识别的 CUDA 运行时版本。它不知道安装的驱动程序版本,甚至不知道是否安装了 GPU 驱动程序。

    因此,根据设计,这两个数字不一定匹配,因为它们反映的是两个不同的东西。

    如果你想知道为什么 nvcc -V 显示的 CUDA 版本不是你期望的(例如,它显示的版本与你认为安装的版本不同)或者根本没有显示任何内容,那么就版本而言,可能是因为你没有遵循 cuda linux 安装指南中步骤 7(CUDA 11 之前)(或 CUDA 11 linux 安装指南中的步骤 6)中的强制性 说明

    请注意,尽管这个问题主要针对 Linux,但同样的概念也适用于 Windows CUDA 安装。驱动程序具有与之关联的 CUDA 驱动程序版本(例如 nvidia-smi ,可以使用 查询)。CUDA 运行时也具有与之关联的 CUDA 运行时版本。两者不一定在所有情况下都匹配。

    在大多数情况下,如果 nvidia-smi 报告的 CUDA 版本在数值上等于或高于 报告的版本 nvcc -V ,则无需担心。这是 CUDA 中定义的兼容性路径(较新的驱动程序/驱动程序 API 支持“较旧的” CUDA 工具包/运行时 API)。例如,如果 nvidia-smi 报告 CUDA 10.2,并且 nvcc -V 报告 CUDA 10.1,则通常无需担心。它应该可以正常工作,并不一定意味着您“实际上安装了 CUDA 10.2,而您原本想安装 CUDA 10.1”

    如果 nvcc 命令根本没有报告任何内容(例如 Command 'nvcc' not found... )或者它报告了意外的 CUDA 版本,这也可能是由于 CUDA 安装不正确,即未正确执行上述强制性步骤。您可以使用 Linux 实用程序(如 find locate (请使用手册页了解如何操作))来查找 nvcc 可执行文件,开始弄清楚这一点。假设只有一个,那么可以使用它的路径来修复您的 PATH 环境变量。CUDA Linux 安装指南 还解释了如何设置它。您可能需要调整 PATH 变量中的 CUDA 版本以匹配您实际需要/安装的 CUDA 版本。也有可能您根本没有安装 CUDA 工具包( nvcc 通过 CUDA 工具包安装提供,而不是单独通过 GPU 驱动程序安装提供。)

    类似地,当使用docker时,该 nvidia-smi 命令通常会报告安装在基础机器上的驱动程序版本,而其他版本方法 nvcc --version 则会报告安装在docker容器内的CUDA版本。

    同样,如果您使用了其他 CUDA \'工具包\' 安装方法(例如 Anaconda),您可能会发现 Anaconda 指示的版本与 指示的版本不“匹配” nvidia-smi 。但是,上述评论仍然适用。Anaconda 安装的旧 CUDA 工具包可以与 报告的较新版本一起使用 nvidia-smi ,并且 nvidia-smi 报告的 CUDA 版本比 Anaconda 安装的版本更新/更高并不意味着您遇到了安装问题。

    是另一个涉及类似问题的问题。上述处理并不表明此答案仅适用于您有意或无意地安装了多个 CUDA 版本的情况。 每次安装 CUDA 时 nvcc 报告的版本 nvidia-smi 可能不匹配,这是 预期的 行为,在大多数情况下很正常。

    如果 报告的版本 nvidia-smi 在数值上低于 报告的版本 nvcc ,我会认为这可能是一个损坏的配置。如果您用它编译代码 nvcc ,然后尝试在该机器上运行它,它很可能无法正常工作。此原则存在 兼容性例外 (通过安装 \'向前兼容性包\' 启用)。在这种情况下,我的一般建议(对于很多问题都是如此)是将 GPU 驱动程序版本更新为适用于您的 GPU 的最新版本。

  • @RobertCrovella 是的,这就是我要找的。我只是从你的评论中才知道答案,所以如果有人值得点赞的话,那就是你自己 ;)

  • @MichaelKenzel 我明白了。谢谢你的澄清!我想我正在使用 CUDA9.2。

返回
作者最近主题: