Ubuntu实时内核PREEMPT_RT kernel 安装英伟达驱动和CUDA
前言
上一篇文章介绍了Ubuntu如何编译安装实时内核PREEMPT_RT kernel。
由于英伟达官方的驱动并不支持实时内核,因此当我们用普通方式安装英伟达驱动时便会遇到错误。
这里将介绍为实时内核的Ubuntu系统安装英伟达驱动和CUDA的方法。
准备工作
一个全新安装的Ubuntu系统,已经按照上一篇文章安装了实时内核,并且没有安装任何英伟达驱动。
也可以按照以下方法卸载已经安装的驱动,然后重启
sudo apt-get --purge remove nvidia*
sudo apt-get --purge remove "*cublas*" "cuda*"
sudo apt-get --purge remove libnvidia*
reboot
下载驱动
从CUDA Toolkit 12.0 Downloads下载runfile文件到本地。
下载cuDNN,我们选择Download cuDNN v8.9.2 (June 1st, 2023), for CUDA 12.x —> Local Installer for Linux x86_64 (Tar)
安装
1.安装runfile
# 1. Stop X-Server
sudo service lightdm stop
# 2. Blacklist Nouveau driver
sudo nano /etc/modprobe.d/blacklist-nouveau.conf
# Insert into file:
blacklist nouveau
options nouveau modeset=0
# 3. Update kernel initramfs
sudo update-initramfs -u
reboot
# 4. Install driver!
sudo IGNORE_PREEMPT_RT_PRESENCE=1 bash <*>.run # Insert downloaded .run file
# 5. Reboot
sudo reboot
安装过程中会弹出来一个对话框,让你选择安装的内容,默认安装即可。
安装结束之后执行nvcc -v,会提示没有nvcc可执行,这并不是因为我们cudatoolkit没安装好,而是因为环境变量还没配置好。
2.cuda环境变量配置
sudo nano ~/.bashrc
将以下内容添加进文件最后
export PATH=/usr/local/cuda-12.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-12.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
保存退出后(Ctrl+x),更新一下环境变量:
source ~/.bashrc
这时候在执行 nvcc -V 就能够显示cuda版本了。
3.安装cudnn
严格来讲cuDNN不能叫安装。它其实是对CUDA的一些补充,所以“安装”过程很简单。去英伟达官网下载对应CUDA12.0的cuDNN压缩包(这一步可能需要注册英伟达账号)。解压之后得到cuda目录,cuda目录下面有include和lib64两个子目录,将这两个目录下面的所有文件拷贝到CUDA 12.0安装路径对应的目录下面即可。
tar -xvf cudnn**
cd cudnn-linux-x86_64-8.9.3.28_cuda12-archive
#以下是安装命令
sudo cp -r lib/* /usr/local/cuda-12.0(自己检查具体的版本修改路径)/lib64/
sudo cp -r include/* /usr/local/cuda-12.0(自己检查具体的版本修改路径)/include/
#为更改读取权限:
sudo chmod a+r /usr/local/cuda-12.0(自己检查具体的版本修改路径)/include/cudnn*
sudo chmod a+r /usr/local/cuda-12.0(自己检查具体的版本修改路径)/lib64/libcudnn*
注意操作要在相应的文件夹下进行哦!
4.检查cudnn是否安装成功
cat /usr/local/cuda-12.0/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
检查
检查内核
uname -r
检查cuda
nvcc -V
检查nvidia驱动
nvidia-smi
最后得到