前言
哦哦哦哦哦哦,成了,成了,大功终于成了!!!
由于一些原因,博主需要搭建一个Torch7环境。
整个配置过程十分艰辛,各种问题层出不穷。好不容易安装成功,结果发现没法使用GPU进行运算,博主逐渐裂开。
不过就在今天,就在2022年5月25日,博主终于练成神功,修得正果。
特写下此博客,来帮助其他被Torch7折磨的道友。终有一日,你们也可以原地飞升的。
提醒:
1.如果你不需要使用GPU进行运算,那么你可以忽视掉第二步中检测gpu的步骤。
2.如果你使用的不是WSL2,那也没有关系,直接跳转至第四步开始即可。
3.如果你使用的是Ubuntu16.04,也没有关系,步骤顺序是相同的,只不过可能某些步骤的实现方法不同,但是每一步你要做的事是完全相同的。
零.动手前的准备
0.1 电脑配置
先说一下博主安装成功时的电脑配置:
0.1.1 显卡(使用软件GPU-Z查看)
0.1.2 系统(cmd窗口输入winver
)
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
,显示结果大致如下:
二.安装WSL2与WSL2-Ubuntu18.04(Windows系统下操作)
这里博主就不班门弄斧了,大家直接可以按照官方给出的方法进行安装即可。
官方网址:安装 WSL
虚拟机安装完毕之后在命令行中输入nvidia-smi
,如果有显示结果并且和上面的结果一致,那就说明你可以继续进行了。
如果是其他结果那你就需要找一下原因了。
博主一开始弄的时候WSL2压根检测不到我的显卡,后来从大佬的文章中得到启发,把win10升级成了win11,然后就搞定了。
WSL2还有一个十分便捷的地方:在资源管理器处输入\\wsl$
,便可以管理虚拟机文件了。(可能权限不是很够,自己调一下就好)
三.更换虚拟机位置(可跳过)(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
四.启动虚拟机并更换国内源(可跳过,但推荐弄一下)(虚拟机内操作)
4.1 备份源文件
cp /etc/apt/sources.list /etc/apt/sources_backup.list
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
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
,如果结果如下则安装成功。
六.安装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。
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
七.安装cudnn7.5(虚拟机内操作)
在官网下载cudnn文件。
下载的是cuDNN Library for Linux
。
解压文件后将其中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*
查看cudnn版本:
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
八.安装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
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
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
8.6 修改torch/install-deps文件
修改torch/install-deps的部分内容:
1.这一步可以不修改,博主修改的原因是网络问题,导致博主在用git克隆时会出现一些问题,于是博主事先下载了需要克隆的包,把原本的克隆命令替换为等价的移动文件命令。
将第21行的代码注释掉,在其上面添加mv /home/rainsdrop/study/OpenBLAS "$tempdir"/OpenBLAS
2.(这一步必须要改)将第178行和第261行的sudo apt-get install -y python-software-properties
改成sudo apt-get install -y software-properties-common
保存退出。
8.7 安装
bash install-deps
./clean.sh
export TORCH_NVCC_FLAGS="-D__CUDA_NO_HALF_OPERATORS__"
TORCH_LUA_VERSION=LUA52 ./install.sh
在命令行上输入source ~/.bashrc
,然后输入th
:
铛铛铛铛,大功告成。
接下来你就可以尽情的玩耍了。
后话
这个鬼东西博主真的是配置了很久,走了无数条弯路。但是就如那句老话所说:不打不相识
,只有当你被折磨成千上万次之后,你才能够看到更深一层的东西。
博主咕咕咕的这几个月,有一个朋友(真的有,特别感谢你)私信博主催更。
很感谢你的肯定,这说明我的文章给你带来了帮助,这让我获得了极大的充实感,也意识到不挖坑就不需要填坑 自己确实鸽了很久,这个问题确实很严重。但是博主暂时还是没法稳定更新的。
写文章是我的爱好,但我还有生活去经营,还有梦想要去实现。
不过放心,坑还是会填的,文章还是会写的,中二台词还是会继续分享的。
还是那句话:如果这篇文章能帮助到你,那便是我莫大的荣幸。
中二病の时间
以下台词取自《银魂》第202集——疣篇:
文章出处登录后可见!