集众家之所长,手把手教你如何在Ubuntu18.04上安装CUDA10.0+CUDNN7.5+Torch7(非Pytorch)(保姆级教学)

前言

哦哦哦哦哦哦,成了,成了,大功终于成了!!!

集众家之所长,手把手教你如何在Ubuntu18.04上安装CUDA10.0+CUDNN7.5+Torch7(非Pytorch)(保姆级教学)
由于一些原因,博主需要搭建一个Torch7环境。
整个配置过程十分艰辛,各种问题层出不穷。好不容易安装成功,结果发现没法使用GPU进行运算,博主逐渐裂开。

不过就在今天,就在2022年5月25日,博主终于练成神功,修得正果。
特写下此博客,来帮助其他被Torch7折磨的道友。终有一日,你们也可以原地飞升的。

提醒:
1.如果你不需要使用GPU进行运算,那么你可以忽视掉第二步中检测gpu的步骤。
2.如果你使用的不是WSL2,那也没有关系,直接跳转至第四步开始即可。
3.如果你使用的是Ubuntu16.04,也没有关系,步骤顺序是相同的,只不过可能某些步骤的实现方法不同,但是每一步你要做的事是完全相同的。

零.动手前的准备

0.1 电脑配置

先说一下博主安装成功时的电脑配置:

0.1.1 显卡(使用软件GPU-Z查看)

集众家之所长,手把手教你如何在Ubuntu18.04上安装CUDA10.0+CUDNN7.5+Torch7(非Pytorch)(保姆级教学)

0.1.2 系统(cmd窗口输入winver)

集众家之所长,手把手教你如何在Ubuntu18.04上安装CUDA10.0+CUDNN7.5+Torch7(非Pytorch)(保姆级教学)

0.2 参考文章(感谢各位大佬的分享┭┮﹏┭┮)

1.Ubuntu18.04更换国内源及详细操作
2.Windows10/11 WSL2 安装nvidia-cuda驱动
3.cuda:Missing recommended library: libGLU.so,libX11.so,libXi.so,libXmu.so
4.ubuntu18.04和cuda10.0下安装Torch7(非pytorch)
5.Ubuntu18.04安装gcc——史上最全安装教程
6.Windows 11/10 WSL2 Ubuntu 20.04 下配置Cuda及Pytorch
7.Fails to build against CUDA 10
8.cmake安装时遇到的两个问题
9.Ubuntu安装Lua
10.wsl迁移到非系统盘最简单的方法

0.3 安装过程中所需要的部分文件

百度网盘链接:https://pan.baidu.com/s/1nl4UiTcjKq_cnrjdo4F7fA
提取码:0525

一.在本机上安装nvidia驱动(Windows系统下操作)

进入NVIDIA 驱动程序下载,选择自己电脑显卡的型号,然后下载安装即可。

安装成功后可以打开cmd窗口输入nvidia-smi,显示结果大致如下:

集众家之所长,手把手教你如何在Ubuntu18.04上安装CUDA10.0+CUDNN7.5+Torch7(非Pytorch)(保姆级教学)

二.安装WSL2与WSL2-Ubuntu18.04(Windows系统下操作)

这里博主就不班门弄斧了,大家直接可以按照官方给出的方法进行安装即可。

官方网址:安装 WSL

虚拟机安装完毕之后在命令行中输入nvidia-smi,如果有显示结果并且和上面的结果一致,那就说明你可以继续进行了。
如果是其他结果那你就需要找一下原因了。

博主一开始弄的时候WSL2压根检测不到我的显卡,后来从大佬的文章中得到启发,把win10升级成了win11,然后就搞定了。

WSL2还有一个十分便捷的地方:在资源管理器处输入\\wsl$,便可以管理虚拟机文件了。(可能权限不是很够,自己调一下就好)
集众家之所长,手把手教你如何在Ubuntu18.04上安装CUDA10.0+CUDNN7.5+Torch7(非Pytorch)(保姆级教学)

