APP下载

基于Singularity 的分子动力学软件Quantum Espresso 容器部署与测试

2022-01-07文敏华胡广超王一超

软件导刊 2021年12期
关键词:测试程序基准容器

文敏华,胡广超,王一超

(上海交通大学 网络信息中心,上海 200240)

0 引言

高性能计算(High Performance Computing,HPC)与理论研究、实验科学并称为人类科学研究的三大范式[1],在生物科学、材料模拟、天气预报、工程计算等众多领域有广泛应用。软件部署和环境维护是HPC 集群运维的重点和难点。HPC 软件通常涉及复杂依赖环境、多种依赖库、多版本部署,而一般用户往往需要使用特定版本软件,极易与其他版本产生冲突;另一方面,新型HPC 芯片层出不穷,计算架构的多样性使软件部署方式更加复杂。如果采用传统物理机直接编译的部署方法,很难兼顾其他软件的版本和依赖环境,软件版本控制极大增加了部署和使用难度。

容器是一种轻型虚拟化技术,以轻量级、隔离性和启动速度快等优势著称,近年来逐渐被HPC 领域关注和应用。容器技术为软件安装提供了一种便利的打包机制[2],可对应用及其依赖环境进行打包,并封装为单个对象,既可以避免不同版本软件产生冲突,又提升了不同系统间的可移植性。

2013 年,世界首个开源容器引擎Docker[3]诞生,其基于Linux 核心中的资源分离机制和cgroup 等技术实现了灵活、便捷、轻量级的容器方案。之后容器技术快速发展,Linux Container[4]等典型的应用实例,以及Kubernetes[5]、Mesos[6]等多容器编排框架相继诞生,并在HPC 领域有所应用[7-10]。然而上述容器技术存在一些问题,如多节点并行运行模式下Linux Container 存在性能损耗[11];Docker 在多用户共享场景下的权限和安全性存在问题[12],且对多处理器及多节点并行计算模式MPI 的支持机制复杂[13],使其在HPC 中的应用受到限制。针对这些问题,一些面向HPC 计算的容器技术先后被开发出来[14-16],其中Singularity 是其中典型代表,由于在性能、安全性、并行效率等方面表现优异,Singularity 已在HPC 领域广泛应用[15],本文便是基于Singularity容器技术进行软件部署和测试。

本文选取开源分子动力学软件Quantum Espresso(QE)[17-18]在不同计算平台进行部署和性能测试,探索容器使用对HPC 应用部署和性能的影响。在算法上,分子动力学模拟对访存和计算均具有一定要求,是HPC 的典型计算模式。在软件选择上,QE 是最广泛使用的开源分子动力学软件之一,其计算性能和可扩展性均有充分研究与优化依据[19],在众多分子动力学软件中具有代表性。

除了传统的x86 计算平台,本文也将面向国产ARM 计算平台进行测试,以探索容器技术在不同架构计算平台的适用性。分别通过容器技术安装基准测试程序和QE,以不同规模的算例进行性能测试,并与物理机运行性能进行比较,以探索容器技术对以QE 为代表的分子动力学软件可移植性和性能的影响。

1 Singularity 简介

Singularity 为超轻量级容器化方案,用户可在隔离空间内部署所需应用,有效解决物理机上因依赖插件过多而导致的版本冲突,同时给应用版本的升级也提供了极大便利。此外,容器化应用在不同计算平台上可快速迁移,诸多优势使得Singularity 在HPC 领域应用空间广阔。

1.1 Singularity 架构

Singularity 架构如图1 所示,容器中的应用运行在一个相对隔离的空间内。从操作系统角度来看,容器和主机上运行的进程比较相似,使得容器易于运行与管理。相较于传统虚拟机技术,容器共享物理机上的Linux 内核与底层硬件资源使得容器体量变小,一定程度上会降低虚拟化开销。容器对底层资源的访问无需通过root 权限,普通用户即可共享主机上的服务,为容器的可迁移性奠定了良好基础,使得任何用户均可在裸机上运行容器中的应用。

Fig.1 Architecture of Singularity图1 Singularity 架构

1.2 Singularity 特征

