Ubuntu20.04安装cuda10.1的步骤(图文教程)
安装前准备
CUDA的主要用途是深度学习,而目前主流的深度学习框架Tensorflow2最高支持CUDA 10.1,因此本文讲解在Ubuntu 20.04系统上安装CUDA 10.1的主要过程。
首先要查看你的NVIDIA显卡驱动是否支持cuda10.1版本。
在终端执行以下命令:
nvidia-smi
如果 CUDA Version: … 这里的版本号大于等于10.1(我的是10.2),就可以安装cuda10.1.
关键点:gcc降级
因为Ubuntu20.04自带的gcc版本为9.3,而cuda10.1不支持gcc-9,因此要手动安装gcc-7,命令如下:
sudo apt-get install gcc-7 g++-7
安装完gcc-7,系统中就存在两个版本的gcc,因此要设置默认的gcc,命令如下:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 1
此命令可以通过update-alternatives设置gcc各版本的优先级,优先级最高的为系统默认版本,可以用下述命令显示其优先级:
sudo update-alternatives --display gcc
设置默认的g++也是如此:
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 9
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 1
显示g++优先级:
sudo update-alternatives --display g++
按照官网的安装步骤下载并安装CUDA 10.1
CUDA Toolkit 10.1 update2 Archive
如上图所示,推荐选择run文件安装,比较简洁。
- 当安装界面启动,选择continue。
- 然后输入accept,回车。
- 由于你的系统中已经有了NVIDIA显卡驱动,如果不想安装CUDA 10.1中附带的驱动,移动到Driver选项上,按空格键将该项取消。如下图。
移动到Install选项,回车,等待安装完成。
配置可执行文件及库路径
安装完成后,需要为CUDA 10.1配置环境。
首先打开家目录下的.bashrc文件: gedit ~/.bashrc
在文件的末尾添加如下内容:
export PATH=/usr/local/cuda-10.1/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
保存并关闭文件,完成配置。
更新环境:source ~/.bashrc
安装cuDNN
下载cuDNN
Download cuDNN
打开链接后,网站会要求你登陆,如果没有NVIDIA账号,注册后再登陆。
选择与CUDA 10.1对应的版本(7.6.5),点开后选择 cuDNN Library for Linux,点击下载。(最好选择 cuDNN Library for Linux 这个文件格式安装比较方便)
安装cuDNN
切换到下载文件所在目录,解压下载好的cuDNN压缩文件到当前目录:
tar zxvf ./cudnn-10.1-linux-x64-v7.6.5.32.tgz -C ./
将解压出的
cuda/include/cudnn.h文件复制到/usr/local/cuda/include文件夹
cuda/lib64/下所有文件复制到/usr/local/cuda/lib64文件夹
为上述文件添加读取和执行权限:
sudo chmod 755 /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
安装完毕
参考文章:
Ubuntu 20.04 CUDA&cuDNN安装方法 Ubuntu:安装 cuda10.1 驱动
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 20个ES6面试高频问题
- i++和++i傻傻分不清楚?这里给你最清楚的解答
- android APT 使用
- Flutter异步编程async与await的基本使用
- 教大家一个万能PPT图片排版技巧,太赞了!
- 重复读取 HttpServletRequest 中 InputStream 的方法
- 测试面试题集锦(三)| 计算机网络和数据库篇(附答案)
- 关于Scikit-Learn你(也许)不知道的10件事
- 技术天地 | CSS-in-JS:一个充满争议的技术方案
- 安全研究 | 通过域名劫持实现Azure DevOps账户劫持
- 一款针对DLL劫持的恶意DLL生成器
- AuthMatrix:一款针对Web应用和服务的认证安全检测BurpSuite工具
- KITT-Lite:基于Python实现的轻量级命令行渗透测试工具集
- 一次KimSuky攻击事件分析
- OpenCV中如何使用滚动条动态调整参数