一种针对分子动力仿真模型的并行化加速方法转让专利

申请号 : CN201711258343.8

文献号 : CN109871553B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈一峯张明悦王贝

申请人 : 北京大学

摘要 :

本发明公布了一种针对分子动力仿真模型的并行化加速方法,属于并行计算技术领域,针对具有时间依赖性的分子动力系统数据计算任务,采用运行在众核架构、以GPU为协处理器的集群进行分子动力学模型的并行化计算加速,使得在集群计算性能相同时,能够自适应地找到一个最大的时间步长进行一次数据交换,从而实现模型运行速度的加速优化,使得在并行化计算过程中,并行化计算速度从每一个时间步执行一次数据交换提升到平均更多次执行一次数据交换。采用本发明技术方案,能够提高计算准确性,加快计算速度,减少数据传输的通信开销,提高众核GPU集群系统对于分子动力学仿真模拟的整体计算性能。

权利要求 :

1.一种针对分子动力仿真模型的并行化加速方法,针对具有时间依赖性的分子动力系统数据计算任务,采用运行在众核架构、以GPU为协处理器的集群进行分子动力学模型的并行化计算加速,使得在集群计算性能相同时,能够自适应地找到一个最大的时间步长进行一次数据交换,从而实现模型运行速度的加速优化;通过采用消息传递接口MPI进行节点间的计算并行化,采用统一计算设备架构CUDA,在单机上利用GPU进行并行加速;

在单机上利用GPU进行并行加速,具体通过将数据平均拆分成多份,放到各处理器中独立处理一段时间步长,然后再进行同步操作,各处理器交换数据,直到计算结果不发生改变,得到正确的计算结果;再继续进行下一轮迭代计算;包括如下步骤:A.对计算任务进行拆分,执行操作A1~A2:A1.记所有待计算的粒子数为N,存储每个粒子的状态信息数据为X,粒子标号从0到N‑

1,xi表示i号粒子的状态数据,集群中可用处理器核数为P,处理器标号从0到P‑1,Pi表示第i号处理器;

A2.将N个粒子平均分为P份,处理器Pi计算第N/P*i号粒子到N/P*(i+1)‑1号粒子;当i=P‑1时,处理器Pi计算第N/P*i号粒子到N‑1号粒子;在每个处理器中设置两块存储空间,一块用于存储待计算粒子的状态数据,记为M1;另一块用于存储全局N个粒子的数据,记为M2;

用Pi(M1)表示第i号处理器上待计算粒子的状态数据,集合mi表示在Pi(M1)中存在的粒子,Pi(M2)表示第i号处理器上全体粒子的数据;

B.执行异步计算操作,包括B1~B3:B1.设状态转移函数为式1:

xi[t+dt]=f(x0[t],x1[t],x2[t]…xN‑1[t])    (式1)其中,xi[t]表示第i号粒子在t时间步的状态信息,dt为时间跨度,默认为1个单位的时间步;t初值为0;

处理器Pi选择粒子集合mi,从Pi(M2)中取出粒子状态数据,代入状态转移函数,计算粒子集合mi在dt后的状态数据DATA;

设定终止条件,当满足终止条件时计算完成,反之继续计算;

B2.设置跨步计数器step,step=0;设置一块与Pi(M2)相等大小的新空间,记为Pi(M2step step

) ,根据状态数据DATA更新Pi(M1)和Pi(M2) ;更新step和t:step++,t=t+dt;

B3.设置step阈值为S,当step大于S时,执行步骤C进行数据同步;否则跳回步骤B1;

C.执行数据同步操作:

0 1 2

C1.处理器Pi以广播形式向其他处理器传输数据Pi(M2) ,Pi(M2) ,Pi(M2) ,…,Pi(M2S+1

) ;并等待其他P‑1个处理器传来数据;

C2.处理器Pi将本地S+2组数据和其他处理器传来的数据一一进行比较,当数据全部相

0 1 2 S S+1

同时,设置S=S+1,释放Pi(M2) ,Pi(M2) ,Pi(M2) …Pi(M2) 数据,更新Pi(M2)为Pi(M2) 并S’ S’

