nvcc -V和nvidia-smi出现的cuda版本不同

我发现实验室的服务器中
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
两种下载了

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

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

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

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

顺便附上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来查询

猜你喜欢

转载自blog.csdn.net/weixin_39518984/article/details/111406728