【NVCC,CUDA,NVIDIA驱动】装了pytorch,nvcc -V不能用,但能正常使用gpu

news2024/12/23 17:13:40

这里写目录标题

  • 问题描述
  • 问题原理
    • 为什么anaconda安装的Pytorch,其能够直接在gpu上运行
    • NVCC是什么,怎么查看装没装
  • 如果没有NVCC文件夹,应该如何安装NVCC?
  • CUDNN:Local Installer for Linux x86_64和Local Installer for Ubuntu20.04 x86_64对ubuntu20.04来说有什么区别?

问题描述

我用anaconda装了Pytorch,其能够正常在gpu上运行。
在这里插入图片描述

但是我是用nvcc -V命令时,却报错:-bash: nvcc: command not found
然而,我是可以使用nvidia-smi查看到CUDA的版本号的
在这里插入图片描述
nvidia-smi命令没问题,证明系统能够正确检测到nvidia的显卡驱动,但nvcc -V报错,证明我们的环境里面没有相关的代码。

问题原理

为什么anaconda安装的Pytorch,其能够直接在gpu上运行

经过查阅,发现是conda方式安装的Pytorch自带了cuda,因此不需要我们再独立安装cudacudnn1

CUDA有两个主要的API:runtime(运行时) API和driver API。这两个API都有对应的CUDA版本(如9.2和10.0等)。

1.用于支持driver API的必要文件(如libcuda.so)是由GPU driver installer安装的。nvidia-smi就属于这一类API。
2. 用于支持runtime API的必要文件(如libcudart.so以及nvcc)是由CUDA Toolkit installer安装的。

(CUDA Toolkit Installer有时可能会集成了GPU driver Installer)。nvcc是与CUDA Toolkit一起安装的CUDA compiler-driver tool,它只知道它自身构建时的CUDA runtime版本。它不知道安装了什么版本的GPU driver,甚至不知道是否安装了GPU driver。
综上,如果driver API和runtime> API的CUDA版本不一致可能是因为你使用的是单独的GPU driver installer,而不是CUDA Toolkit installer里的GPU driver installer。

NVCC是什么,怎么查看装没装

nvcc 是The main wrapper for the NVIDIA CUDA Compiler suite. Used to compile and link both host and gpu code.(NVIDIA CUDA 编译器套件的主要包装器,用于编译和链接主机和 gpu 代码)。一般使用nvcc -V查看CUDA版本

下面是如果安装了NVCC,将其添加到环境中的步骤2

  1. 查看cuda的bin目录下是否有nvcc:
cd /usr/local/cuda/bin
  1. 如果存在,直接将cuda路径加入系统路径即可:
#进入配置文件
vim ~/.bashrc
#添加以下两行
#在/.bashrc中配置LD_LIBRARY_PATH路径、配置PATH路径,完整配置如下:
 
export LD_LIBRARY_PATH=/usr/local/cuda/lib
export PATH=$PATH:/usr/local/cuda/bin
  1. 更新配置文件:
source ~/.bashrc
  1. 再次执行nvcc -V 就可以看到相应cuda版本了,如下:
root@d12ad4894da5:/usr/local/cuda/bin# nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2020 NVIDIA Corporation
Built on Mon_Oct_12_20:09:46_PDT_2020
Cuda compilation tools, release 11.1, V11.1.105
Build cuda_11.1.TC455_06.29190527_0

如果没有NVCC文件夹,应该如何安装NVCC?

nvcc是与CUDA Toolkit一起安装的CUDA compiler-driver tool,因此只需要安装CUDA就OK了。不会安装的话,请参考链接:【转载】Linux安装CUDA 和 cuDNN,以及CUDA个人环境和系统环境的切换

CUDNN:Local Installer for Linux x86_64和Local Installer for Ubuntu20.04 x86_64对ubuntu20.04来说有什么区别?

在Cudnn的下载界面,对操作系统有两种可选项,下面介绍它们的不同3

        如上图所示,在安装cudnn的时候,因为Linux有太多的发行版(不像windows如此简单,只有一个版本),如RHEL、Ubuntu、Debian、Fedora 等等,造成我们在选择cudnn的时候会很疑惑这些版本之间有什么区别?一般来说我们会根据发行版本的不同选择cudnn,但是像Ubuntu 20.04系统来说,其本身是Linux的一种,那么装Local Installer for Linux x86_64和Local Installer for Ubuntu20.04 x86_64都可以,那这2种具体有什么区别呢?

