一种针对分子动力仿真模型的并行化加速方法转让专利
申请号 : CN201711258343.8
文献号 : CN109871553B
文献日 : 2021-07-09
发明人 : 陈一峯 , 张明悦 , 王贝
申请人 : 北京大学
摘要 :
权利要求 :
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提供的编程接口定义分子动力学模型及状态转移函数。
说明书 :
一种针对分子动力仿真模型的并行化加速方法
技术领域
背景技术
仿真技术的基本方法在高分子空间形态研究、蛋白质结构分析、湍流模拟、气象云图分析等
领域均有很好的应用。但是,这种方法要求极大的计算量,普通计算机难以满足要求,通常
需要用大型机甚至超级计算机来进行运算。
模型演算出的函数。因此,解决这类问题,大多需要进行大量的迭代运算。现有技术对这种
迭代运算的并行化手段是,将状态向量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步,但是对于大型集群来说很难
实现低延迟、高带宽的网络通信。因此,制约这种迭代运算运行速度的主要因素是同步操作
带来的通信延迟。
computation,Communications of the ACM》,Volume 33Issue 8,Aug.1990)。BSP模型是将
全局的计算任务分成若干子任务,每个子任务分配到不同的处理器中,异步地进行计算,子
任务完成计算后进入等待状态,系统进行全局检查与全局数据更新,当所有子任务都完成
计算且全局数据更新后,每个子任务又继续进行下一步计算。因此,系统中执行较快的任务
会等待执行最慢的任务,产生不必要的等待延迟,同时每完成一次异步计算就要传输数据,
会产生大量的通信开销。
有考虑数据同步的问题,计算时间也较长。
发明内容
使得在并行化计算过程中,并行化计算速度从每一个时间步执行一次数据交换提升到平均
更多次执行一次数据交换,由此达到并行化加速的目的。
学模型并行化计算加速,使得模型运行速度在集群计算性能相同的前提下,自适应地找到
一个最大的时间步长进行一次数据交换,可从每一个时间步执行一次数据交换提升到平均
每71个时间步(对于不同系统,不同计算任务,数据交换的平均时间步是不一样的,本发明
可以自适应地找到一个保证计算精度前提下,最大的时间步长)进行一次数据交换,而系统
性能的提升和集群的PCI速度,以及模型数据量的大小有密切关系,但与现有传统的BSP加
速方式相比,能提升至少一倍的速度。
结果不发生改变,则该计算结果是正确的迭代结果,继续进行下一轮迭代,再进行n步计算;
如果计算结果发生改变,则该计算结果是错误的计算结果,回溯到上一步进行计算,直到计
算结果不发生改变,方可继续进行下一轮迭代。该方案具有明显的循环性,同步时计算结果
正确,则不回溯,如果错误,则需要退回重新开始计算。由于分子动力学模拟中,经常出现计
算局部性,即计算量通常集中在某小范围的空间中,远处的数据对此处的计算没有明显影
响,因此与传统BSP并行方案相比,本发明主要利用了这种计算局部性,并不会每次计算都
进行数据同步,而是在较长的时间跨度中做一次数据同步,从而减少了集群在计算过程中
因数据同步而产生的通信开销,降低了整个计算应用的运行时间。同时,每个时间跨度中,
有一个纠错回溯的机制,避免了因为数据独立运算而导致的计算失真。
均用IB网络挂载了存储设备;4.InfiniBand网络,MPI默认优先使用InfiniBand网络进行通
信。
Simulator,大规模原子分子并行模拟器)中提供的基本模型计算),基于集群系统进行加速
优化,采用运行在众核架构、以GPU为协处理器的集群上来解决分子动力学模型并行化计算
加速,使得模型运行速度在集群计算性能相同的前提下,自适应地找到一个最大的时间步
长进行一次数据交换,从而实现加速优化;具体可采用MPI((Message‑Passing‑Interface,
消息传递接口)进行节点间的计算并行化,采用CUDA(Compute Unified Device
Architecture,统一计算设备架构)在单机上利用GPU进行并行加速(通过将数据平均拆分
成多份,放到各处理器中独立处理一段时间步长,然后再进行同步操作,各处理器交换数
据,直到计算结果不发生改变,得到正确的计算结果;再继续进行下一轮迭代计算);包括如
下步骤:
示第i号处理器;
两块存储空间,一块存储待计算粒子的状态数据记为M1,一块存储全局N个粒子的数据,记
为M2;用Pi(M1)表示第i号处理器上待计算粒子的状态数据,集合mi表示在Pi(M1)中存在的
粒子,Pi(M2)表示第i号处理器上全体粒子的数据。
足终止条件时计算完成,反之继续计算;(t初值为0,如果t大于设定的终止时间,则计算完
成,反之继续计算。)处理器Pi选择粒子集合mi,从Pi(M2)中取出粒子状态数据,代入状态转
移函数,计算粒子集合mi在dt后的状态数据DATA。
根据DATA更新Pi(M1)和Pi(M2) ,step++,t=t+dt。
(M2) ,并等待其他P‑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,继
续进行异步计算操作。
‑10
[0,N‑1],都有|xi[t]‑xi[t+dt]|<δ,一般地,在分子动力学模拟中δ取10 )。对于可收敛的
模型,一般建议设定精度达到某个阈值时,停止运行。当不清楚收敛情况时,为了避免无意
义的数据处理,可设定到达某个时间步数时,停止运行。
化计算速度从每一个时间步执行一次数据交换提升到平均更多次执行一次数据交换。通过
本发明所提供的并行化加速方案,提高了计算准确性,加快了计算速度,减少了数据传输的
通信开销,提高了众核GPU集群系统对于分子动力学仿真模拟的整体计算性能。
附图说明
具体实施方式
Parallel Simulator,大规模原子分子并行模拟器)中提供的基本模型计算),基于集群系
统,采用MPI((Message‑Passing‑Interface,消息传递接口)进行节点间的计算并行化,采
用CUDA(Compute Unified Device Architecture,统一计算设备架构)在单机上利用GPU进
行并行加速,使得在并行化计算过程中,并行化计算速度从每一个时间步执行一次数据交
换提升到平均更多次执行一次数据交换,由此达到并行化加速的目的。
的100倍,四个分子存在初始速度。它们的运动状态参数包括位置坐标(x,y),速度(vx,vy),
用向量X来表示,四个分子的状态向量分别为X1、X2、X3、X4,将四个向量分别放到四个处理
器中,按照本发明方法进行仿真模拟。对于这样一种最基本的四分子系统,采用LAMMPS中提
供的基于刚球势的分子动力学模型,
函数f为 其中xi,j[t]
表示第i号粒子在t时刻第j维向量的值)。
编程接口,定义出各种分子动力学模型以及状态转移函数。samsara.h文件作为算法层,向
抽象层次提供的并行化算法,包括传统的BSP算法,异步算法,以及本发明采用的并行算法
等。mpi_compute.h文件作为中间层向抽象层次提供了不同进程间通信的接口,调用底层的
MPI;cuda_compute.h文件作为中间层向抽象层次提供了利用GPU加速的接口,调用底层的
CUDA;底层由MPI,CUDA组成。
认定义为数组类型,参数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数据)。
数据的误差已经小于10 ,故而可以停止迭代。
可能的。因此,本发明不应局限于实施例所公开的内容,本发明要求保护的范围以权利要求
书界定的范围为准。