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

2024-02-13

我对运行时显示的不同 CUDA 版本感到非常困惑which nvcc and 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建议?我看到这个答案 https://stackoverflow.com/questions/34319877/nvcc-has-different-version-than-cuda但它并没有提供直接的答案来解决这个困惑,它只是要求我们重新安装 CUDA 工具包,我已经这样做了。


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

对驱动程序 API 的必要支持(例如libcuda.so在 Linux 上)由 GPU 驱动程序安装程序安装。

对运行时 API 的必要支持(例如libcudart.so在Linux上,也nvcc)由 CUDA 工具包安装程序(其中可能还捆绑有 GPU 驱动程序安装程序)安装。

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

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

最近(Linux 上的驱动程序版本介于 410.48 和 410.73 之间)NVIDIA 的掌权者决定在输出中添加驱动程序安装的 CUDA 驱动程序 API 版本的报告nvidia-smi.

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

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

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

如果你想知道为什么nvcc -V显示您不期望的 CUDA 版本(例如,它显示的版本不是您认为已安装的版本),或者根本不显示任何内容(就版本而言),这可能是因为您没有遵循 中的强制说明步骤 7(在 CUDA 11 之前)(或 CUDA 11 Linux 安装指南中的步骤 6)cuda Linux 安装指南 https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#post-installation-actions

请注意,虽然这个问题主要考虑的是 linux,但相同的概念也适用于windowsCUDA 安装。该驱动程序有一个与之关联的 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.1 时实际安装了 CUDA 10.2”

If nvcc命令根本不报告任何内容(例如Command 'nvcc' not found...)或者如果它报告意外的 CUDA 版本,这也可能是由于 CUDA 安装不正确,即未正确执行上述强制步骤。您可以使用 Linux 实用程序来开始解决这个问题,例如find or locate(请使用手册页了解如何操作)找到您的nvcc可执行的。假设只有一个,则可以使用它的路径来修复您的 PATH 环境变量。这CUDA Linux 安装指南 https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#mandatory-post还解释了如何设置它。您可能需要调整 PATH 变量中的 CUDA 版本以匹配您所需/安装的实际 CUDA 版本。

同样,当使用 docker 时,nvidia-smi命令通常会报告主机上安装的驱动程序版本,而其他版本方法如nvcc --version将报告 docker 容器内安装的 CUDA 版本。

同样,如果您使用过 Anaconda 等其他 CUDA“工具包”安装方法,您可能会发现 Anaconda 指示的版本与 Anaconda 指示的版本不“匹配”nvidia-smi。然而,上述评论仍然适用。 Anaconda 安装的旧版 CUDA 工具包可以与 Anaconda 报告的新版本一起使用nvidia-smi,以及事实nvidia-smi报告比 Anaconda 安装的版本更新/更高的 CUDA 版本并不意味着您有安装问题。

Here https://stackoverflow.com/questions/70048525/why-does-python-show-a-wrong-cuda-version是另一个涵盖类似领域的问题。上述处理并不以任何方式表明该答案仅适用于您有意或无意安装了多个 CUDA 版本的情况。情况自行显现任何时候安装 CUDA。报告的版本nvcc and nvidia-smi可能不匹配,那就是expected行为在大多数情况下都很正常。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

nvcc 和 NVIDIA-smi 显示的不同 CUDA 版本 的相关文章

