SAST weekly 是由电子工程系学生科协推出的科技系列推送,内容涵盖信息领域技术科普、研究前沿热点介绍、科技新闻跟进探索等多个方面,帮助同学们增长姿势,开拓眼界,每周更新,欢迎关注!欢迎愿意分享知识的同学投稿至 eesast@mail.tsinghua.edu.cn , 期待你的作品!
你说你放假期间玩遍3A大作,画质全开,帧数坚挺?
哦。。。rz
你说你刚刚购置一款顶配macbook pro,图形渲染、视频剪辑爽到飞起?
哦。。。rz
你说你你又双叒入手了新显卡,然而程序运行还是不给力?
哦!也许可以帮到你!为您量身打造科学计算解决方案,助力您的调参生涯(误。
本文主要面向电脑小白,介绍显卡的入门知识,附有ubuntu上配置cuda加速的方法,力求一站式服务!另外,由于本文不会涉及算法或者架构的专业知识其实是小编不会,萌新也能放心食用!
Chapter I 显卡入门指南
1、CPU or GPU?
硬件设计架构的不同,决定了两者不同的应用场景。由于CPU要完成更多的功能,需要具有很强的通用性,比如复杂的逻辑判断、终端控制等等,这就使CPU内部结构较为复杂。计算只是CPU功能的一部分,主要是串行计算。
GPU由于历史原因,是专门为运行优化游戏或视频产生的,功能单一但重复性高,这也决定了GPU有大量并行结构的算数计算单元,并行计算能力强大。因此GPU更适合运行计算密集型程序。
GPU有大量的并行ALU(算术运算单元)
2、常见的GPU/显卡
显卡包含了GPU和与之配套的外围电路甚至散热设备,人们一般所说的GPU和显卡是基本等价的。显卡主要分为集成显卡和独立显卡。
集成显卡是设在主板或CPU上的图形处理器,比较常见的是Intel Graphic系列,与Intel处理器配套使用(只要用Intel处理器的电脑基本都有,因此市场占有率比独显高很多),性能较低,同时功耗也会小很多,玩个小游戏看个电影都是没问题的。什么?你说你想运行科学计算?对不起,不支持。
独立显卡主要有AMD和NVIDIA两种,简称A卡和N卡。A卡多用于制图(据说是省了买显示器的钱~),性价比高,苹果电脑支持。同价位的A卡比N卡的性能好,但是功耗大。N卡在独显的市场份额高,软件生态好兼容性高。从大型画面渲染的结果来看,A卡在画质方面优于N卡,但可能帧数流畅性等方面稍逊一筹。总之A卡N卡各有千秋,在选择与使用方面有较强的个人偏好,为保证本文的客观性,小编不再做过多评价。
但是在科学计算方面,N卡有较好的软件生态支持(CUDA Toolkit)。虽然A卡的性价比高,但是由于仅获得TensorFlow/Caffe的官方支持,而且配置难度大,本文之后只讨论基于ubuntu配置cuda的方法。
计算中心服务器显卡性能碾压自己购买的显卡,而且能租到物美价廉而且不是很拥堵的服务器自然是极好的……然而除了学校提供的实验室服务器支持之外,国外的计算中心大多价格高昂,境外服务器也存在网络访问困难等问题。租服务器还存在高峰期时网络延迟与拥堵(比如平时作业ddl,期末大作业ddl,各种期刊会议ddl……orz),使用起来未必顺利。
至于自己选购显卡,不同厂家不同型号的显卡各有特色,并没有一款十全十美的显卡,所谓性价比高也只是相对而言。由于外接显卡盒子的方式并不是很普及且配置相对困难,因此如果要更换显卡的话,大概率就要选购一台全新的笔记本电脑,这将会是一笔不小的预算(一开始小编以为只要单纯购买一个新的显卡配合着旧的笔记本用就行,结果……)这就需要我们选购电脑时一定带有目的性和方向性,比如,在轻薄、电池续航以及散热方面有什么具体的需求?是用显卡跑程序,图形渲染还是玩游戏?由于要置换一整台电脑,CPU、硬盘、内存等等都需要通盘考虑。上网随便搜一搜显卡天梯图,然后到店里面逛一圈看一看颜值就拍脑门决定买的这种方式是不可取的(没错就是小编嘤嘤嘤。
选购显卡 or 租服务器
Chapter II Ubuntu配置cuda方法
1、Why Ubuntu?
首先对于大家喜闻乐见的Windows系统来说,一般游戏本出厂时都会装好NVIDIA驱动,如图:
即便如此,小编依然不推荐用Windows运行GPU科学计算。首先Windows的软件生态一般,一些工具包在Windows上的配置比较复杂。另外,出于各种原因,同样性能的显卡在Windows的系统下性能得不到很好的发挥(比如,各种奇奇怪怪的进程、各种更新、自动加载弹窗广告等占用资源)。
那么对于“尊贵”的macOS呢(其实macOS作为操作系统其本身是不收费的,然而……除非你想装黑苹果),然而由于历史原因(可自行百度),目前macOS并不官方支持NVIDIA显卡以及cuda加速,仅支持AMD显卡。
由于ubuntu自带强大的shell功能以及较完善的深度学习框架支持,大部分服务器都使用Linux系统,因此使用ubuntu下的运行环境是十分有必要的。
2、CUDA
CUDA(Compute Unified Device Architecture),是显卡厂商NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。开发人员可以用C来为CUDA编写程序。通俗来讲,只有GPU是不够的,需要告诉计算机该怎么用(算法驱动),才能用显卡运行程序。
CUDA的具体安装步骤应该严格按照官方文档进行,有可能会麻烦一点,但能最大概率保证安装成功。然而官方文档那么长,读起来好难受,于是小编在这里把关键的、特别容易忽略的步骤概略性地讲一讲,具体的操作(比如命令行代码该怎么敲)可以查阅文档。
首先应确认电脑显卡型号是不是CUDA支持,网址http://developer.nvidia.com/cuda-gpus(注意,所列显卡只是包括但不限于,比如1660就没在列表把小编吓得不轻,但是它确实支持CUDA);之后确定并手动升级系统内核,以及gcc版本,具体操作见文档。
其次在官方网站下载与你的系统相对应的CUDA runfile 文件,网址为https://developer.nvidia.com/cuda-downloads,下载后进行md5安装包完整性。国内网访问官网速度很快,尽量不要在其他渠道下载(比如百度网盘或者是迅雷),完整性得不到保证。
要提前卸载/禁用的:ubuntu自带驱动Nouveau,两个驱动产生冲突;如果以前安装过CUDA driver推荐删除,新旧可能产生冲突。
一定要确认Nouveau disabled之后,进入文本模式,一般是按ctrl+alt+F3(应该1~6都能进入)。进入文本模式后(文本模式就是图形界面全部关闭,鼠标也不能用,只能通过命令行进行操作),关闭图形界面sudo service lightdm stop,安装命令sudo sh 目录/文件.run --no-opengl-libs,后缀是防止安装openGL库,否则会出现循环登录的问题。之后等一段时间,进入交互界面,一直默认下去就行。最后开启图形界面sudo service lightdm start。
如果安装失败或者中间出现了某些错误,可以用文本命令行删除之后重新安装,命令为sudo /usr/local/cuda-10.1/bin/cuda-uninstaller以及sudo /usr/bin/nvidia-uninstall。
之后验证是否安装成功,编译cuda提供的Samples,命令为cd /Samples目录 ,执行make。编译完成后,二进制文件会存放在当前目录的bin/x86_64/linux/release当中,切换目录,运行可执行文件./bandwidthTest。如果安装成功,运行结果是这样的:
菜鸡显卡,大佬轻喷
大功告成(手动撒花~
Chapter III 结语
一般来讲,无论是何种软件/环境,只要是按照官方的教程仔仔细细地一步步做,“不会有本质困难”wh语。然而出于各种各样的原因(最常见的是没按照官方教程上去做,或者国内网络访问官网不流畅),安装最后失败,这时候记下log文件的报错信息,到百度/CSDN/谷歌/Stack Overflow提问,问题应该能解决。
在CPU和GPU架构特点方面,本文参考了知乎的提问:https://www. zhihu .com/ question/ 19903344/ answer /96081382;安装部分是小编结合自己的实际情况,依据官方安装教程总结而成;另外,博客https://www.cnblogs.com/dinghongkai/p/11268976.html解决了小编循环登录的问题,在此致谢。
撰稿人:袁健皓
审稿人:刘圣禹