Ubuntu
更换软件源
Ubuntu官方源服务器在国外,所以这里将软件源更换为国内的源。
Ubuntu的源存放在在/etc/apt/目录下的sources.list文件中,修改前我们先备份,在终端中执行以下命令:
1
  | sudo cp p /etc/apt/sources.list.bak
  | 
然后执行下面的命令打开sources.list文件,清空里面的内容,把阿里云与清华大学的 Ubuntu 源复制进去,保存后退出。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
  | sudo gedit /etc/apt/sources.list
# 阿里云源
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-backports main restricted universe multiverse
# 清华大学源
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
  | 
在终端上执行以下命令更新软件列表,检测出可以更新的软件:
在终端上执行以下命令进行软件更新:
显卡驱动
下载
在英伟达驱动下载页面上选择对应的系统和显卡型号,下载驱动,以Titan RTX的460.67驱动为例:
1
2
3
  | wget https://cn.download.nvidia.com/XFree86/Linux-x86_64/460.67/NVIDIA-Linux-x86_64-460.67.run # 下载
sudo chmod 777 NVIDIA-Linux-x86_64-460.67.run # 对驱动文件赋权
sudo service lightdm stop  # 关闭集显
  | 
安装
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
  | sudo bash NVIDIA-Linux-x86_64-460.67.run
# 安装过程中弹出的选项
> The distribution-provided pre-install script failed! Are you sure you want to continue?
> Yes
> Would you like to register the kernel module souces with DKMS? This will allow DKMS to automatically build a new module, if you install a different kernel later?
> No
> Would you like to run the nvidia-xconfigutility to automatically update
your x configuration so that the NVIDIA x driver will be used when you
restart x? Any pre-existing x confile will be backed up.
> Yes
# 完成安装后重启
sudo reboot
  | 
验证
使用如下命令验证,有显卡信息输出即可。
CUDA
环境检查
查看是否已经有支持CUDA的GPU,有显示GPU信息即可。
查看系统是否已经安装gcc,有版本信息输出即可。
查看系统是否安装了kernel header和package development。
1
2
3
  | uname --r  # 查看正在运行的系统内核版本
# 安装对应kernel版本的kernel header和package development,如果没有新安装则表示系统里有
sudo apt-get install linux-headers-$(uname --r) 
  | 
禁用nouveau驱动。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
  | lsmod | grep nouveau # 没有输出则已经禁用
-------------------------------------------
# 如果未禁用则按如下操作
sudo vi /etc/modprobe.d/blacklist-nouveau.conf
# 在文件中输入然后保存退出
blacklist nouveau
options nouveau modeset=0
# 更新内核
sudo update-initramfs -u
# 重启系统即可
sudo reboot
  | 
下载
在nvidia官方的cuda-toolkit-archive发行页选择需要的CUDA Toolkit版本,这里选择的是CUDA Toolkit 10.1 update2 (Aug 2019)版本,按以下配置选择:

然后会得到对应的安装指令:
1
  | wget https://developer.download.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda_10.1.243_418.87.00_linux.run
  | 
下载完成后执行安装:
1
  | sudo sh cuda_10.1.243_418.87.00_linux.run
  | 
如果提示/tmp空间不足,可以切换临时解压目录,具体做法是先创建一个文件夹代替/tmp,然后安装时指定在这个目录进行临时解压:
1
2
  | sudo mkdir /home/tmp # 这个地址可以自定义
sudo sh cuda_10.1.243_418.87.00_linux.run --tmpdir=/home/tmp/
  | 
安装
安装过程会有一些自选项,不同版本的CUDA显示样式可能略有不同,但选项内容大致一样:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
  | > Do you accept the previously read EULA?(accept/decline/quit)
> accept
-------------------
# accept后会进入如下界面,按如下配置选取即可,之前显卡驱动装了的情况下就不需要再选Driver
> CUDA Insataller
  -[] Driver
      [] 418.87.00
  +[x] CUDA Toolkit 10.1
   [x] CUDA Samples 10.1
   [x] CUDA Demo Suite 10.1
   [x] CUDA Documentation 10.1
   Options
   Install
# 进入Options
- CUDA Driver里选中"Do not install any of the OpenGL-related driver files"
- 其他保持默认即可
# 最后选中Install 
  | 
设置环境变量。
1
2
3
4
5
  | sudo vim /etc/profile
# 在文件末尾添加
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-10.1/lib64
export PATH=$PATH:/usr/local/cuda-10.1/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-10.1
  | 
验证
输入如下命令,有输出即可:
1
2
3
4
5
  | cd /usr/local/cuda-10.1/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
cat /proc/driver/nvidia/version
nvcc -V
  | 
cuDNN
下载
在nvidia官方的cudnn-archive发行页选择需要的cuDNN版本,这里选择的是cuDNN v8.0.5 (November 9th, 2020), for CUDA 10.1版本,注意要跟CUDA版本对应,分别下载以下四个包:

安装
1
2
3
4
5
6
7
8
  | tar -xzvf cudnn-x.x-linux-x64-v8.x.x.x.tgz
sudo dpkg -i libcudnn8_8.0.5.39-1+cuda10.1_amd64.deb
sudo dpkg -i libcudnn8-dev_8.0.5.39-1+cuda10.1_amd64.deb
sudo dpkg -i libcudnn8-samples_8.0.5.39-1+cuda10.1_amd64.deb
# 把cuDNN拷贝到CUDA安装路径
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 /usr/local/cuda/lib64/libcudnn*
  | 
验证
按照以下流程,如果输出test passed即安装成功。
1
2
3
4
  | cp -r /usr/src/cudnn_samples_v8 ~/cudnn-sample
cd ~/cudnn_sample/mnistCUDNN/
make clean && make -j16
./mnistCUDNN
  | 
Anaconda
下载
1
  | wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2020.11-Linux-x86_64.sh
  | 
安装
1
2
3
4
5
  | sudo bash ./Anaconda3-2020.11-Linux-x86_64.sh
# 添加环境变量
sudo vim ~/.bashrc
export PATH="/root/anaconda3/bin:$PATH"
source ~/.bashrc
  | 
验证
输入以下命令有输出即可。
更换软件源
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
  | conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro/
conda config --set show_channel_urls yes
------------------------------------
# pip添加清华源
mkdir ~/.pip
vim ~/.pip/pip.conf
# 在打开的文件中输入,然后保存退出即可
[global]
index-url=https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host=pypi.tuna.tsinghua.edu.cn
  | 
创建虚拟环境
1
  | conda create -n env_name python=3.6 # env_name-虚拟环境名字,可指定环境的python版本
  | 
激活虚拟环境
1
  | conda activate env_name
  | 
退出虚拟环境
1
  | conda deactivate env_name
  | 
PyTorch
安装
在conda环境下,根据PyTorch官网的安装指令执行,注意cudatoolkit版本要跟之前安装的CUDA一致。以Torch1.7版本为例:
1
2
  | # CUDA 10.1
conda install pytorch==1.7.1 torchvision==0.8.2 cudatoolkit=10.1
  | 
验证
运行python,执行以下命令,输出True即可。
1
2
3
4
5
  | import torch
import torchvision
torch.__version__
torchvision.__version__
print(torch.cuda.is_available())
  | 
参考链接
https://blog.csdn.net/baidu_36602427/article/details/86548203
https://blog.csdn.net/qq_34138003/article/details/109390134
https://zhuanlan.zhihu.com/p/47330858
https://blog.csdn.net/qijiajun97/article/details/103916002
https://www.jianshu.com/p/d05406904e31