基于高性能计算环境的HPC算力编程模式
2022-10-27王小宁卢莎莎吴璨和荣闫晓婷肖海力迟学斌
王小宁,卢莎莎,吴璨,和荣,闫晓婷,2,肖海力,迟学斌,2
1.中国科学院计算机网络信息中心,北京 100083
2.中国科学院大学,北京 100190
引言
随着计算基础设施能力的不断提升和计算技术的发展,计算已经成为科学研究和工程制造的必不可少的工具与手段。
传统高性能计算依赖大规模、高速网络互联的计算资源形成强大的计算力,通过数值计算技术满足了包括气象预报、灾害预警、材料科学、飞行器制造、宇宙演化等诸多领域中大规模模拟和仿真需求,成为最早也是最强的计算力代表。传统高性能计算系统追求计算速度快、精度高;这不仅需要国家投入巨大的建设和运维成本,还需要发展大规模科学计算软件和工具,尤其面向国产的异构计算系统仍需投入较高的时间和人力成本。
相比昂贵的传统高性能计算资源,云计算[1]通过虚拟化技术将相对低廉的计算资源转化为看似无限可用的计算资源并按需提供给用户,通过规模化效应显著降低了成本。早期的云计算平台主要提供基本的云主机和云存储服务,用于搭建各类信息系统和服务,随后以容器、微服务、DevOps 等技术为基础的各类云原生技术相继而出;云超算采用云计算技术支持快速构建并行计算环境,满足科学研究和工程模拟的一般计算需求。随着云计算平台带给用户越来越多的代码部署和资源管理负担,当前云计算正发展至下一个阶段,即无服务器计算[2]。无服务器计算主要面向编程人员,允许用户专注于业务逻辑编程,屏蔽繁琐的部署、监控、容错、日志、扩展性等问题;其中,编程模式成为其发展的重要挑战。
大数据[3]和人工智能[4]是近几年新兴的技术。大数据包括数据采集、数据预处理、数据存储及管理、数据分析及挖掘、数据展现和应用几个阶段,其中数据分析及挖掘在海量数据的负载下需要较大的算力资源支撑。以深度神经网络为代表的人工智能技术近年处于蓬勃发展时期,大幅跨越了科学与应用之间的技术鸿沟,迎来爆发式增长的新高潮,其中从模型训练到推理无不以大量算力资源为基础,甚至出现了以单浮点精度为度量的人工智能芯片和集群。
今天,无论科学问题求解还是工业仿真,都不再拘泥于单一算力资源或计算技术,推动了融合计算的出现和发展。本文的融合计算是指应用编程根据业务需要,结合不同算力的特征,采用多种计算技术,分布式运行在多元化算力资源上。
表1 算力资源比较Table 1 Comparation of computing system
表2 计算技术比较Table 2 Comparation of computing technology
在国家“东数西算”战略[5]的指引下,通过网络建设可将各有优势的算力基础设施资源互联互通,通过融合计算可实现多种计算技术的协同工作,充分利用不同算力和计算方法的优势。本文主要研究并提出基于高性能计算环境的新型HPC 算力编程模式(HPC as a function),旨在融合计算中充分发挥HPC 算力优势,是新一代计算基础设施可编程能力的重要变革。
1 高性能计算环境服务模式发展
高性能计算环境[6]聚合了跨地域、跨组织的高性能计算资源,通过网格技术和云服务技术等为用户提供统一的高性能计算服务环境。中国科学院计算机网络信息中心自主研发了高性能计算环境系统软件SCE[7-9],采用微服务架构,通过驱动机制有效屏蔽资源层在管理和组织方面的差异,支持集成不同的资源调度算法,为用户按需匹配计算资源,并提供命令行、WEB、接口等多种使用方式。
目前SCE 系统软件已应用于国家高性能计算环境(暨中国国家网格)[10]的建设,建成了包括天津、无锡、广州、深圳、郑州、昆山等多家国家超级计算中心在内的大型跨域分布式计算环境。同时,SCE软件也应用于中国科学院超级计算环境的建设,目前由中国科技云[11]统一管理和运行。
高性能计算环境从服务模式发展来看大致分为以下几个阶段:
第一阶段,应用服务阶段。
相比单一集群提供的SSH 命令行使用模式,高性能计算环境为了降低传统高性能计算系统的使用门槛,发展了以应用为中心的服务模式。通过系统软件屏蔽了不同高性能计算系统中作业管理系统的差异,应用软件部署差异、环境配置差异等,允许用户仅提交计算数据,指定计算规模即可开展计算。服务形式为命令行和WEB 界面两种方式。
第二阶段,接口服务阶段。
十二五至十三五期间,为支撑发展应用领域社区和业务平台的建设,高性能计算环境通过多源认证与授权、接口网关、服务治理等技术提供了环境计算服务接口[12]。环境计算服务接口是REST 风格的网络编程接口,支持跨平台、跨语言的编程方式,可为应用领域社区和业务平台的搭建提供较大的灵活性。目前,计算服务接口已支持建设了二十余个应用领域社区和业务平台,包括高能物理软件系统,HPC 教育实践平台等。
第三阶段,计算函数阶段。
随着融合计算的出现,高性能计算仍然是应用业务的重要数据处理手段。高性能计算环境即将进入新的计算服务阶段,即计算函数阶段。该阶段提供新型HPC 算力编程模式(HPC as a function),旨在应用编程层面对HPC 算力资源和任务进行抽象,并形成易用的编程函数库。计算函数立足于应用业务编程人员,使得用户不再受限于应用领域或业务平台中固有的业务工作流,不受限于HPC 算力资源,支持融合计算业务编程,提升“东数西算”多元计算基础设施的可编程性。
2 相关工作
传统HPC 算力编程模式是基于单一高性能计算系统的并行编程模式。早期代表性的编程模式是OpenMP[13]和MPI[14],分别支持多核并行编程和跨节点并行编程;随着异构计算系统成为主流,多种异构编程模式出现,OpenCL[15]是第一个面向异构系统通用目的并行编程的开放式、免费标准;CUDA[16]是建立在NVIDIA GPU 上的一个通用并行计算平台和编程模型;可移植异构计算接口HIP[17]是一种C ++运行时API 和内核语言,适用于AMD 和NVIDIA GPU;SYCL[18]是OpenCL 的高级编程模型,用于提高编程效率;OneAPI[19]是Intel 推出的统一的、简化的编程模型,旨在简化跨多架构的开发过程(如CPU、GPU、FPGA、加速器)。
与传统HPC 算力编程模式不同,本文立足多个高性能计算系统,并假设单一高性能计算系统内部应用计算已形成计算程序,重点研究其在融合计算应用中的集成。
在美国能源部E 级计算计划(Exascale Computing Project,简称ECP)[20]中,洛斯·阿拉莫斯国家试验室联合多个大学实验室构建了一个HPC 应用统一运行时框架BEE[21],分别针对Charliecloud 容器平台、虚拟机平台、AWS 云平台、OpenStack 云平台提供了HPC 应用运行时的后端实现,并提供了易于使用的统一用户界面、执行环境和优化性能。BEE可支持HPC 应用在高性能计算系统和云计算平台无差异化运行,并支持上层工作流构建。
美国东北大学和麻省理工学院林肯实验室联合针对科学计算工作流提出了一种混合执行策略Mashup[22],用来自动平衡计算任务在常规云计算平台(EC2)或在新型无服务器计算环境(Lambda)的执行。实验表明Mashup 在执行时间和成本降低方面均优于最新工作流执行引擎。
加州大学伯克利分校和纽约大学针对无服务器计算提出了一种新型编程框架Kappa[23]。Kappa 可以支持程序员在新型无服务器计算范式下表达一组短期任务,使用检查点机制处理函数超时,并提供并发机制支持并行计算和协同。
上述工作中Mashup 和Kappa 均为面向云计算基础设施的编程支持,其中计算任务的表达和编排等技术对本文工作有借鉴意义。BEE 支持HPC 算力,但仅提供了工作流表达,应用可编程性存在一定局限性。本文重点研究HPC 算力在融合计算应用中的新型编程模式,相比跨域工作流系统更侧重于HPC算力在应用编程层面的抽象与表达,可与其他类型算力接口协同提供更强的可编程性。
3 HPC 算力编程模式
3.1 HPC 算力抽象
本文定义了HPC 算力的如下基本抽象:
队列:表示计算资源,具备的属性包括所属集群名称、总核数、当前运行核数、当前排队核数。队列为计算资源的基本单位。
应用:表示应用资源,具备的属性包括所属集群、版本、可用队列、执行环境设置信息。一个计算任务可执行的基本条件是计算资源上部署有应用资源。
作业:表示计算任务,具备的属性包括应用、计算核数、输入参数和数据、输出数据、状态。一个作业的状态包含排队、运行、完成三个值。
数据:为计算任务的输入和输出,具备的属性为作业、存储位置。数据在融合计算编程中将是HPC 算力与业务其他流程连接的重要枢纽。
HPC 算力抽象的关系如图1 所示,数据是HPC算力服务的输入和输出,数据计算通过作业执行,作业向队列申请并获取计算资源,必要时进入排队状态,当资源满足时调用应用启动计算任务,待计算完毕通过数据进入应用业务的下一个流程。对于整体应用业务编程,此过程为异步执行。
图1 HPC 算力抽象Fig.1 Abstraction in HPCaaF
3.2 计算函数库
基于高性能计算环境的HPC 算力编程模式以计算函数库为具体实现形式,采用Python 编程语言。
Python 已经成为大数据处理和人工智能应用的主流编程语言,提供基于Python 编程语言的计算函数库更有利于融合计算中HPC 算力资源表达;同时,Python 程序可以通过Jupyter[24-25]笔记形式进行共享和重现,便于应用业务的协同。
计算函数库的主要函数定义如表3。
表3 主要计算函数定义Table 3 Function definition
3.3 关键技术问题
在HPC 算力编程模式实现中,待解决的关键技术问题如下:
(1)用户认证与授权
在高性能计算环境中,用户需要通过环境认证和授权方可使用环境中高性能计算资源,以作业日志作为资源核算的重要依据。
高性能计算环境采用多源用户认证与授权技术[26],不仅支持环境用户通过命令行、WEB 接口、领域社区和业务平台认证访问环境计算资源,而且基于OAuth和Token 技术支持第三方领域社区和业务平台的用户访问环境计算资源。
不同于平台服务的多用户运行模式,计算程序往往是单用户运行模式;而多源用户认证与授权技术需要采用回调机制确保认证安全,因此融合计算程序难以凭借用户名和密码在程序中完成高性能计算环境的认证过程,需要新的技术方案在兼容已有认证体系同时支撑计算函数库安全访问HPC 算力资源。
当前可借鉴的技术方案为GITHUB 提供的基于Token 的登录方式[27]。用户可通过GITHUB 网站根据需求设置参数并生成Token,然后在命令行等运行环境中通过Token 访问GITHUB 的各项接口功能。
(2)HPC 算力评估
HPC 算力评估是融合计算应用中判定一个计算任务是否需要HPC 算力支撑的重要决策依据,是实现融合计算应用高效率、低成本目标的关键。
国家高性能计算环境建设团队在十三五项目执行期间提出高性能计算环境资源评价标准[28],立足于单一计算集群量化评价集群计算服务水平并形成规范,但缺乏针对单个算例的分析评测方法。论文相关工作Mashup 面向云计算环境提出了计算任务执行的量化定义,作为选取最优目标计算资源的重要依据,可供本文后续进一步工作借鉴。
当前实际应用业务中,HPC 算力评估尚主要依靠应用业务人员的经验,一般从资源和成本两个层面考虑。资源层面,当计算所需的硬件资源(如加速卡)或应用软件资源仅在HPC 算力中具备时,优先考虑使用HPC 算力资源;成本层面,主要包括时间成本和花销成本,其中时间成本主要考虑计算加速比和排队时间两个重要因素。
(3)计算任务编排
应用业务流程中往往包含多个HPC 计算任务,他们或可独立运行,或存在数据依赖,通过计算任务编排可优化融合计算应用业务中的多个HPC 计算任务执行。
文献[29]提出的Brane 框架使用直观的领域特定语言DSL 表达任务编排逻辑,帮助具有有限编程经验的终端用户自行编写应用程序,实现跨计算设施的任务编排和应用构建。文献[30]提出的BEE 编排系统通过调度组件和与不同计算资源的交互组件实现云和HPC 组件任意组合的通信,从而支持跨资源的复杂工作流实现。
HPC 算力编程模型下的计算任务编排可借鉴已有科学工作流中的任务编排技术,并重点解决一个核心问题,即以应用为单位,考虑HPC 集群排队的实际情况,如何编排其中多个HPC 计算任务,使得整体计算完成时间最小。
4 HPC 算力编程模式参考体系结构
HPC 算力编程模式参考体系结构如图2 所示。
图2 HPC 算力编程模式参考体系结构Fig.2 HPC as a function reference architecture
参考体系结构自底向上分为四层:
物理层:物理层是由支撑HPC 算力的高性能计算资源和网络构成。高性能计算资源包括通用计算系统和国产异构计算系统。目前高性能计算资源之间通过互联网相连,“东数西算”高速专网的建成有望大大提升整体HPC 算力效率。
连接层:在物理网络之上建立虚拟叠加网络,通过智能路由在现有网络条件下优化数据传输,并提供SSL 数据加密传输等安全举措。
服务层:采用微服务架构,通过资源驱动、分布式消息总线等技术聚合跨地域、跨组织、不同体系结构的高性能计算资源,形成统一的资源信息存储;并通过授权管理、数据传输、智能调度、服务监控等技术实现计算任务和数据的智能分发和协同工作,提供统一的高性能计算服务。
表达层:通过REST 风格编程接口、接口网关服务面向应用提供网络服务接口,提供用户认证与授权、接口安全检测机制等保障网络服务接口的安全。基于应用编程接口提供计算函数库,支持应用业务编程与高性能计算环境交互完成HPC 计算任务和数据的管理。
5 原型系统应用与测试
本文依托国家高性能计算环境初步实现了原型系统,并应用于风暴潮实时预测工作。风暴潮是沿海近岸的一种巨大的海洋危害,风暴潮实时预报系统[31]能够对风暴潮进行快速准确的实时预报,可以在一定程度上降低风暴潮带来的经济损失和人员伤亡。其预报流程如图3。首先抓取特定区域的实时观测数据;然后以实时观测数据为驱动,计算区域内风场、浪场、水位高度等变化情况;将计算数据进行格式转化,并通过多种方式对实时预报数据进行可视化表达。
图3 风暴潮预测基本流程Fig.3 Storm surge forecasting workflow
其中,台风数据抓取和数据可视化由于联网需求运行于云计算平台,而数据生成和处理的计算过程可根据算力评估确定。
本文测试基于中国科学院先导专项“地球大数据科学工程”建设的专用计算基础设施[32]提供的云计算平台资源,以及国家高性能计算环境提供的HPC 算力资源。同时,该专用计算基础设施提供的高性能计算资源已集成于国家高性能计算环境,可通过共享存储与云计算平台共享应用数据。
由图4 可见,潮汐模式计算40 核并行最优;耦合模式计算160 核并行最优,因此采用HPC 算力;耦合文件生成、潮汐文件生成和计算结果处理时间因商业软件MATLAB 的需求在本测试中考虑使用HPC 算力。
图4 核心模式计算并行测试Fig.4 Kernel modules parallel testing
应用核心计算运行时间6,300 秒(1 小时45 分钟),各阶段运行时间如图5 所示。假设云主机具备HPC 相同的计算能力,按单节点40 核并行估算,预计计算在云主机中完成需要16,211 秒(4 小时30 分11 秒)。相比估算的云主机运行时间,混合算力可缩短计算时间约61%。
图5 风暴潮预测各阶段运行时间Fig.5 Storm surge forecasting testing
6 结论与展望
在国家“东数西算”战略背景下,论文提出了一种新型HPC 算力编程模式,旨在充分发挥HPC 算力优势,提高“东数西算”算力基础设施的可编程性。论文实现了原型系统,并初步应用于风暴潮实时预测工作。
未来工作将基于HPC 算力编程模式原型系统,进一步解决用户认证与授权、HPC 算力评估、计算任务编排等关键问题,并通过实际应用于科研业务流程开展优化工作。
利益冲突声明
所有作者声明不存在利益冲突关系。