Ububtu18.04下载cuda9.0
下载好后得到:
CUDA 9.0仅支持GCC 6.0及以下版本,而Ubuntu 18.04预装GCC版本为7.3,需要安装gcc-6与g++-6
查看当前版本:
$gcc --version $g++ --version
可以不卸载当前gcc 和g++直接下载gcc-6 g++-6,
$sudo apt-get install gcc-6 g++-6
然后更改软连接修改gcc-6为默认版本:
$sudo mv gcc gcc.bak
$ sudo ln -s gcc-6 gcc
$ sudo mv g++ g++.bak
$ sudo ln -s g++-6 g++
也可以直接卸载当前版本
$sudo apt-get --purge remove gcc g++
到/usr/bin下,可查看gcc g++的详情,找不到位置可以使用$wheris gcc
下载好cuda runfile文件后,运行
$sudo sh cuda_9.0.176_384.81_linux.run
若当前目录有多个.run文件很难tab出名字,可以将其转为可执行文件再运行
$chmod 755 cuda_9.0.176_384.81_linux.run
$sudo ./cuda_9.0.176_384.81_linux.run
安装中出现多个选项,显卡驱动不选,其他选yes敲回车或者自己设置路径。
已经有驱动,安装时没有选择驱动,安装驱动需要关闭图形界面到root下进行设置,有时间补
查看安装完后的提示:
提示需要设置环境变量软链接等
新下载安装cuda 目录/usr/local/下cuda软链接文件为当前安装的cuda版本
查看cuda链接指向
$ls -l
$ cd /etc/ld.so.conf.d/
将当前目录下的cuda-10.0.conf文件复制到/root下备份
$ sudo cp cuda-10-0.conf /root
更改当前文件名为cuda-9-0.conf
$ sudo mv cuda-10-0.conf cuda-9-0.conf
打开配置文件
$ gedit cuda-9-0.conf
将/usr/local/cuda/lib64写入配置文本
如果有多个CUDA版本切换,按如下方式设置。
移除/usr/local/下的cuda软链接文件,创建新的链接
$rm -rf cuda
$sudo ln -s /usr/local/cuda-10.0 /usr/local/cuda
然后再设置 /etc/ld.so.conf.d/下文件,此时cuda是可以使用并安装好的,如果使用nvcc命令需要将当前的cuda路径写入环境变量,设置如下:
export PATH="/usr/local/cuda/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"
此时即可使用$nvcc -V 查看当前驱动和cuda版本
Cuda安装完后reboot下。
安装cudnn7.4.2
选择的7.4.2for.CUDA9.0
得到文件:
解压,cd到解压目录
将/cudnn-9.0-linux-x64-v7.4.2.24/cuda/include 下cudnn.h 文件拷贝到cuda-9.0的include下
$sudo cp cudnn.h /usr/local/cuda-9.0/include
将/cudnn-9.0-linux-x64-v7.4.2.24/cuda/lib64 下libcudnn.so libcudnn_static.a 拷贝到cuda-9.0的lib64下
$sudo cp libcudnn.so libcudnn_static.a /usr/local/cuda-9.0/lib64
安装tensorflow-gpu 1.8.0
本来有1.13版本,现在换成1.8.0
$sudo -H python3 -m pip install tensorflow-gpu==1.8.0
成功下载显示如下:
查看pip下安装的包
$pip3 list
找到tensorflow相关的包,若想卸载,可用以下命令批量卸载
$sudo pip3 uninstall tensorflow tensorboard tensorflow-estimator tensorflow-gpu
有些卸载时需要带版本号
$sudo pip3 uninstall tensorboard==1.8.0
下载最新的tensorflow-gpu
$sudo -H python3 -m pip install --upgrade tensorflow-gpu
=====================================
CUDA是NVIDIA推出的用于自家GPU的并行计算框架,也就是说CUDA只能在NVIDIA的GPU上运行,而且只有当要解决的计算问题是可以大量并行计算的时候才能发挥CUDA的作用
Cuda和cudnn版本查看方法
cat /usr/local/cuda/version.txt
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
Cuda及显卡驱动版本查看fagnf(使用前提cuda路径加入环境变量)
$nvcc -V
驱动版本及显卡使用状态查看
$nvidia-smi
实时查看并刷新状态
$watch nvidia-smi
===================
nvidia-smi 显示信息解释:
第一栏的Fan:N/A是风扇转速,从0到100%之间变动,这个速度是计算机期望的风扇转速,实际情况下如果风扇堵转,可能打不到显示的转速。有的设备不会返回转速,因为它不依赖风扇冷却而是通过其他外设保持低温(比如我们实验室的服务器是常年放在空调房间里的)。
第二栏的Temp:是温度,单位摄氏度。
第三栏的Perf:是性能状态,从P0到P12,P0表示最大性能,P12表示状态最小性能。
第四栏下方的Pwr:是能耗,上方的Persistence-M:是持续模式的状态,持续模式虽然耗能大,但是在新的GPU应用启动时,花费的时间更少,这里显示的是off的状态。
第五栏的Bus-Id是涉及GPU总线的东西,domain:bus:device.function
第六栏的Disp.A是Display Active,表示GPU的显示是否初始化。
第五第六栏下方的Memory Usage是显存使用率。
第七栏是浮动的GPU利用率。
第八栏上方是关于ECC的东西。
第八栏下方Compute M是计算模式。
下面一张表示每个进程占用的显存使用率。
显存占用和GPU占用是两个不一样的东西,显卡是由GPU和显存等组成的,显存和GPU的关系有点类似于内存和CPU的关系。跑caffe代码的时候显存占得少,GPU占得多,跑TensorFlow代码的时候,显存占得多,GPU占得少。