Singularity 是专门面向HPC 开发的容器技术,主要特征为:①计算可移植。容器内部的软件栈从数据到依赖库均可在不同操作系统和计算平台上迁移,镜像将应用打包成一个可复制与共享的文件,该文件适用于任何标准Unix文件系统;②用户自由度高。非特权用户也可操作容器并根据需求实施应用部署、安装依赖和版本升级等操作,无需担心与其他应用的依赖版本冲突;③不完全隔离。不同于Docker 和Linux Container 等容器技术,Singularity 没有实现网络地址空间的隔离,网络虚拟化开销较低;④兼容HPC 计算环境。Singularity 可有效整合并行文件系统、GPU、MPI 和快速网络等传统HPC 软硬件支持;⑤安全性高。虽然容器内外用户目录保持一致,但容器不能对主机上的系统配置实施任何其他操作,普通用户无法更改镜像文件内容,对其仅有只读权限。

2 测试应用

主要通过两个基准测试程序和QE 的3 个算例进行部署与性能测试。

2.1 基准测试程序

基准测试程序主要用于对分项性能参数进行测试,分别采用STREAM[20]和HPL[21]两个基准测试程序对访存和计算能力进行测试。STREAM 是一个用于测试可持续访存带宽的综合基准测试程序,由4 种不同算术操作组成,分别为Copy、Scale、Add 和Triad。STREAM 最多使用3 个数组和1 个标量进行基本算术操作,通过控制数组数据大小可以实现不同数据量的内存带宽测试。HPL 是目前使用最广泛的浮点性能测试基准程序,长期用于世界前500 强超级计算机排行榜排名。HPL 通过采用高斯消元法求解一元N 次稠密线性代数方程组对HPC 集群进行测试,评价其浮点计算能力。

2.2 QE

开源分子动力学软件QE 是在密度泛函理论、赝势和平面波的基础上,使用电子结构技术对材料进行量子模拟的软件包,从其诞生至今,一直在全球领先的材料建模团队中广泛使用。QE 弹性扩展性能良好,在不同大型并行计算机的各种硬件架构上均能保持优越性能,为其在HPC 平台上的容器部署奠定了良好基础。

3 QE 在Singularity中的部署

3.1 部署环境

分别在x86 平台和国产ARM 平台上进行部署与性能测试,配置信息如表1 所示。在软件层面,两个平台除操作系统外,其余均采用同版本软件。

Table 1 Testing platform environment configuration表1 测试平台环境配置

3.2 QE 镜像部署

与在裸机上通过源码编译不同,QE 在容器中的部署需按照一定规则生成定义文件,然后通过Singularity 的build指令生成相应镜像。定义文件的制作示意图见图2,其本质安装逻辑与裸机安装一致,可以对软件和依赖库的版本实现精细控制。定义文件包含%files、%environment 和%post 等关键属性,分别用于实现容器内外文件传输、环境变量配置与使用命令行编译软件等操作。

Fig.2 Schematic diagram of QE image definition file图2 QE 镜像制作定义文件示意图

制作定义文件后,通过命令行“singularity build qe.sif qe.def”生成镜像,此处qe.sif 为生成的镜像,qe.def 为制作镜像的定义文件。镜像生成后,可以通过Singularity 的exec指令调用镜像中封装的各类可执行文件,从而运行容器内应用。

本文测试平台包括x86 平台和国产ARM 平台,两种平台部署逻辑一致,仅需根据实际配置对定义文件内环境变量、源码安装命令进行设置即可,这表示x86 平台的配置经验可以比较方便地推广到国产ARM 计算平台上。

4 实验结果与分析

对于基准测试程序,本文主要针对单节点进行测试,目的是获得容器下单项特征的性能数据;对于QE,本文分别在x86 平台和ARM 平台上使用不同核心数量进行测试。两种架构上使用的数据为官方提供的AUSURF112、CuO 和PSIWAT,链接为https://github.com/QEF/benchmarks。

4.1 基准测试程序性能

图3 和图4 分别为STREAM 和HPL 基准测试程序在x86 平台和国产ARM 平台上的性能比较,此处调用单节点所有核心,以测试整个节点的性能。对于x86 平台,容器对表征内存带宽的STREAM 带来的损失小于1%,对表征浮点计算性能的HPL 带来的损失亦小于1%。对于国产ARM平台,容器对内存带宽带来的损失小于3%,对浮点计算性能带来的损失小于1%。两种计算平台的性能损失均不超过3%。由此可以推测,不论是对于计算受限还是访存受限的应用,容器的引入都不会带来较大的性能损失。

