分享

异构计算神器来了,它能带来性能革命吗

 三易生活 2021-01-15
  • 前言:优化差有多要命?3A大作告诉您


说到最近游戏圈子里的热门话题,刚刚在全平台上线的某“国产3A大作”显然绝对值得一提。一方面来说,靠着“抽卡化单机游戏”的设计,以及投入几十万元都难以实现全角色满状态的高氪金程度,使得其成功证明了自己的确没有抄袭隔壁任天堂的良心大作,在“原创程度”上值得肯定。


但另一方面来说,作为一款官方号称花了一亿美元开发的大作,这款话题游戏又有着甚至连低成本页游都足以在其面前自傲的贴图质量(比如某知名的水果摊),以及无论手机配置多高、价格多贵、散热效果多好,都只能达到30帧的流畅度体验(安卓版本)。

说实在的,我们三易生活并不是专业的游戏媒体,因此也不想去追究一款本应备受期待的国产大作,到底为什么会搞成现在这个样子。但从我们自身所进行的简单测试结果来看,“它”在顶级旗舰手机上帧率不足的原因,似乎并不能简单的归结为游戏体积过大,或者含有主机移植内容这么简单。

这是我们手头的某台绝对够旗舰的安卓机皇,自带的性能监测结果

因为哪怕是在并不复杂的场景中,我们三易生活手头这台旗舰机型自带的性能监视器也明明白白的显示,GPU已然不堪重负,但CPU却几乎没有被占用多少算力。换句话说,整个手机SoC的综合性能,其实并没有被充分和均衡的发挥出来。

那么这就不禁使我们脑洞大开了,是否存在这样一种方法,可以拯救诸如此类优化不佳的程序,让它们能够更充分的利用当今主流芯片不同处理部件的算力,从而给消费者带来更流畅也更正常的体验呢?

  • 有的,这就是异构计算“终极方案”oneAPI


2019年6月17日,一年一度的国际超级计算大会在德国拉开帷幕。在这一场主要旨在讨论超级计算机、区块链、量子技术的活动中,知名行业巨头的Intel也预告他们最新研制出的一个“小玩意”。


而这,就是今天刚刚发布1.0正式版的oneAPI。虽然乍看之下只是一个面向大众的、开源的编程工具,但是oneAPI给整个行业带来的震撼,却远远地超过了目前可能任何一台超级计算机、顶级显卡、新款游戏主机,或是旗舰智能手机。因为它即是整个计算机编程领域有史以来第一个能够同时兼容CPU、GPU、NPU、以及FPGA四种基本架构,完全不同的处理器硬件的“终极解决办法”。


这是什么概念呢?简单来说,在如今PC或者手机的一颗“处理器”芯片里,实际上往往集成了多种用途的处理单元。比如说擅长标量处理的CPU、擅长矢量运算的GPU(图形处理器)、擅长矩阵计算的NPU(神经网络处理器),有的甚至还会集成有擅长空间运算的FPGA(可编程逻辑门阵列)。

但问题在于,各种用途的处理单元它们架构迥异,所需的编程工具各不相同。过去,假设一位程序员想要在Ta开发的游戏里,把原本由GPU运行的物理计算过程改为由CPU执行,把原本由CPU负责的战斗AI判断过程交给NPU去运算,那么就将不得不同时使用三种完全不同的编程工具,并且深刻理解三种不同架构硬件之间在算法、原理,以及计算方式上的差异才行。


说实话,这的确不是一般人能搞定的事情,至少在oneAPI出现之前是这样。但在有了oneAPI后,程序员只需要学会一种统一的代码(DPC++),然后在写完代码后,选择这段代码是交给CPU,还是交给GPU,亦或是NPU去运行,oneAPI就能自动完成代码的转换和优化工作。如此一来,“仅用一种语言,编写出自动适配多种不同计算架构的程序,并让程序在运行时更充分的利用现代数码设备的异构计算能力”,就突然间变得轻而易举了。


不仅如此,由于oneAPI是一个旨在最大程度上简化异构编程的开源项目,因此它的兼容性甚至还远不止于Intel自家的产品。比如它可以支持NVIDIA的显卡,可以支持AMD的CPU,甚至对IBM Power架构和ARM架构的兼容工作正在进行中。这也就意味着,如果未来某个大型游戏使用oneAPI编写,那么它将不仅仅能够自动将电脑中的CPU和GPU算力利用到极致,同时还可能会非常方便移植到游戏主机和智能手机上,并依然保持极高的执行效率。

  • 虽然新技术很强大,但异构计算可不是新概念