三.更换虚拟机位置(可跳过)(Windows系统下操作)

博主电脑的C盘内存不多了,所以从长远角度考虑博主决定把虚拟机迁移到F盘。

3.1 下载LxRunOffline-v3.4.0

3.2 解压后打开cmd窗口,并进入解压目录进行迁移

# 查看本电脑所安装的所有wsl虚拟机
.\LxRunOffline.exe list
# 将Ubuntu-18.04迁移至指定目录
.\LxRunOffline.exe move -n Ubuntu-18.04 -d F:\wsl_ubuntu_1804

集众家之所长,手把手教你如何在Ubuntu18.04上安装CUDA10.0+CUDNN7.5+Torch7(非Pytorch)(保姆级教学)

四.启动虚拟机并更换国内源(可跳过,但推荐弄一下)(虚拟机内操作)

4.1 备份源文件

cp /etc/apt/sources.list /etc/apt/sources_backup.list

集众家之所长,手把手教你如何在Ubuntu18.04上安装CUDA10.0+CUDNN7.5+Torch7(非Pytorch)(保姆级教学)

4.2 将sources.list文件中原本的内容删除,将下面的内容粘贴进去

#1.进入编辑模式
vim /etc/apt/sources.list
#2.删除内容
dd(长按)
#3.进入插入模式
i
#4.粘贴内容(阿里云源)
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
#5.退出插入模式
按下esc键
#6.保存并退出
:wq 或 :x

集众家之所长,手把手教你如何在Ubuntu18.04上安装CUDA10.0+CUDNN7.5+Torch7(非Pytorch)(保姆级教学)

4.3 按顺序执行下面的命令

sudo apt update
sudo apt upgrade

4.4 注意事项

请注意Ubuntu版本,各版本的下载源并不互通,请挑选适合自己Ubuntu版本的下载源。
Ubuntu16.04参考文章:Ubuntu16.04更换国内的源

五.安装gcc7.5(虚拟机内操作)

在命令行内输入下述命令,然后等待。

sudo apt install build-essential

结束之后输入gcc -v,如果结果如下则安装成功。

集众家之所长,手把手教你如何在Ubuntu18.04上安装CUDA10.0+CUDNN7.5+Torch7(非Pytorch)(保姆级教学)

六.安装CUDA10.0(虚拟机内操作)

6.1 安装依赖库

sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev 

6.2 安装cuda

官网下载ubuntu18.04的cuda10.0安装包,并按照官网所给出的步骤安装cuda。
集众家之所长,手把手教你如何在Ubuntu18.04上安装CUDA10.0+CUDNN7.5+Torch7(非Pytorch)(保姆级教学)

6.3 配置环境变量

sudo vim ~/.bashrc

在结尾处添加内容:

export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

保存退出,更新文件:

source ~/.bashrc

#查看cuda版本
nvcc -V

集众家之所长,手把手教你如何在Ubuntu18.04上安装CUDA10.0+CUDNN7.5+Torch7(非Pytorch)(保姆级教学)

七.安装cudnn7.5(虚拟机内操作)

官网下载cudnn文件。
下载的是cuDNN Library for Linux

集众家之所长,手把手教你如何在Ubuntu18.04上安装CUDA10.0+CUDNN7.5+Torch7(非Pytorch)(保姆级教学)
解压文件后将其中include文件夹里的文件全部复制到/usr/loacl/cuda-10.0/include文件夹下,将其中lib64文件夹里的文件全部复制到/usr/loacl/cuda-10.0/lib64文件夹下,并且提高文件权限。

