文 | 李国杰 中国工程院院士、中国科学院计算技术研究所研究员
本文转载自《中国科学院院刊》2019年第34卷第6期,标题为《序言:发展高性能计算需要思考的几个战略性问题》,不代表瞭望智库观点。
高性能计算机是我国科学技术快速发展的标志性成果,已成为继高铁之后的又一张“中国名片”。一个发展中国家在尖端计算技术上能迅速走到世界前列,这是一件了不起的事情。对我国高性能计算机的现状,有人极力赞美——“中国超级计算机技术实力碾压美国”的醒目标题曾在网上刷屏;也有人表示疑虑,认为国产的超级计算机是“用航母运载沙丁鱼”。对发展高性能计算的目标和策略选择,学术界也有不同的看法。正确的战略决策来源于对国情和技术发展趋势实事求是的分析,而不是玩弄技术新名词的“纸上谈兵”。习近平总书记指出:“坚持实事求是,最基础的工作在于搞清楚‘实事’,就是了解实际、掌握实情。这就要求我们必须不断对实际情况作深入系统而不是粗枝大叶的调查研究,使思想、行动、决策符合客观实际。”在攀登计算机领域“珠穆朗玛峰”的关键时刻,我们需要遵循习近平总书记的指示,对我国高性能计算机的这件“实事”做深入系统的调查研究,做出符合客观实际的决策。
《中国科学院院刊》作为“国家科学思想库核心媒体”,是中国科学院建设国家高端智库的核心传播平台。《中国科学院院刊》2019年第6期推出“中国高性能计算发展战略”专题,邀请院内外工作在第一线的专家,对涉及高性能计算发展的战略性问题进行深入探讨,旨在凝聚科技界、产业界及社会各界的共识,推动中国高性能计算更理性、更健康地向更高的目标发展。
在讨论与高性能计算有关的战略问题之前,先要明确高性能计算机究竟是指什么。高性能计算机并没有严格的定义,人们在不同的场合讲的“高性能计算机”的含义可能也不一样。①国际组织定义。国际上有一个为世界上最高性能的500台计算机排名的组织【注:该组织官网为:https://www.top500.org。TOP500榜单始于1993年,是对全球已安装的超级计算机“排座次”的知名排行榜,由美国和德国超算专家联合编制。TOP500榜单每半年发布一次。排行榜主要编撰人为美国田纳西大学计算机学教授杰克·唐加拉】,最近一次排名是2019年6月,第500名的峰值性能是2.1Pflops(2100万亿次浮点计算每秒)。在这个组织的网站上,高性能计算机(ffighPerformanceComputer,HPC)和超级计算机(Supercomputer)是混用的,不加区分地当成一种计算机类型。也就是说,目前他们把超级计算机(高性能计算机)圈定在Pflops级(千万亿次浮点计算每秒)计算机水平。本专题讨论的重点也是Pflops级以上的超级计算机。②市场的定义。企业在销售计算机时,高性能计算机是指区别于个人电脑(PC机)与低档服务器的计算机,往往认为价格在10万元人民币以上的就是高性能计算机,而把超级计算机看作是最高档的几百台高性能计算机。
请注意,本专题讨论“高性能计算”,包括硬件、软件、算法、应用、产业生态环境等,不仅仅限于构建“高性能计算机”字之差反映不同的战略思维。高性能计算本身就是国家的战略重器,涉及的战略性问题很多,由于篇幅有限,下面列出几个社会各界较为关心的战略性问题,稍做说明,供读者参考。
1.发展高性能计算的目的究竟是什么?
高性能计算可以应用于核模拟、密码破译、气候模拟、宇宙探索、基因研究、灾害预报、工业设计、新药研制、材料研究、动漫渲染等众多领域,对国防、国民经济建设和民生福祉都有不可替代的重大作用,发展高性能计算就是要让这巨大的作用发挥出来。同时,高性能计算也是中美大国博弈的重要领域,每一次较量的胜利都会给国人极大的激励,有力增强了民族自豪感和凝聚力。因此,发展高性能计算意义重大。
我国发展高性能计算需要正确处理世界排名与实际效用这两者的关系。其实,我国与美国在高性能计算领域的博弈,主要是因为该领域研究对国防、经济和民生的实际效益,而不是某一次排名是否第一。只要认清楚这一点,两者就统一了。如果不重视实际应用绩效,而只把排名第一作为“政治正确”的标志,可能会产生误导。
2.如何全面部署计算机科研与产业的发展?
如果把高性能计算机理解成超级计算机,其在整个计算机产业中占比并不大。超级计算机主要是用来解决其他计算机解决不了的挑战性问题,采用几万个甚至百万个以上的处理器并行协同解决一个大问题。在实际应用中,更多的场合是需要同时响应大量的任务请求,即不是要算得快而是要算得多。这一类应用需要高通量计算机,主要由云计算中心和大数据中心部署。目前银行等金融行业还在大量采购美国IBM的主机系统(Mamframe),他们买的主要不是计算速度,而是可靠性和软件的兼容性,业界称为高可靠或高可用系统。我国的计算机产业要从中低端向高端发展,因此我们的任务不仅仅是发展超级计算机,而且包含发展高端计算机。
美国政府2015年发布的“国家战略性计算计划”(NSCI)就是一个较全面的顶层规划,而2016年启动的E级计算机研制计划(ECP)只是美国能源部对NSCI计划的响应。我国国家重点研发计划中有“E级计算机关键技术验证系统”重点专项,但没有包括其他高端计算级的顶层规划。在我国高通量计算机至今没有重大项目支持,几大网络服务商需要的云计算和数据中心设备基本上是自行设计,并委托其他公司组装。如果长期缺乏全国科技力量的支持,我国网络服务企业将难以形成全球竞争优势。
3.我国应重点发展什么类型的高性能计算机?
高性能计算机有两种基本类型:①能力(capability)型,强调解决单一复杂问题的最高计算速度,尽量缩短求解一个最大最难问题的时间;②容量(capacity)型,强调同时处理多个大任务,每一个任务只用到计算机的一部分能力。全球TOP500超级计算机大多数属于容量型。科学研究对计算能力的需求是无止境的,E级(1018)计算机做出来后,还会提出Z级(1021)计算的需求。研制能力型超级计算机必须突破现有计算机的技术瓶颈,以引领计算机技术的发展,因此。美国的ECP计划的目标是研制能力型计算机。
世界上最高水平的超级计算机,主要用于科学研究,而科学计算在高性能计算机应用中占的比例巳不到10%。近几年大数据分析和机器学习等人工智能应用巳成为高性能计算机的主要负载,2017年智能应用在中国高性能计算机应用中的占比巳提升到56%,估计这个比例今后还将继续扩大。美国、日本等国纷纷将正在研制的超级计算机称为智能计算机。
长期以来,评测超级计算机的性能都采用Lmpack测试程序,这是一个求解线性方程组的程序。这个程序的优点是可扩展性特别好,现在还没找到比它扩展性更好的测试程序。而且,Lmpack是CPU密集应用的程序,可以测出几乎满负荷、满功耗下的计算机浮点计算性能。从这个意义上讲,Linpack是测试超级计算机可靠性和稳定性的理想程序。但是,求解线性方程组终究只是一种应用,全面衡量超级计算机的性能需要更合适的基准(benchmark)测试程序,可惜现在还没有。由于功耗的限制,发展通用超级计算机已遇到极大的困难,近年来领域专用超级计算机成为热门研究方向,Linpack显然不适合作为领域专用计算机的测试标准。
我国应重点发展什么类型的高性能计算机,这不是一个学术问题,而是一个科技需求问题,只有通过对我国国防、经济、科研和民生的潜在需求的认真调研才能回答。但有一点可以肯定,容量性超级计算机、智能计算机、领域专用超级计算机与能力型超级计算机一样重要,在做科技决策时应统筹兼顾。把研制E级高性能计算机的全部人力物力都投在争取Lmpack指标世界第一可能是不明智的决策。
4.中国到底有没有对高性能计算的迫切需求,现在的应用水平怎么样?
从理论上讲,我国对超级计算机肯定有强烈需求;但从实际上讲,这一需求还与一个国家的科研水平、经济水平有关。2018年,中国气象局安装了派-曙光超级计算机,峰值计算性能是8Pflops,计算能力已跃居气象领域世界第3位。众所周知,气象领域是使用超算的大户,目前能正常发挥作用的超级计算机离E级计算还有两个数量级的差距。气象部门要把E级超级计算机用起来,必须在基础研究、算法、软件和人才培养上做出巨大的努力。有人说,先有E级机,才会有E级计算的需求。这是对的,我们需要在E级计算机上培养E级用户。但一台超级计算机的平均有效寿命只有5年,5年内哪些应用领域的用户可以培养出来也需要通过调研做出判断。
我国现有的超算中心究竟应用效益高不高是一个颇有争议的问题。有些超算中心宣称效益非常好,支持了上千项国家重大科技项目,产生了近百亿元经济效益;而媒体上也有文章说超算中心核心应用拓展不够,没有产生预期功效。造成这种局面的原因是缺乏第三方的公正评估。国家应组织有公信力的评测机构或学会对全国的超算中心做一次评估,了解清楚超算中心究竟完成了多少事关国家重大战略需求的计算任务?借助超算做出了哪些重大科学发现?对经济发展作出了哪些不可替代的贡献?P级(1015)以上的计算任务究竟占多大比例?……只有按照习近平总书记讲的搞清楚“实事”,掌握了实情,才能对我国超算的实际应用水平做出正确判断。
5.发展高性能计算要强调应用牵引还是技术驱动?
人们常说,发展科技既要需求牵引,又要技术驱动。但在实际过程中,往往有所偏重。比较而言,美国发展超级计算机主要是应用牵引,而我国侧重于技术驱动。从一个例子可以看出美国应用牵引的倾向。美国最近开展的ECP计划的负责人PaulMessina是美国阿贡实验室的计算机应用科学家,ECP计划则是由阿贡实验室(超级计算机的应用方)主导的科研项目。在Summit计算机交付之前,美国能源部巳经成立了25个应用软件研发小组,设计能够利用E级计算机的软件。ECP计划是否成功的指标不是Linpack性能,而是这25个应用性能的“几何平均值”,这意味着其中任何一个应用的性能都不能很差。美国是先有挑战性应用问题,为解决应用问题造新的计算机;我国的做法则是先造出世界领先的机器,再来找应用。发展超级计算机一定要国家战略导向,以及战略中的挑战问题导向。在研制新的超级计算机之前,应用部门一定要先把急需解决的挑战问题明明白白提出来,用可考核的应用性能指标来评价正在研制的计算机。在应用牵引上我们应虚心地向美国同行学习。
强调应用牵引不是说技术驱动不重要。由于摩尔定律临近极限,学术界普遍认为现在是系统结构研究的黄金时代,但系统结构研究的困难超出人们的预期。
在ECP计划刚启动时,PaulMessina强调E级计算机研制要走所谓高架轨道(ffigherTrajectory),两年以后描述E级计算的用语已经从“新型(novel)”转向比较乏味的“先进(advanced)”,Summit计算机的重大技术突破也不多。对于E级计算机和以后更高性能的超级计算机研制者,能耗、访存、通信、可靠性、应用性能这几道“高墙”必须越过。没有关键技术的重大突破,超级计算机不可能再上一个大台阶。中国计算机学者应当在这一征程中作出载入史册的贡献。国家在安排高性能计算重大科研任务时,不能只盯住工程任务,应更加重视颠覆性器件(如新型存储器件、超导、量子、光子器件等,以及几种器件的跨界协同设计)和变革性系统结构的基础研究。降低功耗的技术突破要摆在最优先的位置。
6.如何建立发展高性能计算的生态环境?
所谓科研和产业生态环境是指围绕着一个目标形成的,从基础研究、技术突破、产品研发到应用推广的协作共同体,不是简单的链条,而是相互关联的社会网络。
对我国高性能计算生态环境而言,最薄弱的环节是软件。目前,我国大型科学计算的应用软件基本上都依靠进口。我国的超算经费用于应用软件开发的还不到10%,美国相应的投入资金约为中国的6倍。振兴软件的关键是人才,目前能培养高性能计算软件人才的大学很少,因此建议应扩大该领域的招生名额。美国参与ECP计划软件开发的大学并不都是一流大学,一般的大学也承担了开发任务。
我国高性能计算生态环境的另一个薄弱环节是企业应用。美国公司的超算系统规模是中国公司的10倍多。例如,汽车行业的通用、克莱斯勒等公司,每家都有10多个超算系统,英国的BP石油公司也有世界上最大的工业用超级计算机。我国使用高性能计算机较多的是BAT(百度、阿里巴巴、腾讯)等网络服务公司,而在制造业的应用则规模较小。只有企业较普遍地用上了高性能计算机,才能真正走上高质量发展道路。构建高性能计算生态环境时,还要重视发挥骨干企业的作用。高性能计算机研发的一次性工程(即非经常性工程,NRE)费用很高,只有通过企业的工业化设计,采用标准化组件和Scaledown技术,才能使小规模的高性能计算机具有很高的性能价格比,通过批量销售收回NRE成本,才能使国家科研投入获得较高的回报。
本期专题由中国科学院计算技术研究所孙凝晖研究员、中科曙光(603019)公司历军总裁指导推进,文章作者还包括谭光明、金钟、迟学斌、孙家昶、李根国、冯圣中、范东睿、詹剑锋等,他们都是第一线的科研人员,有些已在高性能计算领域耕耘了二三十年。上述几个战略性问题在他们的文章中都有较详细的论述。一线科研人员的战略思考是基于常年的实践体会,既有“顶天”的技术眼光,又很接地气,值得决策部门重视。
本文首发于微信公众号:瞭望智库。文章内容属作者个人观点,不代表和讯网立场。投资者据此操作,风险请自担。