不难看出,至少在目前的技术条件下,Intel的oneAPI的确可能是当今技术最先进,使用最方便,最有可能实现应用程序“异构计算”优化,从而带来执行效能飞跃的编程方案。它的出现,意味着未来的超级计算机将可能变得比现在更快更省电,也意味着未来的操作系统、大型游戏将有望迎来流畅度的大幅改善。除此之外,由于本身具备兼容移动平台的潜力,oneAPI甚至不排除可以造福移动设备,让手游变得更省电、帧率更高,同时也让真正意义上从PC或者主机移植游戏到手机,变得更加容易。

但如果你急着山呼万岁,那倒也大可不必。毕竟只要是稍有关注近年来PC与智能手机技术动向的朋友可能会记得,所谓让CPU、GPU,以及其他芯片内计算组件共同承担运算任务的“异构计算”,其实并不是一个新玩意。


比如说早在2011年,刚刚将ATI收归麾下的AMD,就打着“Fusion(融合)”的旗号推出了初代的APU产品线。当时为了彰显“融合处理器”的优势,AMD也曾推出过一些官方的异构计算功能套件,比如利用GPU的算力进行视频插帧、利用CPU和GPU的融合算力通过PC摄像头识别手势操控等等。虽然在锐龙时代之前,AMD的APU一直都没能掀起太大风浪,但不可否认的是,他们可能才是PC异构计算的开创者。


又比如说早在2013年,诺基亚就发布了自己的第二款4100万像素Pureview拍照手机Lumia 1020。当时受于Windows系统的限制,只能选用高通骁龙S4 MSM8960 SoC作为计算核心,但其所集成的ISP(图像信号处理器)实际上并不具备处理如此高像素照片的能力。因此为了让Lumia 1020的拍照体验正常,诺基亚与高通的工程师们共同努力,使用Adreno 225 GPU“承担”了一部分ISP的计算工作,而这也就成为了智能手机异构计算最早的成功案例。

或许正是受到此次事件启发,高通在同年发布的新旗舰芯片骁龙800上,首次在硬件架构和驱动底层两方面都为异构计算做好了准备。骁龙800的Krait400 CPU和Adreno320 GPU均具备运行OpenCL通用加速代码的能力,这使得它成为了可能是最早为异构计算设计的智能手机SoC。


但当时间来到现在我们会发现,AMD最新的锐龙4000系列APU尽管性能饱受赞誉,但却完全取消了对异构计算的支持。而高通最新的骁龙865+、骁龙768G等平台虽然具备分布式的AI计算设计,但从AIDA64的系统信息中也不难看到,它们的CPU部分取消了对OpenCL的支持,反而不能运行除了AI计算之外的异构并行程序了。

  • 性能神器本质上是商业行为 ,但它依然值得欢呼


那么问题就来了,为什么早早在异构计算方面有所投入的AMD与高通等厂商,如今却纷纷放弃了这条道路。反而是此前一直在异构计算方面名不见经传的Intel,突然放出了可能足以改变业态的“大招”呢?


说白了,其实一切都只是商业需求与产品策略而已。毕竟异构计算的本质,是为了解决一套系统中CPU、GPU、或其他什么计算组件性能“拖后腿”,或是负载过于不均匀的问题。比如曾经APU本来是打算拿GPU弥补CPU算力的不足,比如高通最早搞异构计算,是想让手机发挥出更高的常规能效比(无奈程序员不买账),而现在则主要用于增强对于不同AI模型的兼容性和提高处理效率。

至于Intel,一方面来说,他们如今自己就拥有CPU、GPU、AI处理器,以及FPGA的四条产品线,研发统一的编程API,能够简化自家未来各种融合处理器及定制超算芯片的程序开发。另一方面来说,虽然现在很多媒体都在讲“AMD Yes”,但接触过编程(特别是高性能编程)的朋友就知道,Intel的编程工具可是自奔腾4时代就一直被公认为具备更好的性能表现(嗯,没错,它诞生的初衷,也是为了让架构糟糕的奔腾4用起来更快一点),而这,也正是现在他们能够为异构计算搞出“oneAPI”的底气所在。


当然,我们并不是说,因为oneAPI包含了intel宣传和优化自家产品的商业意图,就不值得大家欢呼了。毕竟,与此前放弃了的AMD以及高通相比,无论Intel出于怎样的目的,他们确实将“异构计算编程”的这扇大门给真正打开了,而且还以开源的形式,让理论上所有的程序员,以及未来所有的计算设备都可以从中受益。而仅凭这一条,显然oneAPI就值得我们为之喝彩了。

【本文图片来自网络】

推荐阅读:

不管你愿不愿意,老旧的USB接口正被加速淘汰

只有USB Type-C,可能才是未来的唯一选择。

iPad mini或被雪藏,便携性对iPad不重要了吗

此次并未获得更新的iPad mini,未来或许前景堪忧。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多