随机推荐

  • Windows 上的 Git GUI:合并冲突

    我在命令行上能熟练使用 Git 但对于特定项目 我需要向其他人展示如何专门在 GUI 环境中执行操作 我们正在使用 Windows 版 Git 可在https git scm com download win https git scm c
  • HTML onSubmit / onClick 处理函数可以有除事件之外的其他参数吗? [复制]

    这个问题在这里已经有答案了 我面临一些案例onClick or onSubmit功能需要两者event and parameter 我可以在 React 或普通 html 标签中使用它吗 或者 只是使用其他函数做一些副作用 const Cu
  • CSS如何修复元素随页面水平滚动而不是垂直滚动?

    我创建了一个示例来帮助解释 http jsfiddle net 9AUbj 1 http jsfiddle net 9AUbj 1 div Hello World div div div div div 我想要 你好世界 当用户水平滚动时随
  • 服务器端 Push in Rails

    我想使用 AJAX 在 Rails 中实现一个可扩展的聊天室 我从研究中得知 唯一的可扩展性是通过服务器端推送实现的 我的两个问题是 1 在一个相当高效的聊天服务器中 什么时候轮询会变得禁止 2 我真的不想使用Juggernaut 我不太了
  • ANCS 是否支持向多个 BLE 设备发送通知?

    多台设备与同一台 iPhone 配对 但只有一台设备收到 ANCS 通知 在装有 iOS 9 3 2 的 iPhone 6 上进行测试 我可以确认 ANCS 会向所有订阅它的设备发送通知 也就是说 当通过控制点请求通知属性时 iOS 并不关
  • 如何检查 uri 字符串是否有效

    如何检查 uri 字符串是否有效 可以将其提供给 Uri 构造函数 到目前为止 我只有以下内容 但出于明显的原因 我更喜欢一种不那么粗暴的方式 Boolean IsValidUri String uri try new Uri uri re
  • ngx-datatable动态设置列宽

    我将 ngx datatable 的列宽度存储在数据库中 我使用 AJAX 调用获取这些值 如何为数据表设置这些值 我尝试过的 设置 width 属性
  • php中的foreach循环问题

    这是我的一些代码 p 只是回显并添加换行符 foreach vanSteps as k gt reqInfo p k if van k p The key is the van continue continue continue if w
  • 在 python 张量流中打印生成器

    我正在尝试遵循tensor flow教程如此描述link https github com random forests tutorials blob master ep7 ipynb 我正在尝试按描述打印预测结果 print Predic
  • 样式输入类型=文件未按预期工作

    我正在为表单类型创建一个 css 模板 并希望为表单输入提供圆形边框 这适用于 type text 但不适用于 type file 用于文件上传 我究竟做错了什么 tempform input type text moz border ra
  • Sharepoint 维基

    好吧 我看过几个帖子mention其他一些关于不使用 SP wiki 的帖子 因为它们很糟糕 因为我们正在考虑创建我们的维基inSP 我需要知道为什么我们不应该让 6 名自动化开发人员组成的小组来记录各种自动化流程中的步骤以及必须不时进行的
  • 如何在图表中添加大括号?

    我想在R中制作如下图 如何绘制水平支撑 像这样的事情怎么样 plot c 0 1 c 0 1 text x 0 5 y 0 5 srt 90 cex 8 family Helvetica Neue UltraLight 根据您的目的进行调整
  • Socket.io + PhoneGap

    当我尝试使用时套接字IO https socket io with PhoneGap https phonegap com 我收到此错误 在 iOS 上应该支持 socket io Access Control Allow Origin 不
  • NSArray 填充 bool

    我正在尝试创建一个布尔值的 NSArray 请问我有多少人这样做 NSArray array NSArray alloc init array 0 YES 这对我不起作用 Thanks NSArray 不是 c 数组 您无法使用以下方式访问
  • ModelEntity.从 url 加载

    我有一个带有 AR 的屏幕 目前 usdz 3D 模型存储在应用程序本地 我们需要确保使用 get 请求接收它们 这是要检查的网址 https developer apple com augmented reality quick look
  • SQL 选择用字符串替换整数

    目标是将 SQL 查询中返回的整数值替换为该数字表示的 char 值 例如 标记为 Sport 的表属性被定义为 1 4 之间的整数值 1 篮球 2 曲棍球等 下面是数据库表 然后是所需的输出 数据库表 Player Team Sport
  • -webkit-transform 的替代方案:transformY?

    我正在创建一个 chrome 扩展 它在特定页面的顶部显示 iframe 该 iframe 被固定并放置在打开 body 标签之前 为了给这个 iframe 预留一个位置 我使用 CSS 向下移动主体 包括固定元素 webkit trans
  • AngularJS 中 !$pristine 与 $dirty 之间有什么区别

    最近我读了一些关于 angularJS 表单验证的教程 如下所示 p p 但我觉得 pristine and dirty是相等的 那么我可以使用下面的吗 p p 我认为这两个属性之间存在细微差别 这取决于您的用例 setDirty 将表单设
  • 如何获取node.js中的所有memcached数据?

    首先 我的目的是当用户关闭浏览器时用户会话数据应该过期 现在的问题是 我的服务器需要 memcached 才能正常工作 因此 我想从已关闭浏览器的 memcached 中删除该特定用户会话 我不想清除所有内存缓存 以便剩余用户的会话仍然存在
  • nvcc 和 NVIDIA-smi 显示的不同 CUDA 版本

    我对运行时显示的不同 CUDA 版本感到非常困惑which nvcc and nvidia smi 我在 ubuntu 16 04 上安装了 cuda9 2 和 cuda10 现在我将PATH设置为指向cuda9 2 所以当我跑步时 whi