1.区别总览

  • "Local Installer for Linux x86_64 (Tar)"是一个通用的Linux x86_64平台安装程序,它以tar文件的形式提供。它可以在各种Linux发行版上使用,包括Ubuntu 20.04。需要手动提取tar文件并执行其中的安装脚本来安装软件。
  • "Local Installer for Ubuntu20.04 x86_64 (Deb)"是一个专门为Ubuntu 20.04设计的安装程序,以.deb包的形式提供。它使用Ubuntu 20.04特定的软件包管理器(例如APT)来管理软件包的安装和升级。.deb包可以自动处理软件的依赖关系,并可以轻松地卸载软件。
  • 因此,如果使用Ubuntu 20.04操作系统,最好选择"Local Installer for Ubuntu20.04 x86_64 (Deb)"。如果使用其他Linux发行版或需要更灵活的安装选项,则可以选择"Local Installer for Linux x86_64 (Tar)"。

2.性能差异

  •  从理论上来说,两种安装程序的性能差异应该很小或者可以忽略不计。安装程序的作用只是将软件文件复制到系统中并设置必要的配置和权限,这个过程不需要很高的计算资源或者特别的系统支持。
  • 然而,在实践中,由于.deb包使用了Ubuntu 20.04特定的软件包管理器,并自动处理依赖关系,因此它可能会更加方便和易于使用。而.tar包需要手动提取和安装,并且可能需要手动解决依赖问题,因此对于新手用户来说,可能会有一些挑战。
  • 另外需要注意的是,性能差异也可能因软件本身而异。如果软件在Ubuntu 20.04上进行了优化或测试,那么使用.deb包可能会提供更好的性能和稳定性。

3.其他具体的区别

  1. 安装方式:使用.deb包安装软件,可以通过APT软件包管理器进行自动化的升级和卸载。而使用.tar包安装软件,需要手动提取并执行其中的安装脚本来安装软件,升级和卸载也需要手动处理。

  2. 文件系统:使用.deb包安装软件时,软件的文件通常被安装在标准的Linux文件系统目录中,例如/bin、/usr/bin、/etc等。而使用.tar包安装软件时,您可以将软件文件安装在任何地方,这可能会影响到软件的可访问性和安全性。

  3. 兼容性:虽然.tar包可以在许多Linux发行版上使用,但是由于不同Linux发行版之间可能存在一些差异,因此可能需要手动解决依赖关系等问题。而使用.deb包时,由于它们是特定于Ubuntu 20.04的,因此不太可能出现依赖性问题。

  4. 安全性:使用.deb包安装软件可以提供一定的安全性保障,因为.deb包包含了数字签名,可以用于验证软件包的完整性和来源。而使用.tar包安装软件时,则需要手动验证软件包的完整性和来源。

  5. 大小:通常情况下,使用.deb包安装软件的文件大小比使用.tar包安装软件的文件大小要小。这是因为.deb包通常会使用压缩算法来压缩软件文件。

  6. 安装速度:使用.deb包安装软件的速度可能会比使用.tar包安装软件的速度更快。这是因为.deb包可以使用APT软件包管理器来自动处理依赖关系,从而加快安装过程。

  7. 版本控制:使用.deb包安装软件时,可以使用APT软件包管理器来管理不同版本的软件。而使用.tar包安装软件时,则需要手动处理不同版本之间的问题。

  8. 更新频率:使用.deb包安装的软件通常可以更容易地进行自动化更新,因为APT软件包管理器可以自动检查软件更新并提供升级选项。而使用.tar包安装的软件则需要手动下载新版本并进行手动升级。

  9. 依赖关系:使用.deb包安装的软件通常会自动处理依赖关系,如果需要其他软件支持,则APT软件包管理器会自动安装它们。而使用.tar包安装的软件则需要手动解决依赖关系问题。

  10. 支持:对于一些软件,.deb包可能是首选的安装方式,因为它们受到Ubuntu官方支持并得到了广泛的测试和验证。在某些情况下,.tar包可能是不受支持或仅部分支持的。

  11. 用户体验:使用.deb包安装的软件通常会提供更好的用户体验。APT软件包管理器会在安装、升级和卸载软件时提供易于理解的文本和图形化界面。而使用.tar包安装的软件则需要使用命令行界面并需要手动输入命令。

  12. 维护:使用.deb包安装的软件通常更容易维护。APT软件包管理器可以自动处理配置文件的更改,并在软件卸载时清理不需要的文件。而使用.tar包安装的软件则需要手动处理这些问题。

  13. 依赖库:一些软件包需要依赖库才能正常运行,这些依赖库可能需要手动安装。使用.deb包安装的软件通常会提供依赖库的信息,APT软件包管理器可以自动安装依赖库。而使用.tar包安装的软件则需要手动解决依赖库的问题。

  14. 安全性:使用.deb包安装软件时,APT软件包管理器会自动检查软件包的数字签名,以确保软件包的完整性和安全性。而使用.tar包安装软件则需要手动验证软件包的完整性和安全性。

  15. 系统管理:使用.deb包安装软件时,APT软件包管理器可以自动维护已安装软件的列表,并提供了一些管理命令,比如搜索、升级、卸载等。而使用.tar包安装软件则需要手动维护软件列表并手动管理软件。

