linux 安装tensorflow 记录

一纸辛酸泪……..

安装tensorflow gpu需要先安装cudn 和 cudnn

现在我已经安装好了cudn,nvcc-v 也可以正常显示,但是在/usr/local/文件夹下却没有cuda文件夹.

2.问题由来

通常我们在安装cudnn时,先进行安装cuda,然后下载cudnn文件,通过

tar -xzvf cudnn-10.2-linux-x64-v7.6.5.32.tgz
#命令解压文件,会得到一个cuda文件夹,逐一执行下面的命令进行cudnn的安装
sudo cp cuda/include/cudnn*.h /usr/local/cuda/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
sudo chmod a+r /usr/local/cuda/include/cudnn.h
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
#完成后,通过下面的命令查看安装情况,如果结果如下图逐行显示版本号,则安装成功
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

在这里插入图片描述
但是现在并没有这个文件夹该如何做呢?

3.问题定位

使用指令

whereis cuda

输出

cuda: /usr/lib/cuda /usr/include/cuda.h

找到了cuda的位置

4.问题原因

之所以在这两个位置是由于,通过sudo apt install nvidia-cuda-toolkit

这种安装方法在/usr/include和/usr/lib/cuda/lib64中安装cuda

5.问题解决

找了cuda的位置后,安装cudnn,将上述指令替换为

tar -xzvf cudnn-10.2-linux-x64-v7.6.5.32.tgz
#命令解压文件,会得到一个cuda文件夹,逐一执行下面的命令进行cudnn的安装
sudo cp cuda/include/cudnn*.h /usr/include/
sudo cp cuda/lib64/libcudnn* /usr/lib/cuda/lib64/
sudo chmod a+r /usr/include/cudnn.h
sudo chmod a+r /usr/lib/cuda/lib64/libcudnn*
#完成后,通过下面的命令查看安装情况,如果结果如下图逐行显示版本号,则安装成功
cat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2

注意需要将cuda.h与cudnn.h文件放在同一文件夹下.

nvcc和nvidia-smi显示的cuda版本不一致解释:

nvcc属于cuda的编译器,将程序编译成可执行的二进制文件,nvidia-smi全称是NVIDIA System Management Interface,是一种命令行使用工具,旨在帮助管理和监控NVIDIA GPU设备。

cuda有runtime api和driver api,两者都有对应的cuda版本,nvcc –version显示的就是前者对应的cuda版本,而nvidia-smi显示的是后者对应的cuda版本。

用于支持driver api的必要文件由GPU driver install安装,nvidia-smi就属于这一类API;而用于支持runtime api的必要文件是由cuda toolkit install安装的。nvcc是与cuda toolkit一起安装的cuda compiler-driver tool,它只知道自身构建时的cuda runtime版本,并不知道安装了什么版本的GPU driver,甚至不知道是否安装了GPU driver。

cuda toolkit install通常会集成了GPU driver install,如果你的cuda均通过cuda toolkit install来安装,那么runtime api和driver api的版本应该是一致的,也就是说,nvcc -V和nvidia-smi显示的版本正常是一样的,否则你可能使用了单独的GPU driver install来安装GPU driver,这样就会导致nvidia-smi和nvcc -V显示的版本不一样。

通常,driver api的版本能向下兼容runtime api的版本,即nvidia-smi显示的版本大于nvcc -V时通常是可以使用的。

#runtime api就是runfile类型的安装文件,driver api就是deb类型的安装文件。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注