基于并行构件技术的分子动力学模拟系统的设计与实现
2018-03-29彭云峰
摘要:本文基于传统的分子动力学模拟方法和高性能计算平台的资源情况,提出了用并行构件技术解决分子动力学模拟软件开发的方法,使用高级语言编写分子动力学模拟软件的并行构件,提高了模拟软件的开发效率和运行性能。
关键词:并行构件;并行计算;分子动力学模拟;性能优化
中图分类号:TP319 文献标识码:A 文章编号:1007-9416(2018)01-0185-02
1 分子动力学模拟简介
为了在原子级别对物质微观结构进行研究,往往需要使用计算机进行分子动力学模拟[1]。然而,传统的分子动力学模拟方法,往往涉及到大量的原子之间作用力的交互,而且模拟的步骤也十分复杂,这就给计算机进行的分子动力学模拟带来了较大的计算工作。但是,目前已有的分子动力学模拟软件[1]进行模拟的对象具有特定的针对性。面对这种情况,如何能在提高分子动力学模拟软件的可用性和求解的精度之间找到恰当的平衡,既能够使研究者能够简单方便的使用计算机软件进行分子动力学模拟,同时也能够针对不同的模拟体系和要研究的性质和现象,选用不同的计算机模拟方法,提高模拟的精确度,得到最准确的模拟结果,成为影响使用计算机进行分子动力学模拟技术发展的重要问题。
2 分子动力学模拟中应用构件技术的优势
本文作者针对使用计算机进行分子动力学模拟的软件系统一般都由多种计算模型,比如使用数据并行模型对要模拟的粒子进行分组,或使用任务并行模型对要模拟的空间进行划分,串行计算粒子受力情況和位移的情况两个模块,提出了新的多计算模型,多粒度的并行分子动力学模拟软件的软件体系结构。建立了分子动力学模拟软件的并行构件体系结构规范,支持使用高级语言编写分子动力学模拟软件的并行构件,方便用户根据不同的需要选用不同的并行构件进行简单的组装,实现自己所需要的分子动力学模拟软件,减轻分子动力学模拟软件编写人员的编程负担。在此基础上,针对异构的并行构件执行的硬件平台,可根据并行构件本身的计算模型和粒度,合理地部署不同的并行构件到不同的硬件资源上执行,进一步提高分子动力学模拟并行构件程序的运行性能。
3 计算模型分析与运行平台资源管理
和普通串行构件技术一样,并行构件技术最大的优势就是将一定的计算功能包含在一个模块当中[2],模块的使用者并不需了解这个功能模块的内部细节,而只通过构件对外提供的接口来连接不同的构件,实现自己所需要的软件功能。这种组合方式提高了并行构件的复用性,用户需要哪个计算功能,不需要自己使用编程语言编程实现,只要选用已经制作好的提供该功能的并行构件即可,提供了软件的生产率,减轻了软件编程人员的负担。同时由于同一功能可以有不同的具体实现,这些实现细节被包含在不同的并行构件内部,从外部来看,这些并行构件提供的是相同的接口,实现的是同一个功能,为了更好地利用这些并行构件,本文作者设计了并行构件的自描述功能,包括对并行构件使用的计算模型和计算粒度的描述,对实现同一功能所使用的算法的描述,以及并行构件所使用的编程语言等等,在这些自描述信息的指导下,用户可以更有针对性地选择实现自己所需要的功能,同时和其他并行构件有着较简单高效的连接机制,同时在特定的硬件平台上有更高性能的并行构件实现。同时,由于不同的并行构件可能采用了不同的计算模型和计算粒度,它们之间的连接情况往往比较复杂,比如一个采用了三个进程进行计算的并行构件要和一个使用两个进程的并行构件进行连接时,必须要使用特定的连接机制,比如连接子等对这两个并行构件之间的数据交互进行转换,在有些资料里这种做法被称为“M×N”转换。本文作者对分子动力学模拟软件的并行构件所使用的连接子进行了研究,对于不同的分子动力学模拟软件的并行构件,应该使用什么样的连接机制才能够在满足用户的功能需求的基础上,进一步提高分子动力学模拟并行构件程序的执行性能。由于分子动力学模拟软件本身的结构特点,考虑以下一些因素,需要模拟的粒子本身的物理特点,所选用的力场特点,边界范围和初始条件。而由于并行构件内部的具体实现特点,需要考虑以下因素,并行构件内部所使用的计算模型,计算粒度和具体的实现算法等。为此,本文作者研究针对分子动力学模拟的科学计算系统的实际需求,将计算模型,并行构件模型和分子动力学模拟软件的自身特点相结合,实现了不同的分子动力学模拟软件的并行构件之间的交互,尤其是不同的编程语言,不同的计算模型或不同的计算粒度的并行构件之间的交互机制,并在此基础上,实现了不同的分子动力学模拟并行构件的生成,连接和调用机制,实现了一个分子动力学模拟程序的并行构件运行框架,进一步完善并行构件之间的交互机制。本文作者针对常用分子动力学模拟程序的功能模块由多种计算模型和计算粒度组成的特点,提出适用于分子动力学模拟的并行构件体系结构,建立了适合于分子动力学模拟的并行构件规范,设计实现了适合分子动力学模拟的并行构件运行框架,提出对这类并行构件的描述语言,提供对使用高级编程语言编写这类并行构件的支持。在此基础上,本文作者考察了提高并行分子动力学模拟软件开发效率的新方法,包括:并行构件接口的描述和表达,并行构件自描述信息的的表示,计算模型和部署平台硬件资源的关系[3],并行构件的管理和运行,构件自描述信息和硬件平台计算资源自适应匹配,并行构件之间的通信,并行构件的运行框架,分子动力学模拟并行构件程序的建模,性能估算,并行构件程序的测试等。在此基础上,开发了能够支持分子动力学模拟并行构件程序的运行框架和建模工具,结合分子动力学模拟软件的并行构件化过程,研究面向偏微分方程求解的并行构件技术,提高了分子动力学模拟软件系统的开发效率。
4 结语
提高开发大规模并行软件的开发效率能给石油,航天等众多关系国计民生的重要科研领域提供巨大的帮助。同时由于并行构件具有较高的复用性,能够提高这些并行软件的可靠性,提供较好的可扩展性支持,同时也便于对这些软件进行维护和更新。从软件开发的实际情况来看,一方面,大规模并行计算软件需要对多物理量进行耦合,涉及到数量巨大的模块之间的交互,导致这些软件的开发比较困难,往往一个应用程序就需要数年的时间。本文提出的方法,加速了分子动力学模拟软件的开发效率,提高了这些软件的运行性能,为相关领域的科学研究提供了支持。
参考文献
[1]江蓉君,罗健辉,白瑞兵,等.多元体系油水界面上常见表面活性剂行为的分动力学模拟[J].高等学校化学学报,2017,10:1804-1812.
[2]彭云峰,魏胜利.扩展OpenMP支持CCA并行构件及其性能优化[J].小型微型计算机系统,2014,35:2034-2038.
[3]潘佳艺,王芳,杨静怡,等.异构Hadoop集群下的负载自适应反馈调度策略[J].计算机工程与科学,2017,3:413-423.