跳回步骤B,继续进行异步计算操作;反之,找到最早不同的数据,设为Pi(M2) 和Pj(M2) ,S’ S’+1 S+1 S’‑1

释放Pi(M2) ,Pi(M2) ,…,Pi(M2) 数据,设置Pi(M2)为Pi(M2) ,设置S=S‑1,跳回步骤B,继续进行异步计算操作;

通过上述步骤,实现针对分子动力仿真模型的并行化加速。

2.如权利要求1所述并行化加速方法,其特征是,步骤B1中,终止条件为设置时间步阈值或计算结果精度阈值;当时间步达到设置的时间步阈值、或计算结果精度大于或等于设置的计算结果精度阈值时,计算完成。

3.如权利要求1所述并行化加速方法,其特征是,将所述并行化加速方法应用于高分子空间形态研究、蛋白质结构分析、湍流模拟、气象云图分析,进行并行化加速计算。

4.如权利要求1所述并行化加速方法,其特征是,实现所述并行化加速方法包括设计抽象层、算法层、中间层、底层;算法层向抽象层提供并行化算法;中间层实现向抽象层提供了不同进程间通信的接口,调用底层的消息传递接口MPI,或向抽象层提供了利用GPU加速的接口,调用底层的CUDA;底层由MPI、CUDA组成。

5.如权利要求1所述并行化加速方法,其特征是,具体利用大规模原子分子并行模拟器LAMMPS提供的编程接口定义分子动力学模型及状态转移函数。

说明书 :

一种针对分子动力仿真模型的并行化加速方法

技术领域

[0001] 本发明属于并行计算技术领域,涉及程序并行化加速方法,尤其涉及一种针对分子动力学仿真模型进行并行加速的方法。

背景技术

[0002] 分子动力学仿真是科学计算领域中非常重要的一部分,依靠牛顿力学,对分子运动状态进行模拟,经过大量的数值运算,得到一个系统整体的宏观特性。目前,分子动力学
仿真技术的基本方法在高分子空间形态研究、蛋白质结构分析、湍流模拟、气象云图分析等
领域均有很好的应用。但是,这种方法要求极大的计算量,普通计算机难以满足要求,通常
需要用大型机甚至超级计算机来进行运算。
[0003] 分子动力学仿真是一种典型的时间依赖性问题。这种具有时间依赖性的科学计算问题,需要满足如下条件:X[t+dt]=f(X[t]),其中,X[t]是t时刻下的状态向量,f是由物理
模型演算出的函数。因此,解决这类问题,大多需要进行大量的迭代运算。现有技术对这种
迭代运算的并行化手段是,将状态向量X拆分成较小的部分状态向量Xp,将Xp的计算任务分
配到p号处理器上,按照Xp[t+dt]=fp(X[t])进行数据处理。但是,这种并行化方法在数据更
新时,需要同其他处理器进行同步操作,交换数据,再次计算。目前所有的众核或者带有GPU
(Graphics Processing Unit,图形处理器)加速的集群系统,通过PCI(Peripheral 
Component Interconnect,外部设备互连总线)进行数据交换的速度非常慢,在实际计算过
程中,这种同步操作产生的通信开销约占整个执行时间的20%,大多数集群系统运算速度
仅为每秒运行100~600个时间步。这样的速度对于分子动力学的仿真模拟是难以忍受的。
4 5
同时,很多为科学计算特制的ASIC系统每秒可运行10~10步,但是对于大型集群来说很难
实现低延迟、高带宽的网络通信。因此,制约这种迭代运算运行速度的主要因素是同步操作
带来的通信延迟。
[0004] 在并行计算方面,目前较多采用BSP并行加速方法。并行化方法BSP是1990年英国科学家Leslie Valiant提出的并行化方法(《A bridging model for  parallel 
computation,Communications of the ACM》,Volume 33Issue 8,Aug.1990)。BSP模型是将
全局的计算任务分成若干子任务,每个子任务分配到不同的处理器中,异步地进行计算,子
任务完成计算后进入等待状态,系统进行全局检查与全局数据更新,当所有子任务都完成
计算且全局数据更新后,每个子任务又继续进行下一步计算。因此,系统中执行较快的任务
会等待执行最慢的任务,产生不必要的等待延迟,同时每完成一次异步计算就要传输数据,
会产生大量的通信开销。
[0005] 专利申请(申请号201610311112.8)记载了结构材料辐照损伤的多GPU分子动力学模拟方法,是一套多GPU分子动力学模拟方法,主要解决多GPU计算问题,但是,该方法并没
有考虑数据同步的问题,计算时间也较长。

