在人工智能、超级计算机等领域开花结果通用计算技能是什么?_***_焦点
举个最经典的例子,在十多年前,高清***刚盛行起来的时候,当时编码高清***对付当时的电脑来说,还是一件很困难的事情。***编码过程中,大部分运算都是浮点类型的,而GPU对付这种类型的打算相称拿手,打算起来量又大又快,以是人们就想到,能不能利用GPU来编码高清***。正巧当时业界的研究重点转向了GPGPU,英伟达第一个推出了一套比较完全的办理方案,将原来利用CPU的运算搬到了GPU之上,使得***编码速率比原来快了几倍之多。如果有DIY资历比较老的读者可能还依稀记得,当时许多文章都先容如何利用显卡加速解码蓝光***,对付***的编解码加速,便是最早离我们间隔最近的GPGPU运用。
为什么要GPGPU呢?CPU由于有着通用性的需求,以是每每它上面单个核心会设计的非常大而全面,并且由于CPU打算的特性,核心中很大一部分面积用来构建缓存(一个核心中每每有L1和L2两级缓存)和掌握单元(解码器与分支预测等前端单元),而实际用来运算的单元面积可能仅仅只占全体核心的一半乃至不到(如图)。各类缘故原由使得CPU没有办法做非常大的规模,一个核心中能塞入的东西有限,而总体的核心数须要掌握在一个合理范围中,多了就可能会发生各种各样的问题。
八核Coffee Lake的核心图,可以看到四个核心的面积已经靠近右边的集成GPU
而GPU的设计理念就不一样了,本身图形打算便是一项大略而暴力的“粗活”,繁芜度远不如CPU要卖力的各种各样不同类型的活,想要提高图形打算速率的一个很大略的办法便是扩大处理器中含有的单元数量。以是GPU对付特定的打算任务,由于有着更大的打算单元,以是很随意马虎就可以达到比CPU更高的打算速率,表现出来便是现在的GPU在浮点运算吞吐量上远超CPU。
CPU与GPU在布局上的不同
各种GPGPU的实现
由于GPU更加适宜用来进行大批量特定打算的特性,几大图形软硬件厂商都纷纭推出了自己的GPGPU打算办理方案,紧张有以下几种:
ATI Stream
首先提出GPGPU实现的厂商是被收购前的ATI,并专门供应了一套开拓工具包(SDK)给程序员以调用GPU来参与打算的能力。不过由于各种限定和AMD收购ATI后产生的混乱,这套SDK在与Nvidia CUDA的竞争中处于下风,后来由于AMD官方转向支持OpenCL,这套SDK终极停滞了开拓。
ATI Stream Logo
Nvidia CUDA
CUDA是Nvidia在G80时期推出的一项技能,全称Compute Unified Device Architechture,统一打算架构。从G80那代核心开始,Nvidia率先采取了一种统一设计的架构,将原来的管线分工式设计转变为统一化的处理器设计。CUDA就伴随着G80核心的发布一起公之于众,这套平台可以让程序员用C和C++来编写用GPU运行的程序,学习本钱比ATI Stream要低一些。
Nvidia CUDA Logo
CUDA也是目前运用最为广泛的一种GPGPU实现,在Nvidia的强力推广之下,CUDA在许多领域大放异彩。
OpenCL
上面两个GPGPU的实现都是有平台针对性的,要想用他们的办理方案你就得用他们家的硬件,而OpenCL就不一样了。
OpenCL最早是一组由苹果公司开拓出来的用于异构打算的框架,苹果公司将这套框架的草案提交到Khronos组织,作为一种开放标准供业界利用。在2008年末,1.0版本正式公开,目前Intel、AMD与Nvidia的GPU都支持这套框架。
OpenCL Logo
不过OpenCL并不仅限于在x86平台上面供应异构打算的框架,由于跨平台和开放标注的特性,它还可以利用专门的可编程电路来加速打算。以是业界对付它的支持非常广泛,下图便是OpenCL同盟成员。
OpenCL同盟
DirectCompute
DirectCompute是微软从DirectX 10开始加入的用于通用打算目的的API集,可以调用GPU进行加速打算。从Vista开始,Windows的各种桌面殊效就开始采取DirectCompute来加速打算。在DirectX 11中,微软完善了这套API,并且在Windows系统上更多地利用GPU来加速打算系统界面的各种殊效。
GPU-Z显示该GPU支持的通用打算特性
详细运用
媒体编码加速
在十年多以前,H.264等面向高清运用的***编码格式刚盛行起来的时候,由于CPU的性能限定,编码一段H.264的***是一件相称耗费韶光的事情,以是人们想到了用GPU来加速***的编码。Nvidia刚推出CUDA的时候,就将加速***编码作为该技能的一大卖点来宣扬,并免费供应了一个支持CUDA技能来转码的软件BadaBoom。不过后来,Nvidia在显卡上加入了专门用于***编解码的硬件电路,并开放了名为NVENC的编码API供软件调用,通用打算也就此离开了这个可以说是最早利用它,也是离我们最近的领域。
BadaBoom加速***转码
Adobe也很早就在旗下的CS和CC系列软件中加入了GPGPU的支持,比如Premiere Pro和After Effect都支持OpenCL来加速***的实时预览和殊效。
***补帧与画面优化
在英伟达、英特尔和AMD三家相继在自己的GPU中加入专用打算电路用以加速编解码***之后,通用打算就离开了这个领域。但是有些不知足于既有的***品质的人们又开拓出了新的可以利用GPGPU的功能:***补帧。
***补帧指的是在原来低帧数的***,通过高下帧的打算,渲染出一帧原来不存在的画面补在两帧之间,使其不雅观感更加流畅。比如将24帧的***补帧至60帧,由于这个过程的打算量过于弘大,利用CPU跟不上***播放的速率,没法做到实时补帧,以是开拓者就将这个功能搬到了GPU上来运行,比如很多人都在用的SVP4,便是一个利用GPGPU的补帧软件。
SVP4补帧软件界面
在***画面优化领域,目前地球上最强的***渲染器MadVR也是利用GPGPU来优化***画面表现,比如***播放中涌现的色带、色环,还有在压制过程中涌现的瑕疵等,都可以利用GPGPU在***的播放过程中进行实时的填补。
人工智能与深度学习
人工智能与深度学习是近年来非常热门的两个有关联的领域,演习人工智能须要非常大的数据打算量,这时候就可以利用上GPU的特长,比如热门的深度学习框架TensorFlow就可以利用CUDA来加速学习。
Nvidia在这两年也不断展示了他们在机器学习方面的一些结果,比如在RTX系列上引入的DLSS(深度学习抗锯齿)技能便是利用机器学习来达成的。
DLSS技能
科研领域的运用
科研领域的运用
上图是CUDA在科研领域的一些运用,可以看到GPU确实在很多方面开始默默影响着我们的生活。
超级打算机
老黄从G80开始就一贯同步推出同架构的纯打算卡,归于Tesla品牌之下。于是就出身了很多用Tesla打算卡来组建的超级打算机,比如竞争贝尔·戈登奖的六个入围者中,有五个利用了由NVIDIA GPU供应支持的超级打算机。最近英伟达还联手ARM,在超级打算机领域中连续发力,估量未来采取GPGPU技能的超级打算机将会越来越多。
Tesla V100加速模块
总结
GPGPU这个相对付PC全体历史还算是比较新的观点,经由十余年的发展已经不仅局限于PC,还走向了其他领域,扎根于我们生活的每个角落。GPGPU已经在许多云打算平台上得到了运用,相信在往后,GPU会更加深入我们电子生活的方方面面,在那里默默地发热。
本文系作者个人观点,不代表本站立场,转载请注明出处!