为什么说“众核异构计算”是必然趋势?
2022年4月5日 12:07 电子发烧友 2671经常有朋友问,“为什么认为众核异构计算是必然趋势呢?”。实际上这个问题在业内已经是共识了,所以本文希望从更浅显的角度来解释这个问题。
首先,需要解释“为什么当下正处于算力大爆炸时代”
> 越强大的人工智能,需要以越强的算力为基础。
1)这如同互联网时代的爆发,是建立在庞大的云服务器集群为前提。这些服务器向用户提供视频/图片/文字内容的海量访问需求。而人工智能时代,算力建设成为新基建的基础建设。
2)以目前人脸识别、视频结构化这种深度学习算法举例,实际上我们已经在云端推理和训练投入大量的计算资源,服务于公共安全、门禁、金融系统等领域,也成为了Intel、AMD和英伟达新的营收增长点。而,正在获得突破性进展的领域,对算力的需求将更大:例如自动驾驶、医药研发、量化交易、基因工程、知识图谱、数字孪生、工业软件、智慧城市等领域。
>算力时代,行业竞争的决定因素是“算力+算法”。
1)以金融市场博弈为例,以前决定各方成败的是否拥有“最强的大(人)脑”,10个、100个、还是1000优秀交易员。而正在到来的时代是,你方是否拥有最优秀的算法+更强的算力,决定了你方能处理的信息维度,数据规模,从而拥有更准确的预测和最快的决策速度。
2)和传统的商业世界一样,服务质量和速度将决定一个公司的成败。在未来这些优势将自于“不断演进的算法”和“更强大的算力基建投入”。一个国家在数字经济的优势,也将来自于此。
> 算力时代,科研领域竞争的决定因素是“算力+高端科研人才”。
1)这里以Google的Summit超算集群和DeepMind所带来的科研突破举例:
a. 攻克生物学界50年来的重大难题——蛋白质折叠预测;
b. 在第一性原理分子动力学中引入机器学习的模拟方法将模拟的时间尺度提高了至少1000倍,体系规模提升至少100倍(2020年戈登贝尔奖.贾伟乐);
c.QMCPACK利用Summit,使得研究体系可以包含数百个原子,为研究更实用的超导体提供极大的帮助;
d. 为“战胜”癌症,需要研究基因、生物标记物与环境之间隐藏(目前未知)的关系。融合已有的健康数据、非结构数据如文本型的报告、医学影像等,利用机器学习算法,在Summit上对美国的癌症群体进行更全面的分析;
e. 利用Summit,可以确定人类蛋白和细胞系统的功能、协同和进化的模式。这些模式可以帮助研究临床表型、疾病的可见性状(例如老年痴呆症、心脏病和成瘾)的形成,并为药物发现过程提供支持;
f. 利用Summit,FLASH可以进行长达数千倍时间内对多达12倍的元素种类进行高分辨率的模拟。
算力大爆炸,正在为科研领域取得颠覆性成果提供算力保障。反之,如果我们今天的高性能计算水平仍停留在十年前的水平,今天所见的激动人心的技术突破几乎是不可能的。
2)以上的例证希望说明两个问题:第一,国家需要建设更强大的超算集群,科研人员才有可能在前沿领域取得突破性研究成果。小米加步枪能取得胜利的可能性几乎为零,由此知识产权的布局依然将受制于人。第二,以前称之为超算,今天已经称之为智算,其原因是HPC+AI正在成为新的研究范式,即科学计算融合深度学习算法。
3 )在军事领域,我们也看到了多传感器、多数据链融合,利用深度学习算法提升战场智能化水平;还有如密码学对于通讯的意义;空气动力学对于大装备的意义等等。
4)可以遇见,未来在国家重点实验室、科研院所、985/211高校将迎来智算建设的新高潮。原因?因为科研人员主要就在这些地方。
> 区块链、量子霸权、元宇宙等概念,背后都将是以庞大的算力为依托。
那么,如何获得更强大的算力呢?
> 一直以来,行业依托于半导体工艺、制程以及Chiplet最先进的封装技术,在时钟速度、集成密度、片上集成方法可以获得更高的算力。然而硅基芯片工艺达到3nm后,摩尔定律是否将失效?所以今天大家开始在研究“后摩尔时代”。
> 计算机架构的演进,是另外一种重要手段。
1)传统手法:cache增加,指令集扩展,协处理器,多核等。例如,为了增加x86的多媒体处理能力,于是有了MMX扩展指令集;为了兼顾功耗、成本和视频编解码性能,有了专门的H.264/265协处理器IP,这里就不再赘述了。
2)专用处理器:CPU在通用计算领域的角色无可替代,目前的主要指令集有x86(Intel、AMD、海光等少数几家),arm(有钞能力的公司都可以买来解决计算芯片设计的主要问题,钞票越多能买到越强的IP授权,指令集授权则更贵),RISC-V(开源指令集,后起之秀)。但CPU面对一些大规模、并行运算时已经显得力不从心、成本也划不来。所以出现了GPU,NPU,DPU这类专用计算处理器,GPU擅长图像处理,NPU擅长深度学习算法处理,DPU擅长数据处理。讲到GPU、NPU、DPU这三个名词,实际上这个体系非常复杂,无法用类似CPU三种指令集这样去简单概述,在这个领域各家芯片的架构差异、标称性能都非常大,用万马奔腾比较合适。在这个领域目前最优秀者无疑是英伟达,追赶者内心的压力是巨大的。要不是中美贸易战的大背景,我想业者还是投资领域,谁能敢奢望去挑战?
3)片上的众核异构:CPU单核计算性能提升已经越来越不能满足应用对计算性能需求、功耗的控制、成本的控制的需求,所以“片上众核异构”应势兴起。这带来了许多的优势,共享内存、各计算单元之间实现更高速的数据通讯、均衡的功耗控制。最近热炒的Apple M1/M1 pro/M1 Max是一个很好的范例。
4)整机的异构计算,是以CPU板卡为主,在机箱内增加各种专用的计算板卡,以增强服务器在某些特定领域的计算能力。例如插上GPU板卡增强服务器的图像处理能力,插上NPU板卡增加服务器的深度学习算法的处理能力,插上GPGPU板卡增加科学计算的处理能力,CPU+存储卡+NPU卡就是我们经常听到的“近存计算”。
如何驾驭和挖掘算力?
我们正在拥有越发强大和越发复杂的计算硬件,另外一边是复杂而庞大的高性能计算应用软件体系(科学计算、各种深度学习算法、各种运行框架runtime等),一些是已经成熟而知名的软件,另外一些是正处于青春期的各种算法和创新应用。那么,应该如何将这两者能融合起来呢?这个事情是简单还是复杂的呢?
1)如果硬件和软件无法融合,那么硬件性能将被白白浪费掉。比方说你投了5nm的芯片,在计算许多场景时可能还比不过别人28nm时代的速度和效率,更糟糕的情况是出现计算精度不够,或者完全不支持某些成熟软件的运行。(计算精度?我的卡可是支持FP32的,这里可能大家有所不知,如果是加减乘除这种四则运算当然不会有什么问题,但如果让求解三角函数,反三角函数,双曲函数等,这些都是软件算法在另外一个层面决定了计算精度和计算速度。||更深一点层面,计算并行优化决定了许多算法和工业软件是否能运行在GPU、NPU这类专用处理器,没有这部分工作,这些加速卡将毫无用处。NVIDIA在这方面软件投入了海量的资金、长期的时间和优秀的人才,我国的计算硬件的短板已经显现出来的。
2)如果持续创新的算法与软件,无法与已经投入的硬件进行适配和融合,那么这些硬件资产的价值将被白白浪费掉了。近一步而言,硬件资产一旦投入,就无法变化。但算法和软件是高速发展和发散性的,如何让客户的硬件资产持续发挥价值,这需要算力基础软件栈进行更长期和持续的工作。遗憾的是,我看到许多智算/超算平台的政府规划文件,里面并没有为此去单列预算出来。从商业角度而言,硬件商本质就是卖硬件的,那么谁将应该为此提供长期的费用呢?我们更是低估了这个层面的难度以及持续投入。
3)如果我们用“云存储的投资建设”逻辑来对照“算力的投资建设”逻辑,这必然会走入误区。云存储是一个相对于简单业务场景,单调而成熟的技术体系。“存与不存,硬盘就在哪里!” vs "算与不算,算力就在哪里!” 这背后是完全不同的技术逻辑。
> 算力基础软件栈是“越发强大和越发复杂的计算硬件”与“复杂而庞大的高性能计算应用软件体系”的技术桥梁。其主要包括数学库、算子库、科学计算库、求解器等,还包括AI和异构计算框架/或叫引擎,编程语言/编译器。我国由于历史原因,以前缺乏对处理器领域的投资,所以这个层面的基础软件技术积累几乎为零,人才储备也几乎为零。形象地说,计算大芯片是一栋大厦的地基,那么算力基础软件栈是先进计算的第一层,是大堂,是服务中心所在。
“2022年3月30日,国际计算机协会(ACM)宣布Jack Dongarra为2021年ACM 图灵奖获得者,以表彰他在数值算法和库方面的开创性贡献,这些贡献使高性能计算软件在四十多年里能够跟上硬件的指数式改进。”
> 软件生态的意义。生态的意义主要在于两方面,一是,让应用开发者不需要过多考虑硬件平台的差异性,便捷地使用算力,专注于研究自己所需要解决的问题;二是,让应用开发者形成的软件资产,可以直接部署和运行在各种异构计算的平台。围绕算力时代,整个行业仍有很远的路要走,巨头也只是提前了一点在积极布局,例如Intel的OneAPI,AMD的Rocm,NVIDIA的CUDA等等。作为国产自主可控的发展理念,我们仍有机会去追赶并超越,我们应该如何应对呢?
结束语:这个行业里,因为各种原因故意忽略/隐瞒基础计算软件栈的难度和价值,这其实并不利于整个计算产业链的健全和健康发展。