云计算、AI、云原生、大数据等一站式技术学习平台

网站首页 > 教程文章 正文

ubuntu 20.04+RTX4060 Ti+CUDA 11.7+cudnn

jxf315 2024-12-20 16:24:41 教程文章 43 ℃

ububtu添加国内源

sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup 
sudo vim /etc/apt/sources.list

在sources.list的最后添加阿里的源

deb https://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse

deb https://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse

deb https://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse

# deb https://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
# deb-src https://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse

deb https://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

更新验证

sudo apt-get update
sudo apt-get upgrade

禁用nouveau

Ubuntu系统集成的显卡驱动程序是nouveau,它是第三方为NVIDIA开发的开源驱动,我们需要先将其屏蔽才能安装NVIDIA官方驱动。 所以我们要先把驱动加到黑名单blacklist.conf里。

# 修改属性
$sudo chmod 666 /etc/modprobe.d/blacklist.conf  
# 用vim 打开
$sudo vim /etc/modprobe.d/blacklist.conf
# 在最后一行加入以下几句,保存退出
blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist rivatv
blacklist nvidiafb
// 对刚才修改的文件进行更新
$sudo update-initramfs -u
# 记得重启计算机,打开终端检查nouveau是否被禁用
$lsmod | grep nouveau #若执行完该句,没有任何输出,则nouveau被成功禁用

安装gcc

$sudo apt-get  install  build-essential #安装gcc 
$gcc --version #检查gcc是否安装成功
# 如果有提示make,g++没有安装 ,再执行以下命令
$sudo apt-get install g++
$sudo apt-get install make

卸载NVIDIA显卡驱动

第一种卸载方法

# 如果你之前安装过其他的显卡驱动 
cd /usr/local/cuda-xx.x/bin/
sudo ./NVIDIA-Linux-x86_64-*.run --uninstall
sudo rm -rf /usr/local/cuda-xx.x 
# 使用sudo安装或者ubuntu软件更新器里面安装的
sudo apt remove --purge nvidia*
sudo apt autoremove

第二种卸载方案

sudo apt-get remove cuda
sudo apt autoremove 
sudo apt-get remove cuda*

cd /usr/local/            #进入到安装目录下
sudo rm -r cuda-11.x      #删除对应的cuda版本文件夹
sudo dpkg -l |grep cuda   #查看剩余的残留
sudo dpkg -P cuda-visual-tools-11-x      #卸载对应的残留,所有的残留都要删除,通过删除样式为sudo dpkg -P 残留文件名。

卸载cuda-toolkit

sudo apt-get remove nvidia-cuda-toolkit                    #仅卸载nvidia-cuda-toolkit
sudo apt-get remove --auto-remove nvidia-cuda-toolkit       #卸载nvidia-cuda-toolkit及其依赖项
sudo apt-get purge nvidia-cuda-toolkit 
sudo apt-get purge --auto-remove nvidia-cuda-toolkit      #清除配置/数据

#To remove CUDA Toolkit 再清理清理也可以
sudo apt-get --purge remove "*cuda*" "*cublas*" "*cufft*" "*cufile*" "*curand*" \
 "*cusolver*" "*cusparse*" "*gds-tools*" "*npp*" "*nvjpeg*" "nsight*" "*nvvm*"
#To remove NVIDIA Drivers:
sudo apt-get --purge remove "*nvidia*" "libxnvctrl*"

查看cuda和cudnn的安装信息

whereis cuda        # 查看cuda的安装位置
cat /usr/local/cuda/version.txt    #查看已安装的CUDA的版本
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2       #查看已安装的CUDNN的版本

是否要安装lightdm

sudo apt-get install lightdm

但是本来在安装Ubuntu系统的时候,系统已经默认安装了gdm3的显示管理器。而且用的比较习惯,所以私以为这个其实不需要安装lightdm。使用gdm3也是一样可以的。

安装显卡驱动

安装显卡驱动

在系统中找到软件及更新进行安装驱动


安装完成后使用命令nvidia-smi查看驱动是否成功,如果没有重启系统后在再命令窗口中使用命令nvidia-smi查看驱动是否成功

