Ubuntu16.04下CUDA8.0和CUDA9.0共存
前言
在Github上有一些比较早的代码需要的环境可能是CUDA8.0,而对于一个新手来说,正常思维都会选择最现金的版本进行环境配置,在这里简单的介绍一下,如何在实用GPU进行运算的时候,CUDA8.0和CUDA9.0共存的问题。
1、安装前的检查
运行下面的指令,检查一下您的电脑当前CUDA版本
nvcc --version
我自己的电脑显示如下: (我的电脑里目前装的CUDA9.0)
2、下载合适的CUDA8.0版本
选择CUDA8.0版本的时候,一定要根据自己的电脑系统以及相应的环境选择,下载链接 在相应提供的下载链接的界面,按照如下所标注的内容进行:(我本人的是 Ubuntu服务器,16.04的,在这里我们选择runfile的安装形式)
Tips:由于我的是服务器端,所以如果有人也是在服务器端进行安装的话,记得要将刚才所下载的文件,先上传到服务器端。
3、进行相应的安装
在所下载相应的文件夹下,进行如下操作:
cd CUDA8 # 进入包含上述下载文件的文件夹
sudo chmod 777 cuda_8.0.61_375.26_linux.run ##给文件一定的权限
./cuda_8.0.61_375.26_linux.run ## 开始安装
运行安装指令之后,会出现Nvidia的介绍文档,例如下面所示:
重中之重的一点是,介绍文档需要你的一些操作,不然安装过程无法继续,有两个方法跳过介绍文档
- 一路Enter,直到出现一些需要你输入Y 或 N的选项
- 按Esc,退出介绍文档
当你跳过了介绍文档之后,接下来会出现一些需要你选择的选项:(每一步对应的输入都在下图中用红色的圆圈标注出来了,在这里解释一点:Driver一定要选择 n,因为你之前有装的支持CUDA9.0的驱动,所以就不用在装新的)
4、进行相应的环境配置
进入如下安装路径中,打开 bashrc 文件,然后定位到最低端 (操作过程见下图)
可以看到,在这里我的电脑端,导入的路径都是cuda9.0的:
在这里,我们要想实用刚才安装的CUDA8.0,我们只需要进行如下操作即可: 将相应的cuda-9.0换成cuda-8.0,如下图所示(保存之后退出)
然后在终端,执行下面指令进行source:
source ~/.bashrc
接下来就可以进行相应的验证:(如下图所示,既可以看到,CUDA8.0版本安装成功)
5.多个 cuda 版本之间进行切换
上面讲述的,只是你想用其中的一个的情况,如果你经常想要进行版本切换,建议使用下面的方法: 将~/.bashrc 下与cuda相关的路径都改为 /usr/local/cuda/ 而不使用 /usr/local/cuda-8.0/ 或/usr/local/cuda-9.0/。
#在切换cuda版本时
rm -rf /usr/local/cuda#删除之前创建的软链接
sudo ln -s /usr/local/cuda-8.0 /usr/local/cuda
nvcc --version #查看当前 cuda 版本
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2016 NVIDIA Corporation
Built on Mon_Jan_23_12:24:11_CST_2017
Cuda compilation tools, release 8.0, V8.0.62
#cuda8.0 切换到 cuda9.0
rm -rf /usr/local/cuda
sudo ln -s /usr/local/cuda-9.0 /usr/local/cuda
nvcc --version
对于~/.bahsrc文件的修改方法和上面一致。
6、总结
上文中只是说了,如何从CUDA9.0转换成CUDA8.0,如果你想换回CUDA9.0,只需要进行相反的过程,将 bashrc 文件里面的cuda-8.0换成cuda-9.0,然后source一下,即可。
- 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 数组属性和方法
- 47 张图带你 MySQL 进阶!!!
- 新特性解读 | InnoDB-Cluster 扫盲-日常运维
- Laravel 框架实现无限极分类
- 这样设置IDEA,让你爽到飞起!
- 这些年,我写过的BUG(一)
- Selenium处理下拉列表
- 掌握好这几个css属性,少写100行js代码
- 计算机基础知识总结与操作系统 PDF 下载
- Kafka工作流程及文件存储机制
- JS破解初探,折腾到头秃的美拍视频采集下载
- 去哪儿景点信息爬取并使用Django框架网页展示
- Kubernetes v1.15.3 升级到 v1.18.5 心得
- 结巴分词seo应用,Python jieba库基本用法及案例参考
- nali一个可以查询IP归属和CDN的命令
- 图片采集,python多线程采集头像图片源码附exe程序及资源包