我发现实验室的服务器中
nvidia-smi的结果
在这里插入图片描述
而nvcc -V的结果
在这里插入图片描述

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

用于支持driver API的必要文件(如libcuda.so)是由GPU driver installer安装的。nvidia-smi就属于这一类API。
用于支持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。

runtime和driver API区别
runtime和driver API在很多情况非常相似,也就是说用起来的效果是等价的,但是你不能混合使用这两个API,因为二者是互斥的。也就是说在开发过程中,你只能选择其中一种API。简单理解二者的区别就是:runtime是更高级的封装,开发人员用起来更方便,而driver API更接近底层,速度可能会更快。

也就是说driver 与runtime并不是一一对应的哦,CUDA Toolkit(runtime)本质上只是一个工具包而已,所以我可以在同一个设备上安装很多个不同版本的CUDA Toolkit,比如同时安装了CUDA 9.0、CUDA 9.2、CUDA 10.0三个版本。既然NVIDIA显卡驱动和CUDA Toolkit本身是不具有捆绑关系的,也不是一一对应的关系,那为啥我们总是傻傻分不清楚呢。。。因为离线安装的CUDA Toolkit会默认携带与之匹配的最新的驱动程序!!!

这也就能解释,为啥NVIDIA的官网里同时有
CUDA Toolkit

NVIDIA Driver
两种下载了

与cuda相对应的,还有个,cudnn,cudnn是一个为深度学习计算设计的软件库,提供对应的计算函数,如卷积等,还有很多其他的软件库和中间件,包括实现c++ STL的thrust、实现快速傅里叶变换的cuFFT、实现gpu版本blas的cublas、实现稀疏矩阵运算操作的cuSparse、实现深度学习网络加速的cuDNN等等

顺便附上cudnn的下载,注意下载cuDNN,需要注册一个账号才能下载

如果你之前使用了PPA安装驱动,可能会出现只装了driver的情况
参考 只安装nvidia driver的另一种方式

不过,我现在遇到的问题是,服务器的tf是1.15,无法兼容cudatoolkit9,也不支持11,根本没法加速
在读了 显卡,显卡驱动,nvcc, cuda driver,cudatoolkit,cudnn到底是什么?之后,发现,安装多版本 cuda ,多版本之间切换是可以实现的,我们应该可以直接再额外装一个cudatoolkit10,见Ubuntu安装多版本cuda,并在多版本之间切换

———————————————————————————————————————————————————————

顺便附上linux下cudnn版本查询方法

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

此处的/usr/local/cuda/include/cudnn.h

可能会因为机器不同而不同,我也不知道当年师兄们是怎么装的,我的cudnn.h在/usr/include里面
如果你也和我一样,找不到cudnn.h 可以通过find语句全局查找

sudo find / -name 'cudnn.h'

cuda toolkit的版本还可以用cat /usr/local/cuda/version.txt来查询

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