
01 先了解什么是异构并行计算 + n* J$ _4 k0 f q7 H" A+ n 同构计算是使用相同类型指令集和体系架构的计算单元组成系统的计算方式。而异构计算主要是指使用不同类型指令集和体系架构的计算单元组成系统的计算方式,常见的计算单元类别包括CPU、GPU、DSP、ASIC、FPGA等。 异构计算用简单的公式可以表示为“CPU+XXX”。举例来说,AMD着力发展的APU就属于异构计算,用公式表示就是CPU+GPU。 由于术业有专攻,CPU、GPU、DSP、ASIC、FPGA各有所长,在一些场景下,引入特定计算单元,让计算系统变成混合结构,就能让CPU、GPU、DSP、FPGA执行自己最擅长的任务。 异构计算(Heterogeneous Computing)在80年代中期就已产生,其定义更加宽泛。异构计算主要是指使用不同类型指令集和体系架构的计算单元组成系统的计算方式。常见的计算单元类别包括CPU、GPU等协处理器、DSP、ASIC、FPGA等。一个异构计算平台往往包含使用不同指令集架构(ISA)的处理器。 从软件的角度来讲,异构并行计算框架是让软件开发者高效地开发异构并行的程序,充分使用计算平台资源。从硬件角度来讲,一方面,多种不同类型的计算单元通过更多时钟频率和内核数量提高计算能力;另一方面,各种计算单元通过技术优化(如GPU从底层架构支持通用计算,通过分支预测、原子运算、动态并行、统一寻址、NIC直接访问显存等能力)提高执行效率。 # p% U, V7 l B4 b. D, {4 [6 X 正是因为异构计算在理论上有着诸多的优势,一些媒体将“CPU+XXX”称为下一代处理器。* e, i7 j" x. {/ k$ @" j6 V3 C. u 异构计算在理论上相对于同构计算拥有很多优势——HSA能够简化芯片结构设计、降低应用编程门槛、缩短项目研发周期、显著提升芯片性能、广泛共享软件生态。 有厂家甚至宣传异构计算可以实现任何程序都不必费心考虑不同处理器内核之间的存储差异。但在现阶段,异构计算除了在超算上取得了明显成绩,在其他领域优势并不大。 即便异构计算目前还存在这样或那样的一些问题,但却是非常具有发展潜力的技术。) b4 S) j2 J0 _* u2 S+ x4 n! @ 随着技术的进步,电子消费品市场对于高性能并行计算的需求正在爆发性增长,特别是在机器视觉、人工智能、云计算、AR/VR、软件定义无线电以及其他新兴领域,都对异构计算系统有着非常大的需求。& P) b9 i3 x- Q5 W/ J/ y/ y 而HSA在系统编程方式上的迈进使得一个复杂片上系统能够协调在并行计算上比CPU更高效、更低功耗的GPU、DSP以及硬件加速器等计算单元承担大部分繁重的计算工作任务,在上述新兴领域能发挥较理想的作用。 也正是因此,Parmance公司计划与华夏芯在ML-HSA项目上进行合作——该项目面向机器学习和深层神经网络,并针对华夏芯此前发起的开源gccbrig项目进行优化,gccbrig项目为任何支持GCC的平台提供编译(终结转换)功能。" t- Z7 J0 Q# E/ v4 p 国外巨头也一直着力发展异构计算系统——Intel在去年以167亿美元收购阿尔特拉,发展CPU+FPGA,AMD着力发展的APU也属于异构计算,像Imagination、MTK等一些厂商也在异构计算领域积极布局。可以说,异构计算的市场前景还是值得期待。 02 再看看CPU与GPU的区别 2 C, c* X4 {4 l7 U 随着GPU的可编程性不断增强,GPU的应用能力已经远远超出了图形渲染任务,利用GPU完成通用计算的研究逐渐活跃起来,将GPU用于图形渲染以外领域的计算成为GPGPU(General Purpose computing on graphics processing units,基于GPU的通用计算)。与此同时,CPU则遇到了一些障碍,CPU为了追求通用性,将其中大部分晶体管主要用于构建控制电路(比如分支预测等)和Cache,只有少部分的晶体管来完成实际的运算工作。1、CPU即中央处理器 ![]() 图:CPU微架构示意图 . x. k, P# H& p$ i! A 从字面上我们也很好理解,计算单元主要执行算术运算、移位等操作以及地址运算和转换;存储单元主要用于保存运算中产生的数据以及指令等;控制单元则对指令译码,并且发出为完成每条指令所要执行的各个操作的控制信号。过程如下图所示: ![]() CPU遵循的是冯诺依曼架构,其核心就是:存储程序,顺序执行。在这个结构图中,负责计算的绿色区域占的面积似乎太小了,而橙色区域的缓存Cache和黄色区域的控制单元占据了大量空间。 8 ]( \6 G: |! c1 b" w) a7 k 因为CPU的架构中需要大量的空间去放置存储单元(橙色部分)和控制单元(黄色部分),相比之下计算单元(绿色部分)只占据了很小的一部分,所以它在大规模并行计算能力上极受限制,而更擅长于逻辑控制。( A" i8 S* O' ? 另外,因为遵循冯诺依曼架构(存储程序,顺序执行),CPU就像是个一板一眼的管家,人们吩咐的事情它总是一步一步来做。但是随着人们对更大规模与更快处理速度的需求的增加,这位管家渐渐变得有些力不从心。2、GPU即图形处理器。 5 n1 E% i& `3 C$ N GPU全称为Graphics Processing Unit,中文为图形处理器,就如它的名字一样,GPU最初是用在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上运行绘图运算工作的微处理器。![]() 图:GPU微架构示意图 B6 `( k& y' n, W8 E4 N 从架构图我们就能很明显的看出,GPU的构成相对简单,有数量众多的计算单元和超长的流水线,特别适合处理大量的类型统一的数据。 / e! `& ^6 J; t( k8 S但GPU无法单独工作,必须由CPU进行控制调用才能工作。CPU可单独作用,处理复杂的逻辑运算和不同的数据类型,但当需要大量的处理类型统一的数据时,则可调用GPU进行并行计算。 6 y8 _1 o0 O( ?9 e1 y% |7 r 注:GPU中有很多的运算器ALU和很少的缓存cache,缓存的目的不是保存后面需要访问的数据的,这点和CPU不同,而是为线程thread提高服务的。如果有很多线程需要访问同一个相同的数据,缓存会合并这些访问,然后再去访问dram。1 G8 T% o9 f; G! ^5 n9 [9 b$ C 再把CPU和GPU两者放在一张图上看下对比,就非常一目了然了:; \! P3 V8 {. C _2 D1 j![]() GPU的工作大部分都计算量大,但没什么技术含量,而且要重复很多很多次。 4 `8 x; z: ^+ n5 i GPU就是用很多简单的计算单元去完成大量的计算任务,纯粹的人海战术。这种策略基于一个前提,就是小学生A和小学生B的工作没有什么依赖性,是互相独立的。4 `8 h! M" `' N( @+ S9 T$ E9 Q1 f# s5 H4 e. k 有一点需要强调,虽然GPU是为了图像处理而生的,但是我们通过前面的介绍可以发现,它在结构上并没有专门为图像服务的部件,只是对CPU的结构进行了优化与调整,所以现在GPU不仅可以在图像处理领域大显身手,它还被用来科学计算、密码破解、数值分析,海量数据处理(排序,Map-Reduce等),金融分析等需要大规模并行计算的领域。 8 Q* V- L7 j0 S8 r 所以,GPU也可以认为是一种较通用的芯片。* j1 }/ I6 ~4 L2 f1 h4 } p4 W从根本上说CPU和GPU它们的目的不同,且有不同侧重点,也有着不同的性能特性,在某些工作中CPU执行得更快,另一工作中或许GPU能更好。当你需要对大量数据做同样的事情时,GPU更合适,当你需要对同一数据做很多事情时,CPU正好。 ! r/ s# V/ I7 G: m* b: `0 `1 N 然而在实际应用中,后一种情形更多,也就是CPU更为灵活能胜任更多的任务。GPU能做什么?关于图形方面的以及大型矩阵运算,如机器学习算法、挖矿、暴力破解密码等,GPU会大幅提高计算效率。![]()
4 R; R6 b; F1 P5 |) r2 Z 另外,像我们的操作系统Windows,它是为x86处理器编写的,它需要做的任务执行的进程,在CPU上肯定更为高效,你想每个线程的任务并不相同,基本上难以并行化,完全发挥不了GPU的长处。03 CPU+GPU并行计算的好处 5 G+ ~- n. q5 n( a6 p" u4 p ]9 s 不过这些并不能阻挡GPU编程的加速发展,因为GPU不是真的为通用计算而设计的,需要一些努力才能让GPU高速地服务通用计算程序。这些努力前些年是程序员而单独实现的,而随着ATI和NVIDIA开始看到高性能计算市场的硬件需求,我们看到无论是Fermi架构添加全能二级缓存和统一定址还是RV870架构不断优化LDS并放大并发线程数,这些都是GPU自身硬件体系为了适应未来的运算环境而做出的变革。4 r3 u, w9 Q- ~3 U7 e+ V( ^ 二、并行化编程优点但是,如果通过传统的方法开发一个能够运行在异构平台(在CPU和GPU的平台)的程序是很难的。不同的厂商,不同的产品型号的GPU一般有着不一样的架构,这样要想开发出一款能够高效的能够运用不同平台的所有计算资源的软件是很难的。OpenCL的出现有效地解决了异构平台的问题。 1 M6 s+ Y4 K% t' {0 C OpenCL规范是由Khronos Group推出的,OpenCL程序不仅仅可以运行在多核的CPU上,也可以在GPU上进行执行,这充分体现了OpenCL的跨平台性和可移植性,也让编程人员可以充分利用GPU的强大的并行计算能力,相对于CPU来说,GPU存在很多特点。
1 c$ Z* q' _1 k, b9 s GPU的计算能力比CPU强很多。9 d: ~8 F" N/ n' W OpenCL的技术核心包好了下面的四种模型:一是,平台模型(Platform Model):OpenCL平台模型定义了主机和设备的角色,为程序员写在设备上执行的OpenCL C函数(内核)提供了一个抽象的硬件模型。平台模型确定了主机上的处理器能够协调执行,而且存在一个或者多个处理器能够执行OpenCL C代码(设备)。 - Q5 {" b R8 |' {$ J$ O! j( K 二是,执行模型(Execution Model):定义如何在主机上配置OpenCL环境以及内核(kernel)是如何在设备上执行的。这其中包括在主机上设置OpenCL上下文,提供主机和设备交互的机制,定义了内核在设备上执行的兵法模式。. \, L }3 m& @4 ?2 u 三是,内存模型(Memory Model):定义了内核使用的抽象的内存层次。1 t+ v- B+ Y& V: b7 H$ B8 e 四是,编程模型(Programming Model):定义了并发模型如何让映射到物理硬件。; ?) J: q0 V! z' w% O 程序员可以在以下的情况下使用gDEBugger:
五、CPU和GPU共享记忆体空间 0 e6 u8 }. G$ ? 这些步骤都会不断耗费时间以及程式处理的效能。2012年,AMD就携手ARM、高通、三星、联发科等厂商成立HSA(Heterogeneous Systems Architecture)基金会,希望拓展CPU和GPU协同运算的新架构。4 i; q- @1 \2 ^9 g/ q) m 日前,AMD进一步公开说明此运算架构的新技术:hUMA(heterogeneous Uniform Memory Access)。透过hUMA,CPU和GPU能共享同一个记忆体空间,并且CPU能够直接存取GPU的记忆体位址,不必像过去得花工夫再将GPU的运算资料复写到CPU上。近日,在HotChips会议上,AMD连续公布了桌面FX处理器使用的Steamroller架构、面向低功耗平台的Jaguar架构等,但是这都不是AMD的终极目标,他们声称处理器速度的竞争已经结束,未来属于HSA。4 B9 Q. P& y; f0 F9 {( F HSA版本可以在CPU和GPU之间无缝地共享数据,而无需内存拷贝和缓存刷新,因为任务以极低的开销被调度到合适的处理器上。最终的结果是HSA版本的性能高出2.3倍,而功耗降低2.4倍。相较而言,无论是多核CPU、GPU、甚至非HSA方式的混合CPU和GPU都无法达到这样的性能水平。同样重要的是,无需转换到迥异的编程模型,仅仅通过C++的简单扩展就可以实现程序。04 xPU都是些什么鬼? 6 D& o) O( E; q8 N7 L: | Audio Processing Unit。声音处理器,顾名思义,处理声音数据的专用处理器。不多说,生产 APU 的芯片商有好多家。声卡里都有。▍DPU - H* X) y4 z+ F+ i7 d3 X Deep-Learning Processing Unit。深度学习处理器。创立于 2010 年的 wave computing 公司将其开发的深度学习加速处理器称为 Dataflow Processing Unit(DPU),应用于数据中心。! D6 ?( [+ z1 g5 ?2 k( r6 L: } ▍EPU) H8 ]0 y7 }1 q- i+ _0 t Emotion Processing Unit伴随机情绪机器人而生,可以让机器人具有情绪。从官方渠道消息看,EPU 本身并不复杂,也不需要做任务量巨大的神经网络计算,是基于 MCU 的芯片。& z# P( Y7 ~ {' Y K$ L ▍FPU7 E; P4 R. B# |2 g- q0 n ▍GPU- M! w3 L5 X& L1 ]* \: z: d Graphics Processing Unit。图形处理器。GPU 原来最大的需求来自 PC 市场上各类游戏对图形处理的需求。但是随着移动设备的升级,在移动端也逐渐发展起来。# D& c$ \8 ~! s! |% N& O" c ▍HPU- D7 x) U1 C* s1 h0 s Intelligence Processing Unit。智能处理器。以 IPU 命名芯片的有两家公司——Graphcore和Mythic。6 ?& p+ r( T9 v2 r7 m( q* G: Q Image Cognition Processor。图像认知处理器 ICP,加拿大公司 CogniVue 开发的用于视觉处理和图像认知的 IP。% ^- c2 u. I: Y! T7 X: A ▍KPU# R! P( P" q6 l- h- m/ z' I6 w* F3 Y2 a* U( n8 ^ Knowledge Processing Unit。嘉楠耘智(canaan)号称 2017 年将发布自己的 AI 芯片 KPU。嘉楠耘智要在 KPU 单一芯片中集成人工神经网络和高性能处理器,主要提供异构、实时、离线的人工智能应用服务。这又是一家向 AI 领域扩张的不差钱的矿机公司。作为一家做矿机芯片(自称是区块链专用芯片)和矿机的公司,嘉楠耘智累计获得近 3 亿元融资,估值近 33 亿人民币。据说嘉楠耘智近期将启动股改并推进 IPO。+ `0 z+ E# I1 z, h, h% q$ q4 u 另:Knowledge Processing Unit 这个词并不是嘉楠耘智第一个提出来的,早在 10 年前就已经有论文和书籍讲到这个词汇了。只是,现在嘉楠耘智将 KPU 申请了注册商标。% _- l, `$ X+ H) S% {+ O& B" |8 Q% L Mind Processing Unit。意念处理器,听起来不错。「解读脑电波」,「意念交流」,永恒的科幻话题。如果采集大量人类「思考」的脑电波数据,通过深度学习,再加上强大的意念处理器 MPU,不知道能否成为 mind-reader。如果道德伦理上无法接受,先了解一下家里宠物猫宠物狗的「想法」也是可以的吗。再进一步,从 mind-reader 发展为 mind-writer,持续升级之后,是不是就可以成为冰与火中的 Skinchanger?6 r4 M r( L. x- m ▍OPU4 C( r2 T* f2 V; b9 h- U% ^2 ]8 c: F1 z4 d. |/ W7 k Optical-Flow Processing Unit。光流处理器。有需要用专门的芯片来实现光流算法吗?不知道,但是,用 ASIC IP 来做加速应该是要的。Physical Processing Unit。物理处理器。要先解释一下物理运算,就知道物理处理器是做什么的了。物理计算,就是模拟一个物体在真实世界中应该符合的物理定律。具体的说,可以使虚拟世界中的物体运动符合真实世界的物理定律,可以使游戏中的物体行为更加真实,例如布料模拟、毛发模拟、碰撞侦测、流体力学模拟等。开发物理计算引擎的公司有那么几家,使用 CPU 来完成物理计算,支持多种平台。但是,Ageia 应该是唯一一个使用专用芯片来加速物理计算的公司。Ageia 于 2006 年发布了 PPU 芯片 PhysX,还发布了基于 PPU 的物理加速卡,同时提供 SDK 给游戏开发者。2008 年被 NVIDIA 收购后,PhysX 加速卡产品被逐渐取消,现在物理计算的加速功能由 NVIDIA 的 GPU 实现,PhysX SDK 被 NVIDIA 重新打造。 1 T, F3 ^' o# w$ w Quantum Processing Unit。量子处理器。量子计算机也是近几年比较火的研究方向。作者承认在这方面所知甚少。可以关注这家成立于 1999 年的公司 D-Wave System。DWave 大概每两年可以将其 QPU 上的量子位个数翻倍一次。4 f3 H) h4 q* n8 `0 V2 ?3 m ▍RPU: E" q% [( @+ l ▍SPU% {, T+ l u1 _9 D" q Streaming Processing Unit。流处理器。流处理器的概念比较早了,是用于处理视频数据流的单元,一开始出现在显卡芯片的结构里。可以说,GPU 就是一种流处理器。甚至,还曾经存在过一家名字为「Streaming Processor Inc」的公司,2004 年创立,2009 年,随着创始人兼董事长被挖去 NVIDIA 当首席科学家,SPI 关闭。$ @( \0 p; @5 p2 y+ p0 c% u Speech-Recognition Processing Unit。语音识别处理器,SPU 或 SRPU。这个缩写还没有公司拿来使用。现在的语音识别和语义理解主要是在云端实现的,比如科大讯飞。科大讯飞最近推出了一个翻译机,可以将语音传回云端,做实时翻译,内部硬件没有去专门了解。和语音识别相关的芯片如下。+ M! y0 K' U1 K0 |8 s, M w( O ▍TPU+ C' ?. ], V- G Tensor Processing Unit。Google 的张量处理器。2016 年 AlphaGo 打败李世石,2017 年 AlphaGo 打败柯洁,两次人工智能催化事件给芯片行业带来的冲击无疑就是 TPU 的出现和解密。Google 在 2017 年 5 月的开发者 I/O 大会上正式公布了 TPU2,又称 Cloud TPU。4 z; T5 z w/ O) ^- b▍UPU* b2 R0 O Z$ I2 M" g- d3 @ , d2 F: Z3 y: {1 y* J( m, ^ Universe Processing Unit。宇宙处理器。和 Space Processing Unit 相比,你更喜欢哪个?; r4 a' \1 g. d, W1 `: j6 t+ } Vision Processing Unit。视觉处理器 VPU 也有希望成为通用名词。作为现今最火热的 AI 应用领域,计算机视觉的发展的确能给用户带来前所未有的体验。为了处理计算机视觉应用中遇到的超大计算量,多家公司正在为此设计专门的 VPU。 K& \! Y8 U5 c: i" s+ E; S* b Visual Processing Unit。9 }3 s! n4 A" ~- d, r Vector Processing Unit。向量处理器。标量处理器、向量处理器、张量处理器,这是以处理器处理的数据类型进行的划分。, H; d2 j7 _1 s ▍WPU2 b. M9 ]: s% ` Wearable Processing Unit。一家印度公司 Ineda Systems 在 2014 年大肆宣传了一下他们针对 IOT 市场推出的 WPU 概念,获得了高通和三星的注资。Ineda Systems 研发的这款「Dhanush WPU」分为四个级别,可适应普通级别到高端级别的可穿戴设备的运算需求,可以让可穿戴设备的电池达到 30 天的持续续航、减少 10x 倍的能耗。但是,一切似乎在 2015 年戛然而止,没有了任何消息。只在主页的最下端有文字显示,Ineda 将 WPU 申请了注册商标。* J& g5 T- J# Q) K 寒武纪科技(Cambricon) 中科院背景的寒武纪并没有用 xPU 的方式命名自家的处理器。媒体的文章既有称之为深度学习处理器 DPU 的,也有称之为神经网络处理器 NPU 的。陈氏兄弟的 DianNao 系列芯片架构连续几年在各大顶级会议上刷了好几篇 best paper,为其公司的成立奠定了技术基础。寒武纪 Cambricon-X 指令集是其一大特色。目前其芯片 IP 已扩大范围授权集成到手机、安防、可穿戴设备等终端芯片中。据流传,2016 年就已拿到一亿元订单。在一些特殊领域,寒武纪的芯片将在国内具有绝对的占有率。最新报道显示,寒武纪又融了 1 亿美元。% k3 `4 }: j! b' i' j& Q Nervana Nervana 成立于 2014 年,总部在 SanDiego,以提供 AI 全栈软件平台 Nervana Cloud 为主要业务。和硬件扯上关系的是,Nervana Cloud 除了支持 CPU、GPU 甚至 Xeon Phi 等后台硬件外,还提供有自家定制的 Nervana Engine 硬件架构。根据 The Next Platform 的报道「Deep Learning Chip Upstart Takes GPUs to Task」,Nervana Engine 使用 TSMC 28nm 工艺,算力 55 TOPS。报道发布不到 24 小时,就被 Intel 收购了,全部 48 位员工并入 Intel。Intel 以 Nervana Engine 为核心打造了 Crest Family 系列芯片。项目代码为「Lake Crest」的芯片是第一代 Nervana Engine,「Knights Crest」为第二代。哦,对了,Nervana 的 CEO 在创立 Nervana 之前,在高通负责一个神经形态计算的研究项目,就是上面提到的 Zeroth。( H: U" h1 V; i* E9 ? Mobileye 一家基于计算机视觉做 ADAS 的以色列公司,成立于 1999 年,总部在耶路撒冷。Mobileye 为自家的 ADAS 系统开发了专用的芯片——EyeQ 系列。2015 年,Tesla 宣布正在使用 Mobileye 的芯片(EyeQ3)和方案。但是,2016 年 7 月,Tesla 和 Mobileye 宣布将终止合作。随后,Mobile 于 2017 年被 Intel 以$153 亿收入囊中,现在是 Intel 的子公司。Mobileye 的 EyeQ4 使用了 28nm SOI 工艺,其中用了 4 个 MIPS 的大 CPU core 做主控和算法调度以及一个 MIPS 的小 CPU core 做外设控制,集成了 10 个向量处理器(称为 VMP,Vector Microcode Processor)来做数据运算(有点眼熟,回去看看 Movidius 部分)。Mobileye 的下一代 EyeQ5 将使用 7nm FinFET 工艺,集成 18 个视觉处理器,并且为了达到自动驾驶的 level 5 增加了硬件安全模块。) t/ A. }- G; d: }9 J4 F 华为&海思 市场期待华为的麒麟 970 已经很长时间了,内置 AI 加速器已成公开的秘密,据传用了寒武纪的 IP,就等秋季发布会了。还是据传,海思的 HI3559 用了自己研发的深度学习加速器。1 J3 N2 m! d" I) e" O" g 苹果 苹果正在研发一款 AI 芯片,内部称为「苹果神经引擎」(Apple Neural Engine)。这个消息大家并不惊讶,大家想知道的就是,这个 ANE 会在哪款 iphone 中用上。, @$ a$ Z' T' A% ^# {( J; m% O |