nvidia-smi



上图 CUDA Version:12.0指的是最高支持cuda12.0的版本,并不是已经安装了cuda12.0的版本,可以安装cuda11.7版本

安装CUDA

点击 https://developer.nvidia.com/cuda-toolkit-archive




你网络好的话可以直接使用命令下载,有可能网络中断,中断了需要重新下载。也可以将https://developer.download.nvidia.com/compute/cuda/11.7.0/local_installers/cuda_11.7.0_515.43.04_linux.run 复制到浏览器或者迅雷中下载

下载完成后,将cuda_11.7.0_515.43.04_linux.run 复制到一个位置开始执行安装 sudo sh cuda_11.7.0_515.43.04_linux.run

wget https://developer.download.nvidia.com/compute/cuda/11.7.0/local_installers/cuda_11.7.0_515.43.04_linux.run
sudo sh cuda_11.7.0_515.43.04_linux.run




安装完成后,需要配置以下全局变量

sudo vim ~/.bashrc
#在最后添加
export PATH=/usr/local/cuda-12.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64:$LD_LIBRARY_PATH
# 保存退出
source ~/.bashrc

cudnn安装

下载位置(需要注册邮箱并登陆) https://developer.nvidia.com/rdp/cudnn-download



下载后复制到系统中后解压

# 下载对应tar包
# 解压缩
tar -xvf cudnn-linux-x86_64-8.x.x.x_cudaX.Y-archive.tar.xz
# copy
sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda-11.7/include
sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda-11.7/lib64
sudo chmod a+r /usr/local/cuda-11.7/include/cudnn*.h /usr/local/cuda-11.7/lib64/libcudnn*

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

解决黑屏问题

问题描述:在进行prime-select nvidia后,重启电脑,左上角光标闪烁,无法进入登录页面。如果你恰巧执行了 nvidia-xconfig 命令,生成 /etc/X11/xorg.conf 之后,系统也还是进不去,**但是不会再一直循环登陆,而是登陆之后直接就卡住了。**问题出现在 X11 的配置文件上。 解决思路:

解决思路:

1、nvidia-xconfig 是只为英伟达的显卡设置 xorg 配置文件,在核显+独显的电脑上,这个配置文件是无效的。于是就会出现登陆后直接卡住的问题 2、在没有 xorg.conf 的情况下,X server 会检测系统状态并且自动生成配置。但是自动生成的配置把独显的驱动检测成了 nouveau(nvidia 驱动安装中禁用掉的系统自带的驱动)。于是在这种情况下,如果使用了 prime-select 把默认显卡设置成了独显,系统会因为找不到驱动而一直启动失败,此时会造成循环登陆 解决步骤

# 终端执行
sudo nvidia-xconfig
# 此时会在/etc/X11中生成xorg.conf文件,打开进行编辑 --20230704 删除了这个文件还是可以进入图形界面
sudo vim /etc/X11/xorg.conf

将其替换为以下内容,手动在 nvidia-xconfig 生成的文件中添加对 intel 显卡的支持

# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig:  version 535.54.03

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0"
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
EndSection

Section "Files"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/psaux"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Keyboard0"
    Driver         "kbd"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "Unknown"
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "NVIDIA GeForce RTX3050TI"
    BusID          "PCI:1:0:0"
EndSection

Section "Device"
    Identifier     "intel"
    Driver         "modesetting"
    BusID          "PCI:0:2:0"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

其中BusID可以用以下命令查看

xxxc:~$ lspci -k | grep -EA3 'VGA|3D|Display'
00:02.0 VGA compatible controller: Intel Corporation Device 46a6 (rev 0c)
	DeviceName: Onboard IGD
	Subsystem: Hewlett-Packard Company Device 89c0
	Kernel driver in use: i915
--
01:00.0 3D controller: NVIDIA Corporation Device 25a0 (rev a1)
	Subsystem: Hewlett-Packard Company Device 89c1
	Kernel driver in use: nvidia
	Kernel modules: nvidiafb, nouveau, nvidia_drm, nvidia


#来点儿干货#

最近发表
标签列表