这里写目录标题
- 问题描述
- 问题原理
- 为什么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
,因此不需要我们再独立安装cuda
和cudnn
1:
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
- 查看cuda的bin目录下是否有nvcc:
cd /usr/local/cuda/bin
- 如果存在,直接将cuda路径加入系统路径即可:
#进入配置文件
vim ~/.bashrc
#添加以下两行
#在/.bashrc中配置LD_LIBRARY_PATH路径、配置PATH路径,完整配置如下:
export LD_LIBRARY_PATH=/usr/local/cuda/lib
export PATH=$PATH:/usr/local/cuda/bin
- 更新配置文件:
source ~/.bashrc
- 再次执行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.其他具体的区别
安装方式:使用.deb包安装软件,可以通过APT软件包管理器进行自动化的升级和卸载。而使用.tar包安装软件,需要手动提取并执行其中的安装脚本来安装软件,升级和卸载也需要手动处理。
文件系统:使用.deb包安装软件时,软件的文件通常被安装在标准的Linux文件系统目录中,例如/bin、/usr/bin、/etc等。而使用.tar包安装软件时,您可以将软件文件安装在任何地方,这可能会影响到软件的可访问性和安全性。
兼容性:虽然.tar包可以在许多Linux发行版上使用,但是由于不同Linux发行版之间可能存在一些差异,因此可能需要手动解决依赖关系等问题。而使用.deb包时,由于它们是特定于Ubuntu 20.04的,因此不太可能出现依赖性问题。
安全性:使用.deb包安装软件可以提供一定的安全性保障,因为.deb包包含了数字签名,可以用于验证软件包的完整性和来源。而使用.tar包安装软件时,则需要手动验证软件包的完整性和来源。
大小:通常情况下,使用.deb包安装软件的文件大小比使用.tar包安装软件的文件大小要小。这是因为.deb包通常会使用压缩算法来压缩软件文件。
安装速度:使用.deb包安装软件的速度可能会比使用.tar包安装软件的速度更快。这是因为.deb包可以使用APT软件包管理器来自动处理依赖关系,从而加快安装过程。
版本控制:使用.deb包安装软件时,可以使用APT软件包管理器来管理不同版本的软件。而使用.tar包安装软件时,则需要手动处理不同版本之间的问题。
更新频率:使用.deb包安装的软件通常可以更容易地进行自动化更新,因为APT软件包管理器可以自动检查软件更新并提供升级选项。而使用.tar包安装的软件则需要手动下载新版本并进行手动升级。
依赖关系:使用.deb包安装的软件通常会自动处理依赖关系,如果需要其他软件支持,则APT软件包管理器会自动安装它们。而使用.tar包安装的软件则需要手动解决依赖关系问题。
支持:对于一些软件,.deb包可能是首选的安装方式,因为它们受到Ubuntu官方支持并得到了广泛的测试和验证。在某些情况下,.tar包可能是不受支持或仅部分支持的。
用户体验:使用.deb包安装的软件通常会提供更好的用户体验。APT软件包管理器会在安装、升级和卸载软件时提供易于理解的文本和图形化界面。而使用.tar包安装的软件则需要使用命令行界面并需要手动输入命令。
维护:使用.deb包安装的软件通常更容易维护。APT软件包管理器可以自动处理配置文件的更改,并在软件卸载时清理不需要的文件。而使用.tar包安装的软件则需要手动处理这些问题。
依赖库:一些软件包需要依赖库才能正常运行,这些依赖库可能需要手动安装。使用.deb包安装的软件通常会提供依赖库的信息,APT软件包管理器可以自动安装依赖库。而使用.tar包安装的软件则需要手动解决依赖库的问题。
安全性:使用.deb包安装软件时,APT软件包管理器会自动检查软件包的数字签名,以确保软件包的完整性和安全性。而使用.tar包安装软件则需要手动验证软件包的完整性和安全性。
系统管理:使用.deb包安装软件时,APT软件包管理器可以自动维护已安装软件的列表,并提供了一些管理命令,比如搜索、升级、卸载等。而使用.tar包安装软件则需要手动维护软件列表并手动管理软件。
4.总结
需要注意的是,这些区别也是相对而言的,取决于软件包本身以及您的使用环境。在选择安装程序时,应该根据实际需求来选择最合适的方式。
电脑装了pytorch没有安装cuda,nvcc -V没反应,但能正常使用gpu ↩︎
【工程实践】解决 nvcc: command not found ↩︎
CUDNN:Local Installer for Linux x86_64和Local Installer for Ubuntu20.04 x86_64对ubuntu20.04来说有什么区别? ↩︎