Fig.3 Performance comparison of x86 and ARM platform on STREAM benchmark图3 x86 平台与ARM 平台STREAM 基准测试性能比较

Fig.4 Performance comparison of x86 and ARM platform on HPL benchmark图4 x86 平台与ARM 平台HPL 基准测试性能比较

4.2 QE 在容器部署的正确性验证

Singularity 容器部署作为新的部署方法,需优先考虑其正确性,为此比较物理机部署和容器部署的计算结果差异。对于QE 模拟,总能(Total Energy)是其关键指标,可用于结果正确性验证。通过比较基于这两种部署方式的总能随运行时迭代步数的变化情况判断二者结果是否一致。图5 展示了一个典型QE 算例(CuO)在两种计算平台上的运行结果,可以看出,不论是x86 还是ARM 平台,物理机部署方式和Singularity 容器部署方式的总能都能吻合得很好,说明两种部署方式模拟结果一致,证明了Singularity 容器部署方式的正确性。

Fig.5 Correctness verification of QE installation based on Singularity(up:x86,down:ARM)图5 Singularity 安装QE 正确性验证(上:x86 平台,下:ARM 平台)

4.3 QE 在x86平台上的性能

图6 为x86 平台上物理机与Singularity 运行AUSURF112、CuO 和PSIWAT 3 个算例的计算时间。可以看出,从单节点内的20 核心和40 核心并行,到跨节点的80 核心和120 核心并行,基于Singularity 容器技术安装的QE 均能取得接近物理机裸机部署的性能,性能损失最大不超过3%,最小则小于1%,可见Singularity 对跨节点的MPI 并行方式确实有较好的支持效果。

4.4 QE在ARM平台上的性能

图7 为国产ARM 平台上物理机和Singularity 运行AUSURF112、CuO 和PSIWAT 3 种算例的计算时间。由不同并行核数下性能表现可以看出,QE 在两种环境下可以保持相近的性能。在3 种算例上使容器运行应用,结果表明不同并行度下容器部署性能损耗值均小于2%,可见对于国产ARM 平台,容器的引入也基本上不会带来性能损失。

Fig.6 Running time of examples of physical machine and Singularity on x86 platform图6 x86 平台物理机与Singularity 算例运行时间

Fig.7 Running time of examples of physical machine and Singularity on ARM platform图7 ARM 平台物理机与Singularity 算例运行时间

5 结语

本文阐述了基于Singularity 容器技术的QE 部署流程,并在x86 和国产ARM 两种平台上进行了部署实践和性能测试。利用容器技术灵活、便捷、轻量级等特点可有效应对应用软件及其依赖库版本不同带来的挑战,方便HPC 集群管理人员进行应用软件部署与管理。在两种计算平台的不同并行规模上,相较于物理机裸机部署方法,基于容器技术的部署方法性能损失小于3%,几乎可以忽略不计。不仅如此,QE 在两种计算架构上容器中的性能均可随节点数增加而良好扩展,即使算例的计算规模不断扩大也能够取得物理机般的计算效果,说明Singularity 容器高度兼容多核与MPI 多节点并行的计算方式,对高速网络的支持度较为友好,在x86 和国产ARM 两种主流HPC 集群架构上均能保持稳定的计算性能。

综上所述,对于分子动力学软件QE 以及不同计算平台,Singularity 容器技术可以在保障性能的情况下优化软件部署与管理。后续将继续对其他分子动力学软件进行部署和性能测试,验证容器部署模式对分子动力学类计算模式的可用性。

猜你喜欢

测试程序基准容器
Different Containers不同的容器
难以置信的事情
基于Castle型机械手的三温量产测试平台实现
手机APP交互界面人因适合性测试程序的设计与实现
中心主导制订的《VHF/UHF频率范围内测向系统测向灵敏度的测试程序》等两项国际标准在ITU官网正式发布
明基准讲方法保看齐
电气自动化控制设备可靠性测试探讨
滑落还是攀爬
巧用基准变换实现装配检测
Imagination率先展示全新Futuremark 3DMark OpenGL ES3.0基准测试