CN117690502B - 一种分子动力学模拟系统及方法 - Google Patents

一种分子动力学模拟系统及方法 Download PDF

Info

Publication number
CN117690502B
CN117690502B CN202410154209.7A CN202410154209A CN117690502B CN 117690502 B CN117690502 B CN 117690502B CN 202410154209 A CN202410154209 A CN 202410154209A CN 117690502 B CN117690502 B CN 117690502B
Authority
CN
China
Prior art keywords
shared memory
board card
data
force value
particle
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202410154209.7A
Other languages
English (en)
Other versions
CN117690502A (zh
Inventor
刘伟
李仁刚
徐亚明
郭巍
邓子为
张德闪
牟奇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Electronic Information Industry Co Ltd
Original Assignee
Inspur Electronic Information Industry Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Inspur Electronic Information Industry Co Ltd filed Critical Inspur Electronic Information Industry Co Ltd
Priority to CN202410154209.7A priority Critical patent/CN117690502B/zh
Publication of CN117690502A publication Critical patent/CN117690502A/zh
Application granted granted Critical
Publication of CN117690502B publication Critical patent/CN117690502B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02TCLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO TRANSPORTATION
    • Y02T90/00Enabling technologies or technologies with a potential or indirect contribution to GHG emissions mitigation

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开了一种分子动力学模拟系统及方法,涉及数据处理领域,为解决分子动力学模拟系统数据传输效率低的问题,该分子动力学模拟系统包括:计算高速链路交换模块,及与计算高速链路交换模块连接的第一共享内存、全域处理板卡组、区域处理板卡组和信息计算板卡组。本发明中,当主机、全域处理板卡组、区域处理板卡组和信息计算板卡组通过计算高速链路与第一共享内存互联后,均可访问第一共享内存中的数据,无需主机端进行数据转发,提升计算任务处理效率,从而提升了分子动力学模拟的效率。

Description

一种分子动力学模拟系统及方法
技术领域
本发明涉及数据处理领域,特别涉及一种分子动力学模拟系统及方法。
背景技术
分子动力学(Molecular Dynamics,简称MD)是一门结合了数学、物理、化学以及生物学等多门学科的前沿技术。一般来说,研究分子体系结构与性质的方法共分为:实验、理论研究和模拟三种。其中,分子动力学模拟将体系中的每个原子视为遵守牛顿第二定律的粒子,根据分子的势能函数,得到作用在每个原子上的力,给定初速度和演化的步长,利用牛顿运动定律求解运动方程,便得到原子在势能面上的运动轨迹。在一定的时间内,通过对体系中分子、原子运动状态的模拟,从而以动态方式观察体系随时间演化的行为。这为研究人员提供了相当于“计算显微镜”的东西,可以被用来揭示化学反应的微观物理过程,用于光合作用,新药寻找,纳米材料性质预测等。
目前常用的分子动力学软件有很多,大部分的分子动力学软件都可以在单片FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)或者GPU(GraphicsProcessing Unit)上实现软件算法的部分卸载,释放CPU(Central Processing Unit,中央处理器)资源。但是现有的方案做不到全硬件卸载,大部分控制工作还在CPU中进行,硬件板卡只是对特定部分算法进行加速,需要CPU将待加速数据下载到板卡,等待结果,再从板卡读取加速后的数据,之后不断重复这一个操作。其间存在数据从主机内存到硬件板卡的拷贝、PCIe(Peripheral Component Interconnect express,高速串行计算机扩展总线标准)传输延迟等问题,效率非常的低。而且不同硬件板卡之间没有高效的协同操作,比如第二板卡需要第一板卡的计算结果,需要CPU从中间协调,或者是采用固定的数据传输通道,不能满足灵活的数据传输需求。
因此,如何提供一种解决上述技术问题的技术方案是本领域技术人员目前需要解决的问题。
发明内容
本发明的目的是提供一种分子动力学模拟系统及方法,能够提升计算任务处理效率,从而提升了分子动力学模拟的效率。
为解决上述技术问题,本发明提供了一种分子动力学模拟系统,包括:
计算高速链路交换模块;
第一共享内存,与所述计算高速链路交换模块连接,以便所述计算高速链路交换模块上连接的全域处理板卡组、区域处理板卡组和信息计算板卡组对所述第一共享内存进行访问;
所述全域处理板卡组,用于当接收到中央处理器下发的计算任务,从所述第一共享内存中获取最新的时间片,基于所述最新的时间片中的全部粒子的信息计算各所述粒子受到的第一力值,将所述第一力值写入所述第一共享内存;
所述区域处理板卡组,所述区域处理板卡组包括多张区域计算板卡,每一所述区域计算板卡用于当接收到所述计算任务,从所述第一共享内存中获取最新的时间片,基于所述最新的时间片中与自身对应的粒子的信息计算与自身对应的粒子受到的第二力值,将所述第二力值写入所述第一共享内存;
所述信息计算板卡组,用于从所述第一共享内存中获取各个所述粒子的第一力值和第二力值,根据每一所述粒子的第一力值和第二力值在所述第一共享内存中更新每一所述粒子的信息。
在一示例性实施例中,所述分子动力学模拟系统还包括第二共享内存,所述计算高速链路交换模块包括相互连接的第一交换机和第二交换机,所述第一共享内存与所述第一交换机连接,所述区域处理板卡组和所述第二共享内存均与所述第二交换机连接,所述全域处理板卡组包括:
全域控制板卡,用于当接收到所述计算任务,从所述第一共享内存读取最新的时间片中的所有粒子的信息,将所有所述粒子的信息写入所述第二共享内存,利用所述第二共享内存中的中间计算数据计算每个所述粒子受到的长程力,所述长程力为所述第一力值;
多张全域计算板卡,每张所述全域计算板卡用于从所述第二共享内存中获取所有所述粒子的信息,对所有所述粒子的信息进行处理得到所述中间计算数据,并将所述中间计算数据写入所述第二共享内存。
在一示例性实施例中,所述全域控制板卡还用于通过插值算法将所有所述粒子的电荷插值到多个正方体的端点上,并计算系数矩阵,多个所述正方体基于对全部所述粒子所在的三维空间划分得到。
在一示例性实施例中,所述全域控制板卡还用于获取每一所述正方体的端点上的数据,将所述正方体的端点上的数据写入所述第二共享内存。
在一示例性实施例中,所述全域计算板卡具体用于对所述正方体的端点上的数据进行三维快速傅里叶变换,得到变换结果数据,将所述变换结果数据写入所述第二共享内存,从所述第二共享内存中获取求和结果数据,对所述求和结果数据进行逆三维傅里叶变换,得到逆变换结果数据,将所述逆变换结果数据写入所述第二共享内存;
所述全域控制板卡还用于将所述第二共享内存中的变换结果数据与所述系数矩阵进行求和计算,得到所述求和结果数据,将所述求和结果数据写入所述第二共享内存,从所述第二共享内存获取所述逆变换结果数据,通过逆差值算法对所述逆变换结果数据进行处理,得到各个所述粒子受到的长程力。
在一示例性实施例中,对所述正方体的端点上的数据进行三维快速傅里叶变换,得到变换结果数据,将所述变换结果数据写入所述第二共享内存的过程包括:
按xyz方向读取所述第二共享内存中的所述正方体的端点上的数据;所述xyz方向为所述正方体的端点上的数据的初始存储方向;
针对x方向,对预设通道数的yz面的数据进行三维快速傅里叶变换得到变换结果数据,将所述变换结果数据按照yzx方向写入所述第二共享内存;
按所述yzx方向读取所述第二共享内存中的数据;
针对y方向,对所述预设通道数的zx面的数据进行三维快速傅里叶变换得到变换结果数据,将所述变换结果数据按照zxy方向写入所述第二共享内存;
按所述zxy方向读取所述第二共享内存中的数据;
针对z方向,对所述预设通道数的xy面的数据进行三维快速傅里叶变换得到变换结果数据,将所述变换结果数据按照xyz的方向写入所述第二共享内存。
在一示例性实施例中,所述第二共享内存为乒乓内存,所述乒乓内存包括第一缓冲区和第二缓冲区;
按xyz方向读取所述第二共享内存中的所述正方体的端点上的数据的过程包括:
从所述第一缓冲区按xyz方向读取数据;
将所述变换结果数据按照yzx方向写入所述第二共享内存的过程包括:
将所述变换结果数据按照yzx方向写入所述第二缓冲区;
按所述yzx方向读取所述第二共享内存中的数据的过程包括:
从所述第二缓冲区按所述yzx方向读取数据;
将所述变换结果数据按照zxy方向写入所述第二共享内存的过程包括:
将所述变换结果数据按照zxy方向写入所述第一缓冲区;
按所述zxy方向读取所述第二共享内存中的数据的过程包括:
从所述第一缓冲区按所述zxy方向读取数据;
将所述变换结果数据按照xyz的方向写入所述第二共享内存的过程包括:
将所述变换结果数据按照xyz方向写入所述第二缓冲区。
在一示例性实施例中,所述全域计算板卡包括:
多个通道;
分配模块,用于从所述第二共享内存中获取所述正方体的端点上的数据,将所述数据划分为多组,将各组所述数据一一对应分配给多个所述通道;
与每一通道一一对应连接的计算模块,用于对接收到的所述数据进行三维快速傅里叶变换,得到变换结果数据;
多个寄存器模块,每个所述寄存器模块用于存储所述变换结果数据中的一组一维数据;
多个转置模块,用于对各个所述寄存器模块中的所述一维数据进行转置,将转置后的数据写入所述第二共享内存。
在一示例性实施例中,基于所述最新的时间片中与自身对应的粒子的信息计算与自身对应的粒子受到的第二力值的过程包括:
确定所述最新的时间片中与自身对应的区域编码;
根据所述区域编码下的粒子编号确定与自身对应的粒子,基于与自身对应的粒子的信息计算与自身对应的粒子受到的第二力值。
在一示例性实施例中,所述中央处理器还用于配置预设截断半径;
根据所述区域编码下的粒子编号确定与自身对应的粒子,基于与自身对应的粒子的信息计算与自身对应的粒子受到的第二力值的过程包括:
根据所述区域编码确定自身对应的本体区域和设于所述本体区域外周的截断区域;所述截断区域基于所述本体区域和所述预设截断半径确定;
基于所述本体区域和所述截断区域中的任意两个粒子之间的作用力,得到与自身对应的本体区域中的粒子受到的第二力值。
在一示例性实施例中,任意两个粒子之间的作用力包括成键作用力以及非成键作用力中所述预设截断半径以内的部分。
在一示例性实施例中,所述信息计算板卡组包括合力计算板卡;
所述全域控制板卡还用于在计算完成各所述粒子受到的第一力值后触发所述合力计算板卡;
所述区域计算板卡还用于在计算完成与自身对应的粒子的第二力值后触发所述合力计算板卡;
所述合力计算板卡,用于在接收到所述全域控制板卡的触发以及所有区域计算板卡的触发后,基于每一所述粒子的所述第一力值和所述第二力值计算每一所述粒子的合力。
在一示例性实施例中,在计算完成各所述粒子受到的第一力值后触发所述合力计算板卡的过程包括:
在计算完成各所述粒子受到的第一力值后,将所述第一力值更新到所述第一共享内存中的目标时间片,在所述合力计算板卡的目标寄存器的对应标志位中写入计算完成预设值,以触发所述合力计算板卡;
在计算完成与自身对应的粒子的第二力值后触发所述合力计算板卡的过程包括:
在计算完成与自身对应的粒子的第二力值后,将所述第二力值更新到所述第一共享内存中的目标时间片,在所述合力计算板卡的目标寄存器的对应标志位中写入计算完成预设值,以触发所述合力计算板卡。
在一示例性实施例中,所述合力计算板卡具体用于根据所述目标寄存器中各个标志位的值均为所述计算完成预设值后,在所述第一共享内存的目标时间片中获取每一所述粒子的所述第一力值和所述第二力值,基于每一所述粒子的所述第一力值和所述第二力值计算每一所述粒子的合力。
在一示例性实施例中,所述信息计算板卡组还包括:
位置计算板卡,用于根据所述合力计算每一所述粒子的当前位置,并将所述当前位置更新到所述第一共享内存的目标时间片。
在一示例性实施例中,所述信息计算板卡组还包括:
速度计算板卡,用于当所述合力计算板卡完成多次合力计算后,基于所述粒子的第i个合力和所述粒子的第i+1个合力计算所述粒子的当前速度,并将所述当前速度更新到所述第一共享内存的目标时间片,i为正整数。
在一示例性实施例中,所述中央处理器具体用于根据所述计算高速链路交换模块的第一硬件信息及各个所述全域处理板卡组、所述区域处理板卡组及所述信息计算板卡组对应的第二硬件信息生成并下发计算任务。
在一示例性实施例中,所述中央处理器还用于设置每个所述计算任务对应的粒子的初始状态、模拟步长以及迭代次数;所述初始状态包括初始位置和初始速度。
在一示例性实施例中,所述计算高速链路交换模块包括内部互联的第一类计算高速链路交换机以及内部不互联的第二类计算高速链路交换机;
所述中央处理器、所述全域处理板卡组及所述信息计算板卡组均与所述第一类计算高速链路交换机连接,所述区域处理板卡组与所述第二类计算高速链路交换机连接。
为解决上述技术问题,本发明还提供了一种分子动力学模拟方法,应用于如上文任意一项所述的分子动力学模拟系统,所述分子动力学模拟方法包括:
通过全域处理板卡组在接收到中央处理器下发的计算任务时,利用计算高速链路交换模块从第一共享内存中获取最新的时间片,基于所述最新的时间片中的全部粒子的信息计算各所述粒子受到的第一力值,将所述第一力值写入所述第一共享内存;
通过区域处理板卡组中的每张区域计算板卡在接收到所述计算任务时,从所述第一共享内存中获取最新的时间片,基于所述最新的时间片中与自身对应的粒子的信息计算与自身对应的粒子受到的第二力值,将所述第二力值写入所述第一共享内存;
通过信息计算板卡组从所述第一共享内存中获取各个所述粒子的第一力值和第二力值,根据每一所述粒子的第一力值和第二力值在所述第一共享内存中更新每一所述粒子的信息。
本发明提供了一种分子动力学模拟系统,将分子动力学模拟流程进行拆解,将粒子的全域力值计算、区域力值计算、以及其他信息的计算全部卸载到硬件板卡上实现,主机端的中央处理器只需要做少量的任务调度工作,全域处理板卡组和区域处理板卡组中多卡并行执行,主机、全域处理板卡组、区域处理板卡组和信息计算板卡组通过计算高速链路与第一共享内存互联后,均可访问第一共享内存中的数据,无需主机端进行数据转发,提升计算任务处理效率,从而提升了分子动力学模拟的效率。本发明还提供了一种分子动力学模拟方法,具有和上述分子动力学模拟系统相同的有益效果。
附图说明
为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明所提供的一种分子动力学模拟系统的结构示意图;
图2为本发明所提供的另一种分子动力学模拟系统的结构示意图;
图3为本发明所提供的一种数据处理方向示意图;
图4为本发明所提供的另一种数据处理方向示意图;
图5为本发明所提供的一种全域计算板卡的结构示意图;
图6为本发明所提供的一种数据转置示意图;
图7为本发明所提供的一种本体区域和截断区域的示意图;
图8为本发明所提供的另一种分子动力学模拟系统的结构示意图;
图9为本发明所提供的一种多任务操作示意图;
图10为本发明所提供的一种计算高速链路交换机的结构示意图;
图11为本发明所提供的一种分子动力学模拟方法的步骤流程图;
图12为本发明所提供的一种计算机可读存储介质的结构示意图。
具体实施方式
本发明的核心是提供一种分子动力学模拟系统及方法,能够提升计算任务处理效率,从而提升了分子动力学模拟的效率。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
第一方面,请参照图1,图1为本发明所提供的一种分子动力学模拟系统的结构示意图,该分子动力学模拟系统包括:
计算高速链路交换模块1;
第一共享内存21,与计算高速链路交换模块1连接,以便计算高速链路交换模块1上连接的全域处理板卡组3、区域处理板卡组5和信息计算板卡组6对第一共享内存21进行访问;
全域处理板卡组3,用于当接收到中央处理器4下发的计算任务,从第一共享内存21中获取最新的时间片,基于最新的时间片中的全部粒子的信息计算各粒子受到的第一力值,将第一力值写入第一共享内存21;
区域处理板卡组5,区域处理板卡组5包括多张区域计算板卡51,每一区域计算板卡51用于当接收到计算任务,从第一共享内存21中获取最新的时间片,基于最新的时间片中与自身对应的粒子的信息计算与自身对应的粒子受到的第二力值,将第二力值写入第一共享内存21;
信息计算板卡组6,用于从第一共享内存21中获取各个粒子的第一力值和第二力值,根据每一粒子的第一力值和第二力值在第一共享内存21中更新每一粒子的信息。
首先对分子动力学模拟进行说明,分子动力学模拟是近年来飞速发展的一种分子模拟方法,研究对象一般是以生物大分子(蛋白、核酸、多糖等)为主,以经典力学、量子力学、统计力学为基础,利用计算机数值求解分子体系运动方程的方法,模拟研究分子体系的结构与性质。可以理解,根据分子间相互作用空间范围的大小,分子间相互作用可以分为两种不同的类型:近程相互作用和长程相互作用,近程相互作用的作用距离相对较小,只需计算相距较近的分子间的相互作用,截去相距较远的分子间的相互作用,不会产生显著的误差,截断近似成立,相反,长程相互作用的作用距离很大,截去相距较远的分子间相互作用会产生很大误差。甚至相距超过一个模拟元胞的两个分子,其相互作用也必须计算,不能忽略,截断近似不成立。
本实施例中,将该分子动力学模拟的系统通过异构加速架构实现,包括设于主机端的中央处理器4、CXL(Compute Express Link,计算高速链路)协议/总线/交换机以及多张板卡组成,板卡具体可以为硬件加速板卡,包括但不限于FPGA卡或GPU卡等,根据实际工程需要选择即可,本实施例在此不做限定。
为解决现有技术中只将分子动力学模拟中少量的加速任务卸载到板卡上进行的问题,本实施例首先对分子动力学模拟过程进行分解,将不同过程卸载到不同板卡上进行,每个板卡执行何种过程由主机端进行分配,那么执行同一过程的板卡或执行相互关联的过程的板卡组成一个板卡组,如本实施例中的全域处理板卡组3、区域处理板卡组5以及信息计算板卡组6,全域计算板卡32中包括多张板卡,通过多张板卡协同实现对粒子的长程力的计算,区域处理板卡组5中包括多张板卡,通过多张板卡实现对粒子的短程力的计算,信息计算板卡组6中同样包括多张板卡,通过多张板卡分别实现粒子的合力计算、位置计算以及速度计算。其中,各个板卡组中的板卡不复用。其中,粒子为分子动力学模拟中,原子和分子被视为由原子核和电子组成的经典粒子,每个粒子的运动和相互作用均按照牛顿力学和库伦定律进行计算。
本实施例中,每个板卡均设有计算高速链路模块,各个板卡均通过计算高速链路模块与计算高速链路交换模块1连接,实现各个板卡之间的高速互联,相应的,主机也通过PCIe总线与计算高速链路交换模块1连接,第一共享内存21与计算高速链路交换模块1连接,计算高速链路主要用于解决中央处理器4、板卡(加速器)和内存之间的缓存一致性问题,可消除中央处理器4、板卡的计算密集型工作负载的传输瓶颈,显著提升系统性能。各个CXL设备(包括中央处理器4、各板卡以及第一共享内存21)均连接完成后,所有通过计算高速链路互联的设备均可访问第一共享内存21中的数据,而无需主机进行数据转发,从而提高数据传输效率。此外,主机端的中央处理器4还用于实现分子动力学模拟系统的初始化,分子动力学模拟参数初始化、少量的控制、任务流水作业和运行状态监控等工作。分子动力学模拟系统初始化工作包括识别板卡数量,板卡地址,功能设置、内存设置以及任务数量等。模拟参数初始化配置包括每个计算任务的粒子初始状态,模拟步长,迭代次数等。并将相关数据通过CXL3.0的互联总线更新到第一共享内存21。
本实施例中,各个CXL设备之间可以采用CXL3.0协议进行互联,CXL3.0协议为CXL协议的最新版本,在前代技术基础上做了进一步扩展,以提高扩展性并通过先进的交互功能、高效的点对点通信、以及跨越多个计算领域的细粒度资源共享优化系统级数据流。
对CXL协议进行说明,CXL标准定义了三个协议,其中,CXL.io协议本质上是经过一定改进的PCIe 5.0协议,用于初始化、链接、设备发现和列举以及寄存器访问,它为I/O设备提供了非一致的加载/存储接口,CXL.cache 协议定义了主机和设备之间的交互,允许连接的CXL设备使用请求和响应方法以极低的延迟高效地缓存主机内存,CXL.mem协议提供了一种通过I/O Bus接口扩展Memory hierarchy层次中Memory的大小,进而提升其容量和读写带宽,因此其接口请求也相对简单,就是提供读写通道。
本实施例中,以时间片的形式存储计算任务在某一时刻的粒子的信息,该时间片在第一共享内存21中存储,以便上述CXL设备直接访问,可以理解,不同计算任务的时间片占用共享内存中不同的存储区域,同一计算任务中不同时刻对应的时间片占用该存储区域中不同的子区域,第一共享内存21可以根据实际需要选择对应的存储器、内存条等存储介质,本实施例在此不作具体限定。
可以理解,分子动力学中的静电力的长程库仑力需要全部粒子参与计算,因此,本实施例中由全域处理板卡组3获取第一共享内存21中最新的时间片(假设该时间片对应的是计算任务t1时刻的时间片)中的全部粒子的粒子信息,进行各个粒子的长程力的计算,并在计算完成后,将计算结果写入第一共享内存21。同样的,区域处理板卡组5中的各个区域计算板卡51对自身对应的区域中的粒子的近程力进行计算,并在计算完成后,将计算结果写入第一共享内存21,当所有粒子的长程力和近程力均计算完成后,信息计算板卡组6从共享内存中获取各个粒子的长程力和近程力完成后续的粒子的其他信息的计算,如速度、位置、合力等,并更新第一共享内存21中的目标时间片(即计算任务在t2时刻的时间片,t2=t1+δt)。
可见,本实施例中,将分子动力学模拟流程进行拆解,将粒子的全域力值计算、区域力值计算、以及其他信息的计算全部卸载到硬件板卡上实现,主机端的中央处理器4只需要做少量的任务调度工作,全域处理板卡组3和区域处理板卡组5中多卡并行执行,主机、全域处理板卡组3、区域处理板卡和信息计算板卡组通过计算高速链路与第一共享内存21互联后,均可访问第一共享内存21中的数据,无需主机端进行数据转发,提升计算任务处理效率,从而提升了分子动力学模拟的效率。
在上述实施例的基础上:
在一示例性实施例中,参照图2所示,分子动力学模拟系统还包括第二共享内存22,计算高速链路交换模块1包括相互连接的第一交换机11和第二交换机12,第一共享内存21与第一交换机11连接,区域处理板卡组5和第二共享内存22均与第二交换机12连接,全域处理板卡组3包括:
全域控制板卡31,用于当接收到计算任务,从第一共享内存21读取最新的时间片中的所有粒子的信息,将所有粒子的信息写入第二共享内存22,利用第二共享内存22中的中间计算数据计算每个粒子受到的长程力,长程力为第一力值;
多张全域计算板卡32,每张全域计算板卡32用于从第二共享内存22中获取所有粒子的信息,对所有粒子的信息进行处理得到中间计算数据,并将中间计算数据写入第二共享内存22。
本实施例中,该分子动力学模拟系统还包括第二共享内存22,第二共享内存22可以根据实际需要选择对应的存储器、内存条等存储介质,本实施例在此不作具体限定。
参照图2所示,计算高速链路交换模块1包括多个交换机,多个交换机包括相互连接的第一交换机11、第二交换机12、第三交换机13和第四交换机14,其中,第一共享内存21和信息计算板卡组6均与第一交换机11连接,全域处理板卡组3和第二共享内存22均与第二交换机12连接,各区域计算板卡51与第三交换机13连接,主机端的中央处理器4与第四交换机14连接。
本实施例中,全域处理板卡组3包括全域控制板卡31和多张全域计算板卡32,其中,全域控制板卡31在接收到主机端的中央处理器4发送的计算任务后,从所述第一共享内存21中获取最新的时间片,将该最新的时间片复制到第二共享内存22中,以便全域控制板卡31和全域计算板卡32进行后续访问,由于第二共享内存22设于全域处理板卡组3端,从而提高全域控制板卡31和全域计算板卡32的内存访问效率。
全域控制板卡31将最新的时间片复制到第二共享内存22中后,全域计算板卡32基于第二共享内存22中的最新的时间片中的全部粒子的信息,进行各个粒子的中间计算数据的计算,中间计算数据用于计算长程力,长程力一般是通过三维快速傅里叶变换完成,本实施例中的中间计算数据具体可以为傅里叶变换相关的数据,全域控制板卡31根据中间计算数据计算各个粒子的长程力。
在一示例性实施例中,全域控制板卡31还用于通过插值算法将所有粒子的电荷插值到多个正方体的端点上,并计算系数矩阵,多个正方体基于对全部粒子所在的三维空间划分得到。
本实施例中,全域控制板卡31用于通过插值算法将所有粒子的电荷插值到周围四层正方体的端点上。其中,插值算法具体可以为b样条插值算法。
在一示例性实施例中,全域控制板卡31还用于获取每一正方体的端点上的数据,将正方体的端点上的数据写入第二共享内存22。
在一示例性实施例中,全域计算板卡32具体用于对正方体的端点上的数据进行三维快速傅里叶变换,得到变换结果数据,将变换结果数据写入第二共享内存22,从第二共享内存22中获取求和结果数据,对求和结果数据进行逆三维傅里叶变换,得到逆变换结果数据,将逆变换结果数据写入第二共享内存22;
全域控制板卡31还用于将第二共享内存22中的变换结果数据与系数矩阵进行求和计算,得到求和结果数据,将求和结果数据写入第二共享内存22,从第二共享内存22获取逆变换结果数据,通过逆差值算法对逆变换结果数据进行处理,得到各个粒子受到的长程力。
本实施例中,全域处理板卡组3负责长程库仑力部分的计算,需要全部粒子参与,主要涉及插值和fft(fast fourier transformation,快速傅里叶变换)计算以及对应的逆计算。首先全域控制板卡31先加载当前接收到的计算任务,根据任务信息,将第一共享内存21中的最新时间片中的全部粒子的粒子信息复制到第二共享内存22,全域控制板卡31按照软件端的插值算法进行插值计算,将全部粒子所在的3维空间按正方体分为预设数量的小正方体格子,将所有粒子的电荷插值到多个正方体的端点上,预设数量根据实际任务需要确定,为便于理解,本实施例以预设数量为323为例进行后续说明。可以理解,正方体的端点的数据是电荷的插值结果。
由于fft可以在通道上并行进行,所以插值后的粒子按照多板卡多通道fft并行运算的流程,进行多个全域计算板卡32的并行计算。全域控制板卡31对3d-fft的结果按照软件端的算法进行处理(K空间求和等),然后依次进行逆傅里叶变换和逆差值运算,得到各个粒子的长程力,并将长程力的计算结果更新到共享内存的时间片中,等待任务调度。
在一示例性实施例中,对正方体的端点上的数据进行三维快速傅里叶变换,得到变换结果数据,将变换结果数据写入第二共享内存22的过程包括:
在第二共享内存22中按照正方体的端点上的数据的初始存储方向读取数据;
确定当前目标方向,当前目标方向为x方向或y方向或z方向;
针对当前目标方向,对预设通道数的与当前目标方向对应的目标面上的数据进行三维快速傅里叶变换得到变换结果数据,将变换结果数据按照目标面对应的当前存储方向写入第二共享内存22;当前目标方向为x方向时,x方向对应的目标面为yz面,当前目标方向为y方向时,y方向对应的目标面为zx面,当前目标方向为z方向时,z方向对应的目标面为xy面;
在第二共享内存22中按当前存储方向读取数据,重复确定当前目标方向的步骤,直至当前目标方向对应的当前存储方向与初始存储方向一致。
在一示例性实施例中,对正方体的端点上的数据进行三维快速傅里叶变换,得到变换结果数据,将变换结果数据写入第二共享内存22的过程包括:
按xyz方向读取第二共享内存22中的正方体的端点上的数据;xyz方向为数据的初始存储方向;
针对x方向,对预设通道数的yz面的数据进行三维快速傅里叶变换得到变换结果数据,将变换结果数据按照yzx方向写入第二共享内存22;
按yzx方向读取第二共享内存22中的数据;
针对y方向,对预设通道数的zx面的数据进行三维快速傅里叶变换得到变换结果数据,将变换结果数据按照zxy方向写入第二共享内存22;
按zxy方向读取第二共享内存22中的数据;
针对z方向,对预设通道数的xy面的数据进行三维快速傅里叶变换得到变换结果数据,将变换结果数据按照xyz的方向写入第二共享内存22。
本实施例中,3d fft计算的特点是1d fft上可多通道并行计算,但是在2d fft需要在所有的1d fft完成后进行,如图3和图4所示,先在x方向上进行fft运算,对yz面的数据计算fft可以分多通道并行进行,然后再在y方向上进行fft运算,最后是z方向,其中存在一个内存连续行的问题,插值后的正方体初始内存分布如图4所示,第一次做x方向的fft运算时,各区域计算板卡51可以通过段与通道对应关系从第二共享内存22中按块读取内存,但是经过x方向fft后,y方向如果直接做fft就不能再按段进行,为便于提高数据处理效率,本实施例在某一个方向的fft处理完成后,将变换结果数据按照下一个方向的处理逻辑进行存储,即本实施例对fft某一个方向上的变换结果数据进行转置,以便下一个方向进行fft运算。
可以理解,全域控制板卡31进行差值后是按照xyz方向存储数据,对x方向的yz面的数据进行fft变换,然后通过转置将变换结果数据以yzx的方向写入第二内存,在进行y方向的fft变换时,从第二内存中读取按yzx方向存储的数据,可直接进行y方向上的fft变换,即在y方向上对zx面的数据进行fft变换,然后通过转置将变换结果数据以zxy的方向写入第二内存,在进行z方向的fft变换时,从第二内存中读取按zxy方向存储的数据,可直接进行z方向上的fft变换,然后通过转置将变换结果数据以xyz的方向写入第二内存。参照上文所述,假设将全部粒子所在的3维空间按正方体分为323的小正方体格子,本实施例可设置4张全域计算板卡32,每张全域计算板卡32实现8通道的fft并行计算。
在一示例性实施例中,参照图5所示,全域计算板卡32包括:
多个通道;
分配模块,用于从第二共享内存22中获取正方体的端点上的数据,将数据划分为多组,将各组数据一一对应分配给多个通道;
与每一通道一一对应连接的计算模块,用于对接收到的数据进行三维快速傅里叶变换,得到变换结果数据;
多个寄存器模块,每个寄存器模块用于存储变换结果数据中的一组一维数据;
多个转置模块,用于对各个寄存器模块中的一维数据进行转置,将转置后的数据写入第二共享内存22。
图5中仅示出了8个通道,分别为第一通道、第二通道、……、第八通道,相应的,计算模块包括第一计算模块、第二计算模块、……、第八计算模块,寄存器包括第一寄存器、第二寄存器、……、第八寄存器,转置模块包括第一转置模块、第二转置模块、……、第八转置模块。
以一个转置模块为例,参照图6,对转置过程进行说明,假设每个通道对应的寄存器模块共包括32个寄存器,第一个寄存器存储的一组一维数据包括数据0_0~数据0_31,第二个寄存器存储的一组一维数据包括数据1_0~数据1_31,……最后一个寄存器存储的一组一维数据包括数据31_0~31_31,每个转置模块中的第一个转置单元读取并输出数据0_0~数据31_0,第二个转置单元读取并输出数据0_1~数据31_1,最后一个转置单元读取并输出数据0_31到数据31_31,从而实现数据的转置。
在一示例性实施例中,第二共享内存22为乒乓内存,乒乓内存包括第一缓冲区和第二缓冲区;
所述全域控制板卡31,具体用于按照初始存储方向将正方体的端点上的数据写入第一缓冲区;
所述全域计算板卡32,具体用于确定当前计算的目标缓冲区,从目标缓冲区获取数据,并针对当前目标方向,对预设通道数的与当前目标方向对应的目标面上的数据进行三维快速傅里叶变换得到变换结果数据,将变换结果数据按照目标面对应的当前存储方向写入下一次计算对应的目标缓冲区。
在一示例性实施例中,第二共享内存22为乒乓内存,乒乓内存包括第一缓冲区和第二缓冲区;
按xyz方向读取第二共享内存22中的正方体的端点上的数据的过程包括:
从第一缓冲区按xyz方向读取数据;
将变换结果数据按照yzx方向写入第二共享内存22的过程包括:
将变换结果数据按照yzx方向写入第二缓冲区;
按yzx方向读取第二共享内存22中的数据的过程包括:
从第二缓冲区按yzx方向读取数据;
将变换结果数据按照zxy方向写入第二共享内存22的过程包括:
将变换结果数据按照zxy方向写入第一缓冲区;
按zxy方向读取第二共享内存22中的数据的过程包括:
从第一缓冲区按zxy方向读取数据;
将变换结果数据按照xyz的方向写入第二共享内存22的过程包括:
将变换结果数据按照xyz方向写入第二缓冲区。
为便于不同方向的数据存储,本实施例采用乒乓缓存机制,即第二共享内存22配置第一缓冲区和第二缓冲区,在计算完x方向上的变换结果数据写入第一缓冲区,然后在对y方向进行fft处理时,从第一缓冲区读取数据,然后将y方向的变换结果数据写入第二缓冲区,在对z方向进行fft处理时,从第二缓冲区读数据,进行fft变换,由于此时第一缓冲区中的变换结果数据已被取出,将z方向的变换结果数据再写入第一缓冲区。
在一示例性实施例中,基于最新的时间片中与自身对应的粒子的信息计算与自身对应的粒子受到的第二力值的过程包括:
确定最新的时间片中与自身对应的区域编码;
根据区域编码下的粒子编号确定与自身对应的粒子,基于与自身对应的粒子的信息计算与自身对应的粒子受到的第二力值。
在一示例性实施例中,中央处理器4还用于配置预设截断半径;
根据区域编码下的粒子编号确定与自身对应的粒子,基于与自身对应的粒子的信息计算与自身对应的粒子受到的第二力值的过程包括:
根据区域编码确定自身对应的本体区域和设于本体区域外周的截断区域;截断区域基于本体区域和预设截断半径确定;
基于本体区域和截断区域中的任意两个粒子之间的作用力,得到与自身对应的本体区域中的粒子受到的第二力值。
在一示例性实施例中,任意两个粒子之间的作用力包括成键作用力以及非成键作用力中预设截断半径以内的部分。
可以理解,在区域计算中,多个区域计算板卡51可以并行完成成键作用力(bond互相形成化学键的原子之间的作用力),键角(angle),二面角(dihedral)以及非成键作用力(non-bond)中截断半径以内的运算。每个区域计算板卡51只负责本体区域和截断区域的计算,以图7二维图为例,下图中心区域(即黑色区域)为本体区域,周边相邻部分为截断区域(即斜线区域)。可以理解,区域计算板卡51只负责更新本体区域中各粒子的流动,截断区域中的粒子只是用来计算本体区域的边界处粒子的受力情况。当计算完成后,不需要像现有的硬件加速方案中同步相关粒子到相邻区域,而是直接通过CXL3.0中的CXL.mem协议更新到时间片中,避免了互传的复杂逻辑。
具体的,各区域计算板卡51分别加载当前接收到的计算任务,根据任务信息从第一内存的时间片中读取需要自己处理的粒子的信息,粒子的信息参照表1和表2所示。
表1 时间片示意表
表2 时间片信息表
此处所需的信息包括本体区域的信息和截断区域的信息。其中,预设截断半径为分子动力学中的截断半径是分子动力学模拟中的重要参数之一,它决定了分子之间的相互作用范围。一般的,截断半径是指由共价键和范德华力引起的相互作用的截断半径,也就是截断距离,截断半径的选择对分子动力学模拟的结果有很大的影响。如果截断半径过小,分子之间的相互作用会被截断,从而导致系统能量不够准确,物理性质的计算也会出现误差,而如果截断半径过大,则会产生不必要的计算量,增加计算时间,选择合适的截断半径需要考虑分子的大小、密度、相互作用类型等因素。在实际应用中,可选择试错的方式来确定最优的截断半径,除了截断半径以外,还有其他的相互作用参数需要进行调整,例如计算电荷和极化等。
在一示例性实施例中,参照图8所示,该信息计算板卡组6包括合力计算板卡61;
全域控制板卡31还用于在计算完成各粒子受到的第一力值后触发合力计算板卡61;
区域计算板卡51还用于在计算完成与自身对应的粒子的第二力值后触发合力计算板卡61;
合力计算板卡61,用于在接收到全域控制板卡31的触发以及所有区域计算板卡51的触发后,基于每一粒子的第一力值和第二力值计算每一粒子的合力。
在一示例性实施例中,在计算完成各粒子受到的第一力值后触发合力计算板卡61的过程包括:
在计算完成各粒子受到的第一力值后,将第一力值更新到第一共享内存21中的目标时间片,在合力计算板卡61的目标寄存器的对应标志位中写入计算完成预设值,以触发合力计算板卡61;
在计算完成与自身对应的粒子的第二力值后触发合力计算板卡61的过程包括:
在计算完成与自身对应的粒子的第二力值后,将第二力值更新到第一共享内存21中的目标时间片,在合力计算板卡61的目标寄存器的对应标志位中写入计算完成预设值,以触发合力计算板卡61。
在一示例性实施例中,合力计算板卡61具体用于根据目标寄存器中各个标志位的值均为计算完成预设值后,在第一共享内存21的目标时间片中获取每一粒子的第一力值和第二力值,基于每一粒子的第一力值和第二力值计算每一粒子的合力。
本实施例中,信息计算板卡组6中包括合力计算板卡61、速度计算板卡63和位置计算板卡62。
其中,合力计算板卡61中设有目标寄存器,目标寄存器有多个标志位,多个标志位与各个区域计算板卡51以及一个全域计算板卡32一一对应,全域处理板卡组3计算完所有粒子的长程力后,通过CXL.io协议向目标寄存器中与自身对应的标志位写入计算完成预设值,每个区域计算板卡51在完成自身对应的粒子的近程力计算后,通过CXL.io协议向目标寄存器中与自身对应的标志位写入计算完成预设值,假设计算完成预设值为1,未计算完成预设值为0,则合力计算板卡61在目标寄存器所有标志位的值均为1时,判定长程力和近程力的计算均完成,此时从第一共享内存21中获取第一力值和第二力值进行合力计算。进一步的,当判定长程力和近程力的计算均完成,从第一内存取数据计算合力的同时,还可以将目标寄存器所有标志位清零,以便下一个计算任务或者当前任务下一个时刻的计算状态值写入。
在一示例性实施例中,信息计算板卡组6还包括:
位置计算板卡62,用于根据合力计算每一粒子的当前位置,并将当前位置更新到第一共享内存21的目标时间片。
在一示例性实施例中,信息计算板卡组6还包括:
速度计算板卡63,用于当合力计算板卡61完成多次合力计算后,基于粒子的第i个合力和粒子的第i+1个合力计算粒子的当前速度,并将当前速度更新到第一共享内存21的目标时间片,i为正整数。
本实施例中,以分子动力学模拟中广泛应用的Velocity-Verlet 算法为例,对如何通过给定粒子t时刻的位置x和动量p(速度v),得到t+dt时刻的位置x(t+dt)和动量p(t+dt)(速度v(t+dt)进行说明,其大致流程如下:
给定t时刻的位置xt,速度vt,加速度at
在t+δt时刻;
位置计算板卡62计算粒子的位置xt+δt=xt+vtδt+1/2(at(δt)2);
速度计算板卡63计算粒子的速度vt+δt=vt+1/2(at+at+δt);
可以理解,速度计算板卡63计算粒子在t+δt时刻的速度时,需要用到t+δt时刻粒子的受力,基于此本发明设置了流水线操作用以支持多任务操作,参照图9所示。
在一示例性实施例中,计算高速链路交换模块1包括内部互联的第一类计算高速链路交换机以及内部不互联的第二类计算高速链路交换机;
中央处理器4、全域处理板卡组3及信息计算板卡组6均与第一类计算高速链路交换机连接,区域处理板卡组5与第二类计算高速链路交换机连接。
本发明通过分析分子动力学模拟的特点,以内存访问为核心,设计两类计算高速链路交换模块实现方案,参照图10所示,第一交换机11、第二交换机12及第四交换机14为第一类计算高速链路交换机,第三交换机13为第二类计算高速链路交换机。
综上所述,本发明提供了一种全硬件卸载平台,中央处理器4只需要做少量任务调度工作,同时根据算法拆解后的流程和CXL架构高效结合,提升了单任务执行的速度,同时流水线多任务操作,单位时间内执行了更多的任务,提升了分子动力学模拟的效率。
第二方面,请参照图11,图11为本发明所提供的一种分子动力学模拟方法的步骤流程图,应用于如上文任意一个实施例所描述的分子动力学模拟系统,该分子动力学模拟方法包括:
S101:通过全域处理板卡组在接收到中央处理器下发的计算任务时,利用计算高速链路交换模块从第一共享内存中获取最新的时间片,基于最新的时间片中的全部粒子的信息计算各粒子受到的第一力值,将第一力值写入第一共享内存;
S102:通过区域处理板卡组中的每张区域计算板卡在接收到计算任务时,从第一共享内存中获取最新的时间片,基于最新的时间片中与自身对应的粒子的信息计算与自身对应的粒子受到的第二力值,将第二力值写入第一共享内存;
S103:通过信息计算板卡组从第一共享内存中获取各个粒子的第一力值和第二力值,根据每一粒子的第一力值和第二力值在第一共享内存中更新每一粒子的信息。
可见,本实施例中,将分子动力学模拟流程进行拆解,将粒子的全域力值计算、区域力值计算、以及其他信息的计算全部卸载到硬件板卡上实现,主机端的中央处理器只需要做少量的任务调度工作,全域处理板卡组和区域处理板卡组中多卡并行执行,主机、全域处理板卡组、区域处理板卡组和信息计算板卡组通过计算高速链路与第一共享内存互联后,均可访问第一共享内存中的数据,无需主机端进行数据转发,提升计算任务处理效率,从而提升了分子动力学模拟的效率。
在一示例性实施例中,全域处理板卡组包括全域控制板卡和多张全域计算板卡,分子动力学模拟系统还包括第二共享内存,通过全域处理板卡组在接收到中央处理器下发的计算任务时,利用计算高速链路交换模块从第一共享内存中获取最新的时间片,基于最新的时间片中的全部粒子的信息计算各粒子受到的第一力值,将第一力值写入第一共享内存的过程包括:
通过全域控制板卡在接收到计算任务时,从第一共享内存读取最新的时间片中的所有粒子的信息,将所有粒子的信息写入第二共享内存,利用第二共享内存中的中间计算数据计算每个粒子受到的长程力,长程力为第一力值;
通过每张全域计算板卡从第二共享内存中获取所有粒子的信息,对所有粒子的信息进行处理得到中间计算数据,并将中间计算数据写入第二共享内存。
在一示例性实施例中,该分子动力学模拟方法还包括:
通过全域控制板卡利用插值算法将所有粒子的电荷插值到多个正方体的端点上,并计算系数矩阵,多个正方体基于对全部粒子所在的三维空间划分得到。
在一示例性实施例中,该分子动力学模拟方法还包括:
通过全域控制板卡获取每一正方体的端点上的数据,将数据写入第二共享内存;
在一示例性实施例中,通过每张全域计算板卡从第二共享内存中获取所有粒子的信息,对所有粒子的信息进行处理得到中间计算数据,并将中间计算数据写入第二共享内存的过程包括:
通过全域计算板卡对正方体的端点上的数据进行三维快速傅里叶变换,得到变换结果数据,将变换结果数据写入第二共享内存,从第二共享内存中获取求和结果数据,对求和结果数据进行逆三维傅里叶变换,得到逆变换结果数据,将逆变换结果数据写入第二共享内存;
该分子动力学模拟方法还包括:
通过全域控制板卡将第二共享内存中的变换结果数据与系数矩阵进行求和计算,得到求和结果数据,将求和结果数据写入第二共享内存,从第二共享内存获取逆变换结果数据,通过逆差值算法对逆变换结果数据进行处理,得到各个粒子受到的长程力。
在一示例性实施例中,对正方体的端点上的数据进行三维快速傅里叶变换,得到变换结果数据,将变换结果数据写入第二共享内存的过程包括:
按xyz方向读取第二共享内存中的正方体的端点上的数据;xyz方向为数据的初始存储方向;
针对x方向,对预设通道数的yz面的数据进行三维快速傅里叶变换得到变换结果数据,将变换结果数据按照yzx方向写入第二共享内存;
按yzx方向读取第二共享内存中的数据;
针对y方向,对预设通道数的zx面的数据进行三维快速傅里叶变换得到变换结果数据,将变换结果数据按照zxy方向写入第二共享内存;
按zxy方向读取第二共享内存中的数据;
针对z方向,对预设通道数的xy面的数据进行三维快速傅里叶变换得到变换结果数据,将变换结果数据按照xyz的方向写入第二共享内存。
在一示例性实施例中,第二共享内存为乒乓内存,乒乓内存包括第一缓冲区和第二缓冲区;
按xyz方向读取第二共享内存中的正方体的端点上的数据的过程包括:
从第一缓冲区按xyz方向读取数据;
将变换结果数据按照yzx方向写入第二共享内存的过程包括:
将变换结果数据按照yzx方向写入第二缓冲区;
按yzx方向读取第二共享内存中的数据的过程包括:
从第二缓冲区按yzx方向读取数据;
将变换结果数据按照zxy方向写入第二共享内存的过程包括:
将变换结果数据按照zxy方向写入第一缓冲区;
按zxy方向读取第二共享内存中的数据的过程包括:
从第一缓冲区按zxy方向读取数据;
将变换结果数据按照xyz的方向写入第二共享内存的过程包括:
将变换结果数据按照xyz方向写入第二缓冲区。
在一示例性实施例中,全域计算板卡包括:多个通道、分配模块、计算模块、多个寄存器模块和多个转置模块,通过全域计算板卡对正方体的端点上的数据进行三维快速傅里叶变换,得到变换结果数据,将变换结果数据写入第二共享内存的过程包括:
通过分配模块从第二共享内存中获取正方体的端点上的数据,将数据划分为多组,将各组数据一一对应分配给多个通道;
通过计算模块对接收到的数据进行三维快速傅里叶变换,得到变换结果数据;
通过每个寄存器存储变换结果数据中的一组一维数据;
通过每个转置模块对各个寄存器模块中的一维数据进行转置,将转置后的数据写入第二共享内存。
在一示例性实施例中,基于最新的时间片中与自身对应的粒子的信息计算与自身对应的粒子受到的第二力值的过程包括:
确定最新的时间片中与自身对应的区域编码;
根据区域编码下的粒子编号确定与自身对应的粒子,基于与自身对应的粒子的信息计算与自身对应的粒子受到的第二力值。
在一示例性实施例中,中央处理器还用于配置预设截断半径;
根据区域编码下的粒子编号确定与自身对应的粒子,基于与自身对应的粒子的信息计算与自身对应的粒子受到的第二力值的过程包括:
根据区域编码确定自身对应的本体区域和设于本体区域外周的截断区域;截断区域基于本体区域和预设截断半径确定;
基于本体区域和截断区域中的任意两个粒子之间的作用力,得到与自身对应的本体区域中的粒子受到的第二力值。
在一示例性实施例中,任意两个粒子之间的作用力包括成键作用力以及非成键作用力中预设截断半径以内的部分。
在一示例性实施例中,信息计算板卡组包括合力计算板卡;
通过信息计算板卡组从第一共享内存中获取各个粒子的第一力值和第二力值,根据每一粒子的第一力值和第二力值在第一共享内存中更新每一粒子的信息之前,该分子动力学模拟方法还包括:
通过全域控制板卡在计算完成各粒子受到的第一力值后触发合力计算板卡;
通过区域计算板卡在计算完成与自身对应的粒子的第二力值后触发合力计算板卡;
通过信息计算板卡组从第一共享内存中获取各个粒子的第一力值和第二力值,根据每一粒子的第一力值和第二力值在第一共享内存中更新每一粒子的信息的过程包括:
通过合力计算板卡在接收到全域控制板卡的触发以及所有区域计算板卡的触发后,基于每一粒子的第一力值和第二力值计算每一粒子的合力。
在一示例性实施例中,在计算完成各粒子受到的第一力值后触发合力计算板卡的过程包括:
在计算完成各粒子受到的第一力值后,将第一力值更新到第一共享内存中的目标时间片,在合力计算板卡的目标寄存器的对应标志位中写入计算完成预设值,以触发合力计算板卡;
在计算完成与自身对应的粒子的第二力值后触发合力计算板卡的过程包括:
在计算完成与自身对应的粒子的第二力值后,将第二力值更新到第一共享内存中的目标时间片,在合力计算板卡的目标寄存器的对应标志位中写入计算完成预设值,以触发合力计算板卡。
在一示例性实施例中,通过合力计算板卡在接收到全域控制板卡的触发以及所有区域计算板卡的触发后,基于每一粒子的第一力值和第二力值计算每一粒子的合力的过程包括:
通过合力计算板卡根据目标寄存器中各个标志位的值均为计算完成预设值后,在第一共享内存的目标时间片中获取每一粒子的第一力值和第二力值,基于每一粒子的第一力值和第二力值计算每一粒子的合力。
在一示例性实施例中,信息计算板卡组还包括位置计算板卡,通过信息计算板卡组从第一共享内存中获取各个粒子的第一力值和第二力值,根据每一粒子的第一力值和第二力值在第一共享内存中更新每一粒子的信息的过程包括:
通过位置计算板卡根据合力计算每一粒子的当前位置,并将当前位置更新到第一共享内存的目标时间片。
在一示例性实施例中,信息计算板卡组还包括速度计算板卡,通过信息计算板卡组从第一共享内存中获取各个粒子的第一力值和第二力值,根据每一粒子的第一力值和第二力值在第一共享内存中更新每一粒子的信息的过程还包括:
通过速度计算板卡当合力计算板卡完成多次合力计算后,基于粒子的第i个合力和粒子的第i+1个合力计算粒子的当前速度,并将当前速度更新到第一共享内存的目标时间片,i为正整数。
在一示例性实施例中,分子动力学模拟方法还包括:
通过中央处理器根据计算高速链路交换模块的第一硬件信息及各个全域处理板卡组、区域处理板卡组及信息计算板卡组对应的第二硬件信息生成并下发计算任务。
在一示例性实施例中,分子动力学模拟方法还包括:
通过中央处理器设置每个计算任务对应的粒子的初始状态、模拟步长以及迭代次数;初始状态包括初始位置和初始速度。
在一示例性实施例中,计算高速链路交换模块包括内部互联的第一类计算高速链路交换机以及内部不互联的第二类计算高速链路交换机;中央处理器、全域处理板卡组及信息计算板卡组均与第一类计算高速链路交换机连接,区域处理板卡组与第二类计算高速链路交换机连接。
第三方面,请参照图12,图12为本发明所提供的一种计算机可读存储介质的结构示意图,计算机可读存储介质70上存储有计算机程序71,所述计算机程序71被处理器执行时实现如上文任意一个实施例所描述的分子动力学模拟方法的步骤。
其中,计算机可读存储介质70包括但不限于U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
对于本发明所提供的一种计算机可读存储介质的介绍请参照上述实施例,本发明在此不再赘述。
本发明所提供的一种计算机可读存储介质具有和上述分子动力学模拟系统具有相同的有益效果。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (20)

1.一种分子动力学模拟系统,其特征在于,包括:
计算高速链路交换模块;
第一共享内存,与所述计算高速链路交换模块连接,以便所述计算高速链路交换模块上连接的全域处理板卡组、区域处理板卡组和信息计算板卡组对所述第一共享内存进行访问;
所述全域处理板卡组,用于当接收到中央处理器下发的计算任务,从所述第一共享内存中获取最新的时间片,基于所述最新的时间片中的全部粒子的信息计算各所述粒子受到的第一力值,将所述第一力值写入所述第一共享内存;所述时间片用于存储所述计算任务在t时刻的粒子的信息;所述第一力值为长程力;
所述区域处理板卡组,所述区域处理板卡组包括多张区域计算板卡,每一所述区域计算板卡用于当接收到所述计算任务,从所述第一共享内存中获取最新的时间片,基于所述最新的时间片中与自身对应的粒子的信息计算与自身对应的粒子受到的第二力值,将所述第二力值写入所述第一共享内存;所述第二力值为近程力;
所述信息计算板卡组,用于从所述第一共享内存中获取各个所述粒子的第一力值和第二力值,根据每一所述粒子的第一力值和第二力值在所述第一共享内存中更新每一所述粒子的信息。
2.根据权利要求1所述的分子动力学模拟系统,其特征在于,所述分子动力学模拟系统还包括第二共享内存,所述计算高速链路交换模块包括相互连接的第一交换机和第二交换机,所述第一共享内存与所述第一交换机连接,所述区域处理板卡组和所述第二共享内存均与所述第二交换机连接,所述全域处理板卡组包括:
全域控制板卡,用于当接收到所述计算任务,从所述第一共享内存读取最新的时间片中的所有粒子的信息,将所有所述粒子的信息写入所述第二共享内存,利用所述第二共享内存中的中间计算数据计算每个所述粒子受到的长程力;
多张全域计算板卡,每张所述全域计算板卡用于从所述第二共享内存中获取所有所述粒子的信息,对所有所述粒子的信息进行处理得到所述中间计算数据,并将所述中间计算数据写入所述第二共享内存。
3.根据权利要求2所述的分子动力学模拟系统,其特征在于,所述全域控制板卡还用于通过插值算法将所有所述粒子的电荷插值到多个正方体的端点上,并计算系数矩阵,多个所述正方体基于对全部所述粒子所在的三维空间划分得到。
4.根据权利要求3所述的分子动力学模拟系统,其特征在于,所述全域控制板卡还用于获取每一所述正方体的端点上的数据,将所述正方体的端点上的数据写入所述第二共享内存。
5.根据权利要求4所述的分子动力学模拟系统,其特征在于,所述全域计算板卡具体用于对所述正方体的端点上的数据进行三维快速傅里叶变换,得到变换结果数据,将所述变换结果数据写入所述第二共享内存,从所述第二共享内存中获取求和结果数据,对所述求和结果数据进行逆三维傅里叶变换,得到逆变换结果数据,将所述逆变换结果数据写入所述第二共享内存;
所述全域控制板卡还用于将所述第二共享内存中的变换结果数据与所述系数矩阵进行求和计算,得到所述求和结果数据,将所述求和结果数据写入所述第二共享内存,从所述第二共享内存获取所述逆变换结果数据,通过逆差值算法对所述逆变换结果数据进行处理,得到各个所述粒子受到的长程力。
6.根据权利要求5所述的分子动力学模拟系统,其特征在于,对所述正方体的端点上的数据进行三维快速傅里叶变换,得到变换结果数据,将所述变换结果数据写入所述第二共享内存的过程包括:
按xyz方向读取所述第二共享内存中的所述正方体的端点上的数据;所述xyz方向为所述正方体的端点上的数据的初始存储方向;
针对x方向,对预设通道数的yz面的数据进行三维快速傅里叶变换得到变换结果数据,将变换结果数据按照yzx方向写入所述第二共享内存;
按所述yzx方向读取所述第二共享内存中的数据;
针对y方向,对所述预设通道数的zx面的数据进行三维快速傅里叶变换得到变换结果数据,将变换结果数据按照zxy方向写入所述第二共享内存;
按所述zxy方向读取所述第二共享内存中的数据;
针对z方向,对所述预设通道数的xy面的数据进行三维快速傅里叶变换得到变换结果数据,将变换结果数据按照xyz的方向写入所述第二共享内存。
7.根据权利要求6所述的分子动力学模拟系统,其特征在于,所述第二共享内存为乒乓内存,所述乒乓内存包括第一缓冲区和第二缓冲区;
按xyz方向读取所述第二共享内存中的所述正方体的端点上的数据的过程包括:
从所述第一缓冲区按xyz方向读取数据;
将所述变换结果数据按照yzx方向写入所述第二共享内存的过程包括:
将所述变换结果数据按照yzx方向写入所述第二缓冲区;
按所述yzx方向读取所述第二共享内存中的数据的过程包括:
从所述第二缓冲区按所述yzx方向读取数据;
将所述变换结果数据按照zxy方向写入所述第二共享内存的过程包括:
将所述变换结果数据按照zxy方向写入所述第一缓冲区;
按所述zxy方向读取所述第二共享内存中的数据的过程包括:
从所述第一缓冲区按所述zxy方向读取数据;
将所述变换结果数据按照xyz的方向写入所述第二共享内存的过程包括:
将所述变换结果数据按照xyz方向写入所述第二缓冲区。
8.根据权利要求5所述的分子动力学模拟系统,其特征在于,所述全域计算板卡包括:
多个通道;
分配模块,用于从所述第二共享内存中获取所述正方体的端点上的数据,将所述数据划分为多组,将各组所述数据一一对应分配给多个所述通道;
与每一通道一一对应连接的计算模块,用于对接收到的所述数据进行三维快速傅里叶变换,得到变换结果数据;
多个寄存器模块,每个所述寄存器模块用于存储所述变换结果数据中的一组一维数据;
多个转置模块,用于对各个所述寄存器模块中的所述一维数据进行转置,将转置后的数据写入所述第二共享内存。
9.根据权利要求1所述的分子动力学模拟系统,其特征在于,基于所述最新的时间片中与自身对应的粒子的信息计算与自身对应的粒子受到的第二力值的过程包括:
确定所述最新的时间片中与自身对应的区域编码;
根据所述区域编码下的粒子编号确定与自身对应的粒子,基于与自身对应的粒子的信息计算与自身对应的粒子受到的第二力值。
10.根据权利要求9所述的分子动力学模拟系统,其特征在于,所述中央处理器还用于配置预设截断半径;
根据所述区域编码下的粒子编号确定与自身对应的粒子,基于与自身对应的粒子的信息计算与自身对应的粒子受到的第二力值的过程包括:
根据所述区域编码确定自身对应的本体区域和设于所述本体区域外周的截断区域;所述截断区域基于所述本体区域和所述预设截断半径确定;
基于所述本体区域和所述截断区域中的任意两个粒子之间的作用力,得到与自身对应的本体区域中的粒子受到的第二力值。
11.根据权利要求10所述的分子动力学模拟系统,其特征在于,任意两个粒子之间的作用力包括成键作用力以及非成键作用力中所述预设截断半径以内的部分。
12.根据权利要求2所述的分子动力学模拟系统,其特征在于,所述信息计算板卡组包括合力计算板卡;
所述全域控制板卡还用于在计算完成各所述粒子受到的第一力值后触发所述合力计算板卡;
所述区域计算板卡还用于在计算完成与自身对应的粒子的第二力值后触发所述合力计算板卡;
所述合力计算板卡,用于在接收到所述全域控制板卡的触发以及所有区域计算板卡的触发后,基于每一所述粒子的所述第一力值和所述第二力值计算每一所述粒子的合力。
13.根据权利要求12所述的分子动力学模拟系统,其特征在于,在计算完成各所述粒子受到的第一力值后触发所述合力计算板卡的过程包括:
在计算完成各所述粒子受到的第一力值后,将所述第一力值更新到所述第一共享内存中的目标时间片,在所述合力计算板卡的目标寄存器的对应标志位中写入计算完成预设值,以触发所述合力计算板卡;
在计算完成与自身对应的粒子的第二力值后触发所述合力计算板卡的过程包括:
在计算完成与自身对应的粒子的第二力值后,将所述第二力值更新到所述第一共享内存中的目标时间片,在所述合力计算板卡的目标寄存器的对应标志位中写入计算完成预设值,以触发所述合力计算板卡。
14.根据权利要求13所述的分子动力学模拟系统,其特征在于,所述合力计算板卡具体用于根据所述目标寄存器中各个标志位的值均为所述计算完成预设值后,在所述第一共享内存的目标时间片中获取每一所述粒子的所述第一力值和所述第二力值,基于每一所述粒子的所述第一力值和所述第二力值计算每一所述粒子的合力。
15.根据权利要求12所述的分子动力学模拟系统,其特征在于,所述信息计算板卡组还包括:
位置计算板卡,用于根据所述合力计算每一所述粒子的当前位置,并将所述当前位置更新到所述第一共享内存的目标时间片。
16.根据权利要求15所述的分子动力学模拟系统,其特征在于,所述信息计算板卡组还包括:
速度计算板卡,用于当所述合力计算板卡完成多次合力计算后,基于所述粒子的第i个合力和所述粒子的第i+1个合力计算所述粒子的当前速度,并将所述当前速度更新到所述第一共享内存的目标时间片,i为正整数。
17.根据权利要求1所述的分子动力学模拟系统,其特征在于,所述中央处理器具体用于根据所述计算高速链路交换模块的第一硬件信息及各个所述全域处理板卡组、所述区域处理板卡组及所述信息计算板卡组对应的第二硬件信息生成并下发计算任务。
18.根据权利要求17所述的分子动力学模拟系统,其特征在于,所述中央处理器还用于设置每个所述计算任务对应的粒子的初始状态、模拟步长以及迭代次数;所述初始状态包括初始位置和初始速度。
19.根据权利要求1-18任意一项所述的分子动力学模拟系统,其特征在于,所述计算高速链路交换模块包括内部互联的第一类计算高速链路交换机以及内部不互联的第二类计算高速链路交换机;
所述中央处理器、所述全域处理板卡组及所述信息计算板卡组均与所述第一类计算高速链路交换机连接,所述区域处理板卡组与所述第二类计算高速链路交换机连接。
20.一种分子动力学模拟方法,其特征在于,应用于如权利要求1-19任意一项所述的分子动力学模拟系统,所述分子动力学模拟方法包括:
通过全域处理板卡组在接收到中央处理器下发的计算任务时,利用计算高速链路交换模块从第一共享内存中获取最新的时间片,基于所述最新的时间片中的全部粒子的信息计算各所述粒子受到的第一力值,将所述第一力值写入所述第一共享内存;所述时间片用于存储所述计算任务在t时刻的粒子的信息;所述第一力值为长程力;
通过区域处理板卡组中的每张区域计算板卡在接收到所述计算任务时,从所述第一共享内存中获取最新的时间片,基于所述最新的时间片中与自身对应的粒子的信息计算与自身对应的粒子受到的第二力值,将所述第二力值写入所述第一共享内存;所述第二力值为近程力;
通过信息计算板卡组从所述第一共享内存中获取各个所述粒子的第一力值和第二力值,根据每一所述粒子的第一力值和第二力值在所述第一共享内存中更新每一所述粒子的信息。
CN202410154209.7A 2024-02-04 2024-02-04 一种分子动力学模拟系统及方法 Active CN117690502B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410154209.7A CN117690502B (zh) 2024-02-04 2024-02-04 一种分子动力学模拟系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410154209.7A CN117690502B (zh) 2024-02-04 2024-02-04 一种分子动力学模拟系统及方法

Publications (2)

Publication Number Publication Date
CN117690502A CN117690502A (zh) 2024-03-12
CN117690502B true CN117690502B (zh) 2024-05-17

Family

ID=90135701

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410154209.7A Active CN117690502B (zh) 2024-02-04 2024-02-04 一种分子动力学模拟系统及方法

Country Status (1)

Country Link
CN (1) CN117690502B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1149736A (zh) * 1995-06-05 1997-05-14 北京航空航天大学 一种分布式存储器共享管理方法
CN105468439A (zh) * 2015-11-19 2016-04-06 华东师范大学 在cpu-gpu异构框架下遍历固定半径内邻居的自适应并行算法
CN109885917A (zh) * 2019-02-02 2019-06-14 中国人民解放军军事科学院国防科技创新研究院 一种并行分子动力学模拟方法及系统
CN111444134A (zh) * 2020-03-24 2020-07-24 山东大学 分子动力学模拟软件的并行pme的加速优化方法及系统
CN112765870A (zh) * 2021-01-20 2021-05-07 中国科学院计算机网络信息中心 一种基于gpu的n体模拟程序性能优化方法
CN114490011A (zh) * 2020-11-12 2022-05-13 上海交通大学 N体模拟在异构架构的并行加速实现方法
CN115440308A (zh) * 2022-10-12 2022-12-06 三星(中国)半导体有限公司 分子动态仿真方法和分子动态仿真装置
CN115741676A (zh) * 2022-10-28 2023-03-07 广东美的智能科技有限公司 多机器人协同工作的控制系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140257769A1 (en) * 2013-03-06 2014-09-11 Nvidia Corporation Parallel algorithm for molecular dynamics simulation

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1149736A (zh) * 1995-06-05 1997-05-14 北京航空航天大学 一种分布式存储器共享管理方法
CN105468439A (zh) * 2015-11-19 2016-04-06 华东师范大学 在cpu-gpu异构框架下遍历固定半径内邻居的自适应并行算法
CN109885917A (zh) * 2019-02-02 2019-06-14 中国人民解放军军事科学院国防科技创新研究院 一种并行分子动力学模拟方法及系统
CN111444134A (zh) * 2020-03-24 2020-07-24 山东大学 分子动力学模拟软件的并行pme的加速优化方法及系统
CN114490011A (zh) * 2020-11-12 2022-05-13 上海交通大学 N体模拟在异构架构的并行加速实现方法
CN112765870A (zh) * 2021-01-20 2021-05-07 中国科学院计算机网络信息中心 一种基于gpu的n体模拟程序性能优化方法
CN115440308A (zh) * 2022-10-12 2022-12-06 三星(中国)半导体有限公司 分子动态仿真方法和分子动态仿真装置
CN115741676A (zh) * 2022-10-28 2023-03-07 广东美的智能科技有限公司 多机器人协同工作的控制系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
使用GPU加速分子动力学模拟中的非绑定力计算;吴强;杨灿群;葛振;陈娟;;计算机工程与科学;20091015(第S1期);全文 *
基于GPU的分子动力学模拟Cell Verlet算法实现及其并行性能分析;张帅;徐顺;刘倩;金钟;;计算机科学;20181015(第10期);全文 *
基于GPU的分子动力学模拟并行化及实现;费辉;张云泉;王可;许亚武;;计算机科学;20110915(第09期);全文 *

Also Published As

Publication number Publication date
CN117690502A (zh) 2024-03-12

Similar Documents

Publication Publication Date Title
LeBeau A parallel implementation of the direct simulation Monte Carlo method
Liu et al. Accelerating molecular dynamics simulations using Graphics Processing Units with CUDA
Wang et al. A massively parallel and scalable multi-GPU material point method
Li et al. Efficient parallelization of the stochastic simulation algorithm for chemically reacting systems on the graphics processing unit
Liu et al. Molecular dynamics simulations on commodity GPUs with CUDA
Röhm et al. Lattice boltzmann simulations on gpus with espresso
Betkaoui et al. A framework for FPGA acceleration of large graph problems: Graphlet counting case study
Xiong et al. Efficient parallel implementation of the lattice Boltzmann method on large clusters of graphic processing units
MacFarland et al. A new parallel P3M code for very large-scale cosmological simulations
Kumar et al. Achieving strong scaling with NAMD on Blue Gene/L
JPH11502958A (ja) 物理プロセスシミュレーションの衝突演算
Zhang et al. Implementation of parallel genetic algorithm based on CUDA
Zhang et al. Gpu-based implementation of finite element method for elasticity using cuda
CN117690502B (zh) 一种分子动力学模拟系统及方法
US11036827B1 (en) Software-defined buffer/transposer for general matrix multiplication in a programmable IC
Waidyasooriya et al. Architecture of an FPGA accelerator for molecular dynamics simulation using OpenCL
Jaros et al. Use of multiple GPUs on shared memory multiprocessors for ultrasound propagation simulations
Chen et al. Large-scale parallel method of moments on CPU/MIC heterogeneous clusters
Iványi CUDA accelerated implementation of parallel dynamic relaxation
Wu et al. Fast parallel cutoff pair interactions for molecular dynamics on heterogeneous systems
JP6666548B2 (ja) 並列計算機、fft演算プログラムおよびfft演算方法
Liang et al. Design of 16-bit fixed-point CNN coprocessor based on FPGA
Chen et al. Gpgpu supported cooperative acceleration in molecular dynamics
Novalbos et al. On-board multi-gpu molecular dynamics
Kerr et al. Gpu performance assessment with the hpec challenge

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant