兵家必争之地,GPGPU接棒GPU
2020-03-15
来源:Ai芯天下
前言:
半导体产品未来可能将沿着标准化与定制化交替发展的路线前进,每十年波动一次,半导体技术未来要依靠上述定律维持其高增长的创新速度。
过去数年我们一直在呼唤AI 芯片和高性能计算芯片,那么下一个波峰将是超高灵活度集成的芯片GPGPU。
时代召唤:从GPU到GPGPU
早年的GPU专用于图形计算加速,在不断的发展和演进之中,逐渐进化出越来越多的通用属性,也即可编程性。
CUDA是英伟达在GPU应用于高性能异构计算领域在编程方面的一大创举,CUDA可以基于C语言、C++和Fortran、Python等语言直接开发应用程序,并构建起极为庞大的开发用户群,这奠定了GPU可以广泛应用的技术基础和生态力量。CUDA的推出,也开启了英伟达的GPGPU战略。
GPGPU,也有人称之为GP2U(GP的两次方U)。两个GP代表着不同的含义:后边的GP表示图形处理(Graphic Process),和U组合一起是我们熟知的GPU(图形处理器);前一个GP则表示“通用目的”(General Purpose)。
GPGPU不是一款具体的芯片,而是一种概念,即利用图形处理器进行一些非图形渲染的高性能计算。
从狭义上来讲,GPGPU在GPU的基础上进行了优化设计,使之更适合高性能并行计算,并能使用更高级别的编程语言,在性能、易用性和通用性上更加强大。
GPU应用于AI计算,无论是云端训练还是终端推理,其本质都是GPU通用属性的一个方向。
根据算法的不同,GPU的运行速度可以比CPU快10倍到100倍以上。目前世界上最先进的超级计算机多数是基于GPGPU技术来实现的。
小众玩家:GPGPU领域的玩家
·英伟达是GPU带到通用计算领域的先驱,其GPGPU凭借并行计算的优势和完整强大的通用并行计算架构CUDA几乎垄断云端训练芯片市场。
·AMD就发布过一款“流处理器”,算是AMD最早的GPGPU的尝试。但当时那款“流处理器”只是GPGPU的一个“雏形”,远未发挥出GPGPU的真正威力。
·英特尔也在加紧布局通用GPU,从开始对GPU的不屑,到基于自家的x86架构开发独立显卡,英特尔折腾了十年之久仍然没做出来一款像样的GPU。
压力山大:现阶段都要面对的挑战
①尽管将GPU大规模部署到电子战等嵌入式系统中会面临诸多困难,会需要若干年的努力,但同样的,要引入其它技术路线也非常困难。
②处理器技术的快速更新与迭代,这使得任何电子战系统承包商都几乎不可能将其技术路线依托于单一处理器架构,尤其是当前存在诸多可选项的情况下。
③将GPU应用于各种电子战平台所必须承受的恶劣工作环境的全面的、充分的验证,包括地面、海上、空中甚至是太空环境,这需要数十年的时间。
无论如何,将定点和浮点处理结合在同一个芯片上为提高电子战系统性能的提升提供了诱人的前景,减少时延也是一个无休止的目标和挑战。
困难重重:研发GPGPU的难点
从硬件角度看,最核心的是指令集。指令集的覆盖面、颗粒度、效率等决定一款芯片能否覆盖到足够宽的应用领域,对软件开发和产品迭代是否足够友好。
无论英伟达还是AMD的GPGPU,指令集都在千条量级,对比目前国内的AI芯片指令集大多都在百条以内。类型与数量的差别映射到硬件高效实现的复杂程度,差距是巨大的,在这方面国内的团队还存在着一定的差距。
②基于硬件层的任务管理和智能调度。这是让芯片从硬件层即提高算力的利用率,也就是大家常说的实际算力。
大多数AI芯片依赖于软件层的调度实现,这种方式有三个短板:第一增加了软件开发的复杂度,第二降低了硬件算力的利用率,第三减缓了软件栈迭代更新的速度。在AI领域,算法模型、开发环境、应用场景都在加速更新,这无疑大大增加了产品落地与工程化的难度。
③软件层面最重要的是开发生态。GPGPU通过英伟达十多年的耕耘,已经建立起了一个超过160万开发用户的庞大而成熟的生态——CUDA。
④AI芯片若需要搭建全新的生态,会带来两个维度的问题:第一,客户需要冗长的适配期,从原有的开发环境切换到新的软件生态,这不仅需要资源投入,还要推迟业务部署时间窗口,同时增加了业务的不确定性。
值得一战:国内企业挑战与机遇
过去一年,AI芯片创企们从秘密造芯的状态走出,多数创企选择切入的是终端市场,少数玩家选择进军被美国半导体巨头们蚕食掉大半江山的云端,而选择做GPGPU芯片的玩家更是寥寥无几。
NVIDIA早早凭借强大的GPU+CUDA方案切入深度学习领域,用大笔研发投入和时间堆积起坚不可摧的生态城墙,而这恰恰是国内外其他玩家都相对薄弱的环节。
GPGPU创企们还需在CUDA生态的基础上来推广自己的芯片,但随着初代芯片陆续顺利落地,若想真正实现自主可控,打造完整的国产核心技术生态体系是必经之路。
CPU因为有着通用性的需求,所以往往它上面单个核心会设计的非常大而全面,并且由于CPU计算的特性,核心中很大一部分面积用来构建缓存(一个核心中往往有L1和L2两级缓存)和控制单元(解码器与分支预测等前端单元),而实际用来运算的单元面积可能仅仅只占整个核心的一半甚至不到。
种种原因使得CPU没有办法做非常大的规模,一个核心中能塞入的东西有限,而总体的核心数需要控制在一个合理范围中,多了就可能会发生各种各样的问题。
明面上,现在是异构计算的天下,近年来传统以CPU为核心的服务器市场增长比较平缓,而GPU服务器的增速迅猛,年增长率据称超60%。
只不过在现阶段,国产替代方案还要在CUDA生态的基础上推广自己的芯片产品,在兼容CUDA的同时,建设新生态。在这个过程中,每一步都关键且充满挑战。
潜在因素则在于5G时代的到来推动了物联网的迅猛发展,应用场景更加丰富多元,这要求云端的计算资源能应对各种复杂场景的需求提供丰富灵活的计算支撑,工程师们肯定更愿意将能“通吃”的芯片焊在服务器上。
围绕GPGPU,国外已是龙争虎斗,反观国内,能够洞悉GPGPU发展机遇并付诸行动的芯片厂商少之又少。
华为是为数不多看到通用GPU趋势的芯片厂商之一,而且看起来正在尝试两条腿走路通往GPGPU的路上。
结尾:
GPGPU这个相对于PC整个历史还算是比较新的概念,经过十余年的发展已经不仅局限于PC,还走向了其他领域,扎根于我们生活的每个角落。
GPGPU已经在许多云计算平台上得到了应用,相信在以后,GPU会更加深入我们电子生活的方方面面,在那里默默地发热。