cp -P lib64/* /usr/local/cuda-10.0/lib64/
cp -P include/* /usr/local/cuda-10.0/include/


sudo chmod a+r /usr/local/cuda-10.0/include/cudnn.h
sudo chmod a+r /usr/local/cuda-10.0/lib64/libcudnn*

集众家之所长,手把手教你如何在Ubuntu18.04上安装CUDA10.0+CUDNN7.5+Torch7(非Pytorch)(保姆级教学)

查看cudnn版本:

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

集众家之所长,手把手教你如何在Ubuntu18.04上安装CUDA10.0+CUDNN7.5+Torch7(非Pytorch)(保姆级教学)

八.安装Torch(虚拟机内操作)

8.1 下载torch安装包

git clone https://github.com/torch/distro.git ~/torch --recursive

如果有克隆比较慢的朋友,也可以直接使用网盘里博主已经下载好的安装包。

8.2 安装最新版CMake

sudo apt-get purge cmake
git clone https://github.com/Kitware/CMake.git
apt-get install libssl-dev
cd CMake
./bootstrap
make
sudo make install

集众家之所长,手把手教你如何在Ubuntu18.04上安装CUDA10.0+CUDNN7.5+Torch7(非Pytorch)(保姆级教学)

8.3 安装LUA5.2

官网下载lua5.2的安装包。(网盘里有已经下载好的)

tar zxf lua-5.2.4.tar.gz
cd lua-5.2.4
sudo apt-get install libreadline-dev
make linux test
make install

集众家之所长,手把手教你如何在Ubuntu18.04上安装CUDA10.0+CUDNN7.5+Torch7(非Pytorch)(保姆级教学)

8.4 删除torch/cmake中的FindCUDA.cmake

cd torch
rm -fr cmake/3.6/Modules/FindCUDA*

8.5 在torch/extra/cutorch下添加补丁

cd torch/extra/cutorch
#创建文件
vim atomic.patch

#将下面的内容复制进去
diff --git a/lib/THC/THCAtomics.cuh b/lib/THC/THCAtomics.cuh
index 400875c..ccb7a1c 100644
--- a/lib/THC/THCAtomics.cuh
+++ b/lib/THC/THCAtomics.cuh
@@ -94,6 +94,7 @@ static inline __device__ void atomicAdd(long *address, long val) {
 }
 
 #ifdef CUDA_HALF_TENSOR
+#if !(__CUDA_ARCH__ >= 700 || !defined(__CUDA_ARCH__) )
 static inline  __device__ void atomicAdd(half *address, half val) {
   unsigned int * address_as_ui =
       (unsigned int *) ((char *)address - ((size_t)address & 2));
@@ -117,6 +118,7 @@ static inline  __device__ void atomicAdd(half *address, half val) {
    } while (assumed != old);
 }
 #endif
+#endif

#保存退出
:wq 或 :x

#在命令行输入下面内容
patch -p1 < atomic.patch

集众家之所长,手把手教你如何在Ubuntu18.04上安装CUDA10.0+CUDNN7.5+Torch7(非Pytorch)(保姆级教学)

8.6 修改torch/install-deps文件

修改torch/install-deps的部分内容:

1.这一步可以不修改,博主修改的原因是网络问题,导致博主在用git克隆时会出现一些问题,于是博主事先下载了需要克隆的包,把原本的克隆命令替换为等价的移动文件命令。
集众家之所长,手把手教你如何在Ubuntu18.04上安装CUDA10.0+CUDNN7.5+Torch7(非Pytorch)(保姆级教学)
将第21行的代码注释掉,在其上面添加mv /home/rainsdrop/study/OpenBLAS "$tempdir"/OpenBLAS
集众家之所长,手把手教你如何在Ubuntu18.04上安装CUDA10.0+CUDNN7.5+Torch7(非Pytorch)(保姆级教学)


2.(这一步必须要改)将第178行和第261行的sudo apt-get install -y python-software-properties改成sudo apt-get install -y software-properties-common
集众家之所长,手把手教你如何在Ubuntu18.04上安装CUDA10.0+CUDNN7.5+Torch7(非Pytorch)(保姆级教学)
集众家之所长,手把手教你如何在Ubuntu18.04上安装CUDA10.0+CUDNN7.5+Torch7(非Pytorch)(保姆级教学)

保存退出。

8.7 安装

bash install-deps

集众家之所长,手把手教你如何在Ubuntu18.04上安装CUDA10.0+CUDNN7.5+Torch7(非Pytorch)(保姆级教学)

./clean.sh
export TORCH_NVCC_FLAGS="-D__CUDA_NO_HALF_OPERATORS__"
TORCH_LUA_VERSION=LUA52 ./install.sh

集众家之所长,手把手教你如何在Ubuntu18.04上安装CUDA10.0+CUDNN7.5+Torch7(非Pytorch)(保姆级教学)
集众家之所长,手把手教你如何在Ubuntu18.04上安装CUDA10.0+CUDNN7.5+Torch7(非Pytorch)(保姆级教学)

在命令行上输入source ~/.bashrc,然后输入th

集众家之所长,手把手教你如何在Ubuntu18.04上安装CUDA10.0+CUDNN7.5+Torch7(非Pytorch)(保姆级教学)
铛铛铛铛,大功告成。
接下来你就可以尽情的玩耍了。

后话

这个鬼东西博主真的是配置了很久,走了无数条弯路。但是就如那句老话所说:不打不相识,只有当你被折磨成千上万次之后,你才能够看到更深一层的东西。

博主咕咕咕的这几个月,有一个朋友(真的有,特别感谢你)私信博主催更。
很感谢你的肯定,这说明我的文章给你带来了帮助,这让我获得了极大的充实感,也意识到不挖坑就不需要填坑 自己确实鸽了很久,这个问题确实很严重。但是博主暂时还是没法稳定更新的。
写文章是我的爱好,但我还有生活去经营,还有梦想要去实现。

不过放心,坑还是会填的,文章还是会写的,中二台词还是会继续分享的。
还是那句话:如果这篇文章能帮助到你,那便是我莫大的荣幸。

中二病の时间

以下台词取自《银魂》第202集——疣篇:

集众家之所长,手把手教你如何在Ubuntu18.04上安装CUDA10.0+CUDNN7.5+Torch7(非Pytorch)(保姆级教学)

“妙:小新,我能进来吗”
“新八:对不起,我现在谁也不想见”
“新八:感觉大家都在不知不觉间走远了”
“新八:在这之前其实有很多次我也这样过想过”
“新八:姐姐,我经常做这样一个梦”
“新八:一片黑暗中,我和大家都在奔跑”
“新八:但是旁边的人都跑得很快”
“新八:就算我拼命地追”
“新八:结果还是被抛下,最后黑暗中就剩我一人”
“妙:小新,你很幸福啊”
“妙:因为你在黑暗中也能够看见前进的目标啊”
“妙:真正可悲的是在黑暗中看不见前进方向而停滞不前的人”
“妙:真正辛苦的是在分不清方向的黑暗中奔跑在最前面的人”
“妙:虽然也许不是个能配合你步调的温柔的人”
“妙:也说不定是一个总绕弯路的家伙”
“妙:但即便如此,你依然确信那个人奔跑的方向便是前方吧”
“妙:这已经是非常幸福的事了,小新”
“妙:不管离得有多远,都能看见”
“妙:如果是小新的话”
“妙:只要不停下脚步,就一定能追得上的吧”
“妙:这是理所当然的事吧”
吾日三省吾身:日更否?刷题否?快乐否?
更新了,但不是日更;已刷;平静
路漫漫其修远兮,吾将上下而求索

集众家之所长,手把手教你如何在Ubuntu18.04上安装CUDA10.0+CUDNN7.5+Torch7(非Pytorch)(保姆级教学)

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
xiaoxingxing的头像xiaoxingxing管理团队
上一篇 2022年5月27日
下一篇 2022年5月27日

相关推荐

此站出售,如需请站内私信或者邮箱!