4.总结

        需要注意的是,这些区别也是相对而言的,取决于软件包本身以及您的使用环境。在选择安装程序时,应该根据实际需求来选择最合适的方式。


  1. 电脑装了pytorch没有安装cuda,nvcc -V没反应,但能正常使用gpu ↩︎

  2. 【工程实践】解决 nvcc: command not found ↩︎

  3. CUDNN:Local Installer for Linux x86_64和Local Installer for Ubuntu20.04 x86_64对ubuntu20.04来说有什么区别? ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1489479.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小程序开通流量主

开发小程序有一段时间了,误打误撞开通了流量主。到现在有2400人访问了,当然这是累计的,每天访问人数也就是平均七八十左右。 当然,每日还是有一些收入的,虽然比较低,一块钱上下: 感觉做小程序&…

hnust 湖南科技大学 2022 数据挖掘课设 完整代码+报告+图源文件+指导书

hnust 湖南科技大学 2022 数据挖掘课设 完整代码报告图源文件指导书 目录 实验一 Apriori算法设计与应用 - 1 - 一、 背景介绍 - 1 - 二、 实验内容 - 1 - 三、 实验结果与分析 - 2 - 四、 小结与心得体会 - 3 - 实验二 KNN算法设计与应用 - 4 - 一、 背景介绍 - 4 - 二、 实…

NLP评价指标

一、分类任务常见评估: 准确度(Accuracy) 评估预测正确的比例,精确率(Precision) 评估预测正例的查准率,召回率(Recall) 评估真实正例的查全率。如果是多分类,则每个类别各自求P、R最终求平均值。 TP(True Positives…

鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:分布式迁移标识)

组件的分布式迁移标识,指明了该组件在分布式迁移场景下可以将特定状态恢复到对端设备。 说明: 从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 restoreId restoreId(value: number) 标记支持分布式…

Java_二叉树

文章目录 一、二叉树1.树型结构2.概念(重要)3.树的表示形式(了解)4.树的应用5.二叉树的概念6.两种特殊的二叉树7.二叉树的性质练习 8.二叉树的存储9.二叉树的遍历手动创建二叉树1、前中后遍历2、层序遍历3、二叉树的基本操作获取树…

什么是Vue的过渡效果?如何使用Vue的过渡效果?

Vue的过渡效果是Vue.js框架中提供的一种动画效果,可以让元素在插入、更新或移除时拥有更流畅的视觉切换效果。使用Vue的过渡效果可以为页面增添动感和交互性,让用户体验更加友好。 下面我们来看一下如何使用Vue的过渡效果。首先,我们需要在V…

什么是SpringCloud,有哪些组件?

spring Cloud 是基于spring boot的分布式系统开发工具,它提供了一系列开箱即用的,针对分布式系统开发的特性和组件。用于帮助开发人员快速构建和管理云原生应用程序。 Spring Cloud 的主要目标是解决分布式系统中的常见问题,例如服务发现,负载均衡,配置管理,断路器,消息总…

【鸿蒙 HarmonyOS 4.0】应用状态:LocalStorage/AppStorage/PersistentStorage