发明内容

[0006] 为了克服上述现有技术的不足,本发明提供一种针对分子动力仿真模型的并行化加速方法,将分子动力仿真模型运算并行化运行在众核架构,以GPU为协处理器的集群上,
使得在并行化计算过程中,并行化计算速度从每一个时间步执行一次数据交换提升到平均
更多次执行一次数据交换,由此达到并行化加速的目的。
[0007] 针对目前分子动力学中大量存在的迭代运算,已有处理框架无法很好地满足仿真模拟需求的问题,本发明采用运行在众核架构、以GPU为协处理器的集群上来解决分子动力
学模型并行化计算加速,使得模型运行速度在集群计算性能相同的前提下,自适应地找到
一个最大的时间步长进行一次数据交换,可从每一个时间步执行一次数据交换提升到平均
每71个时间步(对于不同系统,不同计算任务,数据交换的平均时间步是不一样的,本发明
可以自适应地找到一个保证计算精度前提下,最大的时间步长)进行一次数据交换,而系统
性能的提升和集群的PCI速度,以及模型数据量的大小有密切关系,但与现有传统的BSP加
速方式相比,能提升至少一倍的速度。
[0008] 本发明的原理是:将数据平均拆分成多分份,放到各处理器中独立处理多个时间步n(可根据实际情况,调整这一时间步)。然后进行同步操作,各处理器交换数据,如果计算
结果不发生改变,则该计算结果是正确的迭代结果,继续进行下一轮迭代,再进行n步计算;
如果计算结果发生改变,则该计算结果是错误的计算结果,回溯到上一步进行计算,直到计
算结果不发生改变,方可继续进行下一轮迭代。该方案具有明显的循环性,同步时计算结果
正确,则不回溯,如果错误,则需要退回重新开始计算。由于分子动力学模拟中,经常出现计
算局部性,即计算量通常集中在某小范围的空间中,远处的数据对此处的计算没有明显影
响,因此与传统BSP并行方案相比,本发明主要利用了这种计算局部性,并不会每次计算都
进行数据同步,而是在较长的时间跨度中做一次数据同步,从而减少了集群在计算过程中
因数据同步而产生的通信开销,降低了整个计算应用的运行时间。同时,每个时间跨度中,
有一个纠错回溯的机制,避免了因为数据独立运算而导致的计算失真。
[0009] 本发明基于集群系统进行优化,硬件参数如下:1.交换机带宽100G,部分节点56G;2.服务器间老机器(A节点)40G,新机器100G;3.服务器间有千兆网络和IB网络,每台服务器
均用IB网络挂载了存储设备;4.InfiniBand网络,MPI默认优先使用InfiniBand网络进行通
信。
[0010] 本发明提供的技术方案是:
[0011] 一种针对分子动力仿真模型的并行化加速方法,针对具有时间依赖性的分子动力系统数据计算任务(例如LAMMPS(Large‑scale Atomic/Molecular Massively Parallel 
Simulator,大规模原子分子并行模拟器)中提供的基本模型计算),基于集群系统进行加速
优化,采用运行在众核架构、以GPU为协处理器的集群上来解决分子动力学模型并行化计算
加速,使得模型运行速度在集群计算性能相同的前提下,自适应地找到一个最大的时间步
长进行一次数据交换,从而实现加速优化;具体可采用MPI((Message‑Passing‑Interface,
消息传递接口)进行节点间的计算并行化,采用CUDA(Compute Unified Device 
Architecture,统一计算设备架构)在单机上利用GPU进行并行加速(通过将数据平均拆分
成多份,放到各处理器中独立处理一段时间步长,然后再进行同步操作,各处理器交换数
据,直到计算结果不发生改变,得到正确的计算结果;再继续进行下一轮迭代计算);包括如
下步骤:
[0012] A.对计算任务进行拆分,执行如下操作:
[0013] A1.记所有待计算的粒子数为N,存储每个粒子的状态信息数据为X,粒子标号从0到N‑1,xi表示i号粒子的状态数据,集群中可用处理器核数为P,处理器标号从0到P‑1,Pi表
示第i号处理器;
[0014] A2.将N个粒子平均分为P份,处理器Pi计算第(N/P*i)号粒子到(N/P*(i+1)‑1)号粒子,当i=P‑1时,处理器Pi计算第(N/P*i)号粒子到(N‑1)号粒子。为在每个处理器中开辟
两块存储空间,一块存储待计算粒子的状态数据记为M1,一块存储全局N个粒子的数据,记
为M2;用Pi(M1)表示第i号处理器上待计算粒子的状态数据,集合mi表示在Pi(M1)中存在的
粒子,Pi(M2)表示第i号处理器上全体粒子的数据。
[0015] B.执行异步计算操作:
[0016] B1.xi[t+dt]=f(x0[t],x1[t],x2[t]…xN‑1[t])为状态转移函数,xi[t]表示第i号粒子在t时间步的状态信息,dt为时间跨度,默认为1个单位的时间步。设定终止条件,当满
足终止条件时计算完成,反之继续计算;(t初值为0,如果t大于设定的终止时间,则计算完
成,反之继续计算。)处理器Pi选择粒子集合mi,从Pi(M2)中取出粒子状态数据,代入状态转
移函数,计算粒子集合mi在dt后的状态数据DATA。
[0017] B2.跨步计数器step,step=0;开辟一块与Pi(M2)等大小的新空间记为Pi(M2)step,step
根据DATA更新Pi(M1)和Pi(M2) ,step++,t=t+dt。
[0018] B3.如果step大于某个值S(根据经验,自行设定,一般默认为初始状态时S取10),进行C数据同步操作;反之跳回B1。
[0019] C.执行数据同步操作:
[0020] C1.处理器Pi以广播形式,向其他处理器传输数据Pi(M2)0,Pi(M2)1,Pi(M2)2…PiS+1
(M2) ,并等待其他P‑1个处理器传来数据;
[0021] C2.处理器Pi一一比较本地S+2组数据和其他处理器传来的数据,即比较Pi(M2)0是0 1 1
否等于其他处理器传来的Pj(M2) ,Pi(M2)是否等于其他处理器传来的Pj(M2)以此类推。如
0 1 2 S S+1
果全部相同,S=S+1,释放Pi(M2) ,Pi(M2) ,Pi(M2) …Pi(M2) 数据,更新Pi(M2)为Pi(M2)
S’
并跳回B,继续进行异步计算操作。反之,找到最早第一次不同的数据,假设为Pi(M2) 和Pj
S’ S’ S’+1 S+1 S’‑1
(M2) ,则释放Pi(M2) ,Pi(M2) …Pi(M2) 数据,将Pi(M2)为Pi(M2) ,S=S‑1,跳回B,继
续进行异步计算操作。
[0022] 在具体实施中,作为一种优选方案,步骤B1的终止条件可以为将时间步达到某个值(例如t>1000),或者计算结果精度大于或等于某个阈值(取一个可接受的δ,对于任意i∈
‑10
[0,N‑1],都有|xi[t]‑xi[t+dt]|<δ,一般地,在分子动力学模拟中δ取10 )。对于可收敛的
模型,一般建议设定精度达到某个阈值时,停止运行。当不清楚收敛情况时,为了避免无意
义的数据处理,可设定到达某个时间步数时,停止运行。
[0023] 与现有技术相比,本发明的有益效果是:
[0024] 本发明提供一种针对分子动力仿真模型的并行化加速方法,将分子动力仿真模型运算并行化运行在众核架构,以GPU为协处理器的集群上,使得在并行化计算过程中,并行
化计算速度从每一个时间步执行一次数据交换提升到平均更多次执行一次数据交换。通过
本发明所提供的并行化加速方案,提高了计算准确性,加快了计算速度,减少了数据传输的
通信开销,提高了众核GPU集群系统对于分子动力学仿真模拟的整体计算性能。

附图说明

[0025] 图1是单个处理器的并行化计算的流程框图。
[0026] 图2是本发明方法的整体流程框图。
[0027] 图3是四分子二维运动轨迹。

具体实施方式

[0028] 下面结合附图,通过实施例进一步描述本发明,但不以任何方式限制本发明的范围。
[0029] 本发明提供一种针对分子动力仿真模型的并行化加速方法,针对具有时间依赖性的分子动力系统数据计算任务(例如LAMMPS(Large‑scale Atomic/Molecular Massively 
Parallel Simulator,大规模原子分子并行模拟器)中提供的基本模型计算),基于集群系
统,采用MPI((Message‑Passing‑Interface,消息传递接口)进行节点间的计算并行化,采
用CUDA(Compute Unified Device Architecture,统一计算设备架构)在单机上利用GPU进
行并行加速,使得在并行化计算过程中,并行化计算速度从每一个时间步执行一次数据交
换提升到平均更多次执行一次数据交换,由此达到并行化加速的目的。
[0030] 多体运动分析是分子动力学中一种十分常见的问题,假定这样一个简单的系统,一共四个分子,在二维平面中运动,其中,三个分子质量相等,另外一个分子的质量是它们
的100倍,四个分子存在初始速度。它们的运动状态参数包括位置坐标(x,y),速度(vx,vy),
用向量X来表示,四个分子的状态向量分别为X1、X2、X3、X4,将四个向量分别放到四个处理
器中,按照本发明方法进行仿真模拟。对于这样一种最基本的四分子系统,采用LAMMPS中提
供的基于刚球势的分子动力学模型,
[0031] 对于计算数据更新规则,只考虑分子间的引力,根据万有引力定律和牛顿运动学定律可以得到一个函数f(LAMMPS可直接生成,例如最基本的粒子引力模型生成的状态转移
函数f为 其中xi,j[t]
表示第i号粒子在t时刻第j维向量的值)。
[0032] 本发明在软件系统上,设计出抽象层、算法层、中间层、硬件底层,用model.h、samsara.h、mpi_compute.h、cuda_compute.h等文件实现。model.h主要利用LAMMPS提供的
编程接口,定义出各种分子动力学模型以及状态转移函数。samsara.h文件作为算法层,向
抽象层次提供的并行化算法,包括传统的BSP算法,异步算法,以及本发明采用的并行算法
等。mpi_compute.h文件作为中间层向抽象层次提供了不同进程间通信的接口,调用底层的
MPI;cuda_compute.h文件作为中间层向抽象层次提供了利用GPU加速的接口,调用底层的
CUDA;底层由MPI,CUDA组成。
[0033] 设置t0为0,t1为1000,dt为1,开始迭代计算。sp(Molecule*data,long n,int time)是提供给开发人员的接口,Molecule为自定义的分子的数据结构,可以自行修改,默
认定义为数组类型,参数Molecule*data表示数据存储地址,参数long n表示数据规模(为
n,即是有2的n次方个数据),参数int time表示设定的时间步长。对于该实例,调用create_
model(int*type)参数为0,表示基于刚球势的分子动力学模型,调用model_time(int*
start,int*end),设定模型运行周期,此例两参数分别为0,1000,调用sp函数参数分别为分
子的数据数组首地址,2,100。最后调用model_input(Molecule*result,long n)输出数据,
参数为数据存储的首地址,数据大小(若为n,即是有2的n次方个Molecule数据)。
[0034] 图3为迭代轮数分别为1、2、3次的分子运动轨迹。进行四轮迭代之后,将数据析出,‑15
数据的误差已经小于10 ,故而可以停止迭代。
[0035] 需要注意的是,公布实施例的目的在于帮助进一步理解本发明,但是本领域的技术人员可以理解:在不脱离本发明及所附权利要求的精神和范围内,各种替换和修改都是
可能的。因此,本发明不应局限于实施例所公开的内容,本发明要求保护的范围以权利要求
书界定的范围为准。