Ubuntu 21.04系统安装 + Nvidia RTX3080 Ti 显卡驱动安装+驱动安装后重启黑屏解决+cuda+pytorch深度学习环境搭建
前言
因为要做论文的实验,实验室新购置了3080TI,配置ubuntu深度学习环境,因为在安装3080TI的显卡驱动上遇到很多次问题,便做一个经验分享
1. Ubuntu 21.04 系统安装
1.1 准备系统盘
1.2 安装流程
-
安装系统时选择其他选项,手动地分配各项空间,默认主动分区,不用设为逻辑分区 因为我是双硬盘:1T固态硬盘+4T机械硬盘,空间就比较自由 固态硬盘:
名称 | 分配大小 | 类型 | 备注 |
---|
EFI | 200MB | 自动确定 | 如果电脑时单系统,一定要配置;双系统则无需配置。 | / | 204800MB | Ext4 | 系统盘大小, 200GB 为佳。 因此一些系统软件会在这里安装,e.g., CUDA, apt-get install 等。 | 自动确定 | 65536MB | 交换空间 | 一般和电脑内存一样大,64GB 为佳。 | /home | 剩下所有内存 | Ext4 | 相当与Windows C: 盘了。 一些用户软件会在这里安装,e.g., anaconda 及其环境, pycharm 等 |
机械硬盘:
名称 | 分配大小 | 类型 | 备注 |
---|
/home/data | 4T(全部机械硬盘) | EXT4 | data也可以起别的名字 |
-
安装完毕后,重启并移除U盘。 如进入系统则安装完成。
2. 显卡驱动安装 (RTX 3080 Ti)
2.1 下载驱动程序
- 将 该 .run file 拷贝到 /home 下, 以方便获取并安装
2.2 Ubuntu 系统环境准备
2.3 Ubuntu 图形界面配置
-
禁用 nouveau sudo gedit /etc/modprobe.d/blacklist.conf
在文件最后一行加入 blacklist nouveau
options nouveau modeset=0
更新内核 sudo update-initramfs -u
重启系统 reboot
重启之后, 验证 nouveau是否已被禁用 lsmod | grep nouveau
无输出则成功禁用 -
关闭 lightdm sudo service lightdm stop
此时进入黑窗界面 Ctrl+Alt+F1
登录账户 -
进入下一步安装显卡驱动
2.4 安装显卡驱动
-
找到之前在 /home 中保存的 NVIDIA-*.run 文件 -
运行 sudo bash NVIDIA-*.run
比如我的就是 sudo bash NVIDIA-Linux-x86_64-470.57.02.run
-
安装过程: -
如果前面配置都完成了,基本是一路确定,其中 32-bit 库 选择 No, restart X service 选择 Yes 即可 -
完成后 验证 :
nvidia-smi
如过正常输出,则安装完成。
3.cuda安装
3.1下载cuda
因为没有21.04的版本,就近选择20.04版本
在终端输入以下命令下载cuda
wget https://developer.download.nvidia.com/compute/cuda/11.4.1/local_installers/cuda_11.4.1_470.57.02_linux.run
3.2安装cuda
sudo sh cuda_11.4.1_470.57.02_linux.run
因为安装过了驱动,所以在安装步骤中就把驱动选项取消勾选
3.3配置环境变量
终端输入
sudo gedit ~/.bashrc
在文档最后加上
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
export PATH=$PATH:/usr/local/cuda/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda
终端输入source ~/.bashrc更新
3.4验证安装完成
在终端输入 nvcc -V
返回版本结果就成功了,如果终端让你安装什么包就安装上,然后再测试
4.pytorch安装
4.1pytorch下载
https://pytorch.org/
选择合适的版本
进入环境后复制命令输入终端
pip3 install torch==1.9.0+cu111 torchvision==0.10.0+cu111 torchaudio==0.9.0 -f https://download.pytorch.org/whl/torch_stable.html
4.2验证安装成功
在py文件中写上
import torch
flag = torch.cuda.is_available()
print(flag)
ngpu= 1
# Decide which device we want to run on
device = torch.device("cuda:0" if (torch.cuda.is_available() and ngpu > 0) else "cpu")
print(device)
print(torch.cuda.get_device_name(0))
print(torch.rand(3,3).cuda())
运行,能正常返回说明pytorch和cuda都可用
一起解决这个问题的实验室师兄的帖子:
https://zhuanlan.zhihu.com/p/396680736
|