一、介绍 如果要实现应用级的,或者多个页面的状态数据共享,就需要用到应用级别的状态管理的概念。 LocalStorage:页面级UI状态存储,通常用于UIAbility内、页面间的状态共享。AppStorage:特殊的单例LocalStorage对象&…

ElasticSearch之数据分片和故障转移

写在前面 基础环境可以参考ElasticSearch之分布式模型介绍,选主,脑裂 。 本文看下es的数据分片和故障转移相关内容。 1:数据分片 分片,英文是shard,存储在data node ,分为主分片和副本分片,英…

数据治理实战——翼支付金融板块业务数仓建设和数据治理之路

目录 一、数据治理背景 二、数据治理建设内容 2.1 组织协同 2.2 平台建设 2.3 数据应用治理 2.4 数据规范 2.5 数据安全 三、企业级数仓建设 3.1 调研阶段 2.2 平台护航 2.3 数仓分层 2.4 维度建模 2.4.1 维度建模四步曲 2.4.2 命名规范 2.4.3 资产沉淀 2.4.4 …

【JS】WebSocket:实现实时通信功能。

【JS】WebSocket:实现实时通信功能。 一、WebSocket是什么?二、为什么需要WebSocket?三、WebSocket的优势四、WebSocket实现方式五、示例1:实时数据展示六、示例2:实现简易聊天室 如果想需要websocket实现功能,后端也要进行对应的…

前端食堂技术周刊第 114 期:Interop 2024、TS 5.4 RC、2 月登陆浏览器的新功能、JSR、AI SDK 3.0

美味值:🌟🌟🌟🌟🌟 口味:凉拌鸡架 食堂技术周刊仓库地址:https://github.com/Geekhyt/weekly 大家好,我是童欧巴。欢迎来到前端食堂技术周刊,我们先来看下…

tsc : 无法加载文件 C:\Users\Administrat\AppData\Roaming\npm\tsc.ps 1,因为在此系统上禁止运行脚本

报错:tsc : 无法加载文件 C:\Users\Administrat\AppData\Roaming\npm\tsc.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID135170 中的 about_Execution_Policies。 解决 使用命令行时出现ab…

Excel中筛选合并单元格后,只显示第一行怎么办?

Excel中筛选合并单元格后,只显示第一行怎么办? 我们日常的Excel数据在展示的时候为了数据的清晰和美观往往部分相同的单元格进行合并,但是合并之后在筛选时会发现结果会显示异常。 现在我们筛选下国籍为中国的员工信息,发现只显示了一条数据,解决这个异常只需要五Excel步:…

使用Pytorch导出自定义ONNX算子

在实际部署模型时有时可能会遇到想用的算子无法导出onnx,但实际部署的框架是支持该算子的。此时可以通过自定义onnx算子的方式导出onnx模型(注:自定义onnx算子导出onnx模型后是无法使用onnxruntime推理的)。下面给出个具体应用中的…

【Maven】Maven 基础教程(四):搭建 Maven 私服 Nexus

《Maven 基础教程》系列,包含以下 4 篇文章: Maven 基础教程(一):基础介绍、开发环境配置Maven 基础教程(二):Maven 的使用Maven 基础教程(三):b…

JVM(类加载机制)

类加载就是 .class 文件, 从文件(硬盘) 被加载到内存(元数据区)中的过程 类加载的过程 加载: 找 .class 文件的过程, 打开文件, 读文件, 把文件读到内存中 验证: 检查 .class 文件的格式是否正确 .class 是一个二进制文件, 其格式有严格的说明 准备: 给类对象分配内存空间 (先在…

c++ thread的使用 调用类里面的函数和调用类外的函数的区别

1.thread 调用类外的函数。 在使用thread之前要加上#include <thread>。 例1&#xff1a; #include <iostream> #include <thread> using namespace std; void Threadfunc1() {cout << "Threadfunc1" << endl; }void Threadfunc2(in…

sqllab 11-22

11.有回显&#xff0c;单引号 首先判断是字符型还是数字型 通过order by 来获取字段数 方便后续union联合 注意这里mime表明了内容要进行url编码&#xff0c;测试3报错&#xff0c;2正常&#xff0c;所以有2列。 还需要判断显示位&#xff0c;因为只有显示位的数据才能被爆出…

基于springboot+vue的多媒体素材库的开发与应用系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…