邻居粒子对搜索、分子动力学计算方法及众核处理系统的制作方法

文档序号:6379623阅读:163来源:国知局
专利名称:邻居粒子对搜索、分子动力学计算方法及众核处理系统的制作方法
技术领域
本发明涉及数据处理领域,特别涉及面向众核处理器的邻居粒子对搜索、分子动力学计算方法及应用该方法的众核处理系统。
背景技术
近年来多核设计逐渐成为高性能发展的趋势和学术研究的热点。多核处理器按照集成方式可以分为同构多核处理器和异构多核处理器。同构多核处理器在一个芯片内集成了多个同构的处理器核,所有处理器核都运行完整的操作系统,面向相同的工作负载。因此,基于同构处理器的程序其设计实现相对简单。目前这一类处理器已经全面推向市场。异构多核处理器在结构设计上与同构多核处理器相比具有完全不同的特性。异构多核处理器的一个芯片内集成了多个异构的处理器核,包括少数功能完备的处理器核,称之为主处理器核(又称主核,如Cell中的PPE,Godson中的Sync Node),主要完成控制密集的操作;以及大量功能受限的核心,我们称之为从处理器核(又称从核,如Cell中的SPE,Godson中的Tile Node),主要完成数据密集的操作。—般来说,一个主核和多个从核构成一个核组,多个核组构成一个完整的芯片。由于完整处理器核的逻辑复杂,受生产工艺的限制同构多核处理器能够集成的处理器核较少(一般为数十个),而异构多核处理器由于从核逻辑功能简单可以集成的处理器核众多(64个以上),所以通常也称异构多核处理器为众核处理器(many-core processor)。分子动力学模拟是高性能计算的重要应用领域,GR0MACS是一款功能强大的开源的分子动力学模拟软件,其研究范围可以包括玻璃和液晶、到聚合物、晶体和生物分子溶液,其在模拟大量分子系统的牛顿运动方面具有极大的优势,由于进行了大量的算法优化,该软件计算性能可达同类软件的3到10倍,但仍然无法满足分子动力学模拟日益发展的计算需求。GR0MACS向众核处理器移植时,进程中的控制密集的操作在主核上进行,计算密集的操作在从核上进行,从而充分发挥从核的高速计算性能,实现进程内的加速。然而,利用现有技术将GR0MACS向众核处理器移植时,存在并行效率低以及数据写冲突等问题。

发明内容
针对上述问题,本发明提供一种面向众核处理器的邻居粒子对搜索方法及分子动力学计算方法、及应用上述方法的众核处理系统,使得众核处理器系统实现进程内的加速运算,进一步缩短了程序运行时间,并解决写冲突的问题。为解决上述问题,本发明实施例提供了一种邻居粒子对搜索方法,适用于配置成执行分子动力学计算的众核处理系统;该方法包括分别以各粒子作为主粒子来建立各粒子的邻居粒子对;其中,对于各主粒子,均在其所处计算区域内的其余粒子中确定该主粒子的邻粒子;
从而在各计算区域内建立该计算区域内所有粒子的邻居粒子对信息。可选地,所述的邻居粒子对搜索方法,还包括在所述邻居粒子对信息中记录主粒子和邻粒子之间相互作用力的计算方式。可选地,所述的邻居粒子对搜索方法,还包括,对于各主粒子,进一步在其所处计算区域边界的粒子中确定该主粒子的邻粒子。可选地,所述的邻居粒子对搜索方法,还包括,在所述邻居粒子对信息中记录主粒子和邻粒子之间相互作用力的计算方式。可选地,所述的邻居粒子对搜索方法,还包括,第一计算方式;第二计算方式。可选地,所述的邻居粒子对搜索方法,还包括,以列表形式记录所述各计算区域内所有粒子的邻居粒子对信息。 本发明实施例还提供一种分子动力学计算方法,适用于众核处理系统;该方法包括分别以各粒子作为主粒子来建立各粒子的邻居粒子对;其中,对于各主粒子,均在其所处计算区域内的其余粒子中确定该主粒子的邻粒子;基于各计算区域内建立的该计算区域内所有粒子的邻居粒子对信息,计算各主粒子的受力。可选地,所述建立邻居粒子对信息还包括记录主粒子和邻粒子之间相互作用力的计算方式。可选地,所述的分子动力学计算方法还包括,以列表形式记录所述各计算区域内所有粒子的邻居粒子对信息。可选地,所述的分子动力学计算方法采用第一计算方式计算各主粒子的受力,所述第一计算方式不采用牛顿第三定律。可选地,所述分别以各粒子作为主粒子来建立各粒子的邻居粒子对还包括对于各主粒子,进一步在其所处计算区域边界的粒子中确定该主粒子的邻粒子。可选地,所述的分子动力学计算方法还包括,以列表形式记录所述各计算区域内所有粒子的邻居粒子对信息。可选地,所述的分子动力学计算方法,对于邻粒子为计算区域边界粒子的各主粒子,采用第二计算方式计算该各主粒子的受力,所述第二计算方式采用牛顿第三定律。本发明实施例还提供一种众核处理系统,适用于分子动力学计算,包括主处理器核和多个从处理器核该众核处理系统包括邻居粒子对搜索模块及计算模块;其中,所述邻居粒子对搜索模块适用于分别以各粒子作为主粒子来建立各粒子的邻居粒子对;其中,对于各主粒子,均在其所处计算区域内的其余粒子中确定该主粒子的邻粒子;所述计算模块基于邻居粒子对搜索模块在各计算区域内建立的该计算区域内所有粒子的邻居粒子对信息,计算各主粒子的受力。可选地,对于各主粒子,所述邻居粒子对搜索模块进一步适用于在其所处计算区域边界的粒子中确定该主粒子的邻粒子。可选地,所述邻居粒子对搜索模块进一步适用于在所述邻居粒子对信息中记录主粒子和邻粒子之间相互作用力的计算方式。
可选地,所述的众核处理系统,还包括邻居列表建立模块,适用于以列表形式记录所述各计算区域内所有粒子的邻居粒子对信息。可选地,所述的众核处理系统,还包括邻居列表分析模块,对于处于计算区域内的邻居粒子对,采用第一计算方式计算该邻居粒子对的各主粒子的受力,所述第一计算方式不采用牛顿第三定律。可选地,所述的众核处理系统,还包括邻居列表分析模块,对于邻粒子为计算区域边界粒子的邻居粒子对,采用第二计算方式计算该邻居粒子对的各主粒子的受力,所述第二计算方式采用牛顿第三定律。与现有技术相比,本发明的实施例具有以下优点I、本发明以主粒子所处计算区域内的其余全部粒子作为邻粒子搜索范围,来确定该主粒子的邻粒子,相比较现有技术,扩大了邻粒子的搜索范围,从而可以在各计算区域内建立该计算区域内所有粒子的邻居粒子对信息,生成重复的邻居粒子对,从而可以不必应 用牛顿第三定律,消除从核间的写冲突。2、本发明进一步以主粒子所处计算区域边界的粒子作为邻粒子搜索范围,改进了现有技术不对邻粒子所处区域(区域内部或区域边界)进行区分的邻居搜索方法,从而有利于根据邻粒子所处的区域采用不同的计算方式。3、本发明在搜索到计算区域内及计算区域边界的所有邻居粒子对之后,基于邻粒子的不同搜索范围进一步建立邻居列表,基于该邻居列表采用不同的非成键力计算方式,具体又包括a.对于处于计算区域内的邻居粒子对,不采用牛顿第三定律计算该邻居粒子对中主粒子和邻粒子之间的相互作用力,因此不需要更新从处理器核上邻粒子的受力,避免了从处理器核的写冲突。b.对于邻粒子为计算区域边界粒子的邻居粒子对,采用牛顿第三定律计算该邻居粒子对的各主粒子的受力,从而确保计算区域边界粒子的受力正确,同时,由于只更新从核上邻粒子的受力,进而由主核统一进行累加更新,这样也避免了从处理器核的写冲突。4、本发明的邻居粒子对的搜索方法,使得计算体系内的大部分粒子的受力计算可以不使用牛顿第三定律,可以在众核系统的从核上并行,充分发挥从核的处理能力,实现了众核处理系统进程内的加速计算。


图I示出了根据现有技术建立的一组邻居列表示意图;图2示出了根据本发明的一实施例提供的一组邻居列表示意图;图3本发明第一实施例提供的一种邻居粒子对搜索方法的流程示意图;图4是本发明第一实施例提供的另一种邻居粒子对搜索方法的流程示意图;图5是本发明第一实施例提供的又一种邻居粒子对搜索方法的流程示意图;图6是本发明的第二实施例提供的一种分子动力学计算方法流程示意图;图7是本发明的第二实施例提供的另一种分子动力学计算方法流程示意图;图8是本发明的第二实施例提供的另一种分子动力学计算方法流程示意图;以及图9是本发明实施例提供的一种众核处理系统的方框示意图。
具体实施例方式发明人根据GR0MACS程序提供的程序各模块运行时间比例分析发现,在进行分子动力学计算时,邻居搜索和力的计算模块占单进程程序总运算时间的近90%以上,而力的计算模块又分为成键力计算和非成键力计算(PME),其中又以非成键力计算为主,并且非成键力计算模块与邻居搜索模块连系最为紧密。在将GR0MACS向众核处理器移植时,非成键力计算模块需要计算体系内所有粒子的受力情况,是GR0MACS程序中计算最为密集的部分,因而首先考虑将多个粒子的受力分布到多个从核上进行并行计算。为了便于理解多个粒子的并行计算,以下将举例说明邻居粒子对及其邻居列表。例如,若i粒子和j粒子是一对邻居(当然,j粒子和i粒子也是一对邻居),则邻居粒子对(i,j)中,i粒子为主粒子,j粒子为邻粒子,可以计算获得i粒子受到的j粒子对i粒子的力;邻居粒子对(j,i)中,j粒子为主粒子,i粒子为邻粒子,可以计算获得j粒子受到的i粒子对j粒子的力;且,邻居粒子对(i,j)和邻居粒子对(j,i)被称为重复的邻居粒子对。·
图I示出了根据现有技术建立的一组邻居列表示意图。参考图1,该邻居列表包括三栏内容,分别是邻居列表名称、邻居粒子对类型和粒子间(主粒子和邻粒子之间)作用力类型。在现有技术的邻居列表中,不会出现重复的邻居粒子对,S卩,邻居粒子对(i,j)或邻居粒子对(j,i)只出现一次,例如,邻居列表中只出现邻居粒子对(i,j)。因此,可以计算得到邻居粒子对(i,j)中i粒子受到的j粒子对i粒子的力,进而,邻居粒子对(j,i)中j粒子受到的i粒子对j粒子的力,需要利用牛顿第三定律,通过邻居粒子对(i,j)中i粒子受到的j粒子对i粒子的力获得。因此,基于现有技术的邻居粒子对搜索方法,需要利用牛顿第三定律并行进行非成键力计算。然而,非成键力计算模块由于牛顿第三定律的应用直接并行会导致并行效率低且存在数据写冲突的问题。具体包括I、按照上述建立的邻居列表,假如k粒子同时是i粒子和j粒子的邻粒子,而i粒子和j粒子的受力计算是分布在不同的从核上进行的,则,当该不同的从核采用牛顿第三定律同时更新k粒子的受力时,会造成k粒子受力数据的写冲突。2、若为了解决上述写冲突的问题,通过修改邻居列表不采用牛顿第三定律,则邻居列表中出现重复的邻居粒子对,即(i,j)和(j,i)。由于并行程序采用计算区域分解的方式,将导致计算区域边界的粒子受力丢失的问题。为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明的具体实施方式
做详细的说明。在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是本发明还可以采用其他不同于在此描述的其它方式来实施,因此本发明不受下面公开的具体实施例的限制。第一实施例参考图3,为解决上述从核间的数据写冲突问题,本发明实施例提供一种邻居粒子对搜索方法,适用于配置成执行分子动力学计算的众核处理系统。作为本发明的一个实施例,该邻居粒子对搜索方法包括分别以各粒子作为主粒子来建立各粒子的邻居粒子对;其中,对于各主粒子,均在其所处计算区域内的其余粒子中确定该主粒子的邻粒子;从而在各计算区域内建立该计算区域内所有粒子的邻居粒子对信息。作为本发明的一个实施例,所述以各粒子作为主粒子来建立各粒子的邻居粒子对,指的是以各计算区域内的全部粒子为主粒子的搜索范围;对于各主粒子,均在其所处计算区域内的其余粒子中确定该主粒子的邻粒子,指的是,除主粒子外,以该主粒子所处计算区域内的其余全部粒子作为该主粒子的邻粒子搜索范围,相比较现有技术,扩大了搜索范围,建立的邻居粒子对信息中包括重复的邻居粒子对。举例而言,若在一包含η个粒子的计算区域内,i粒子和j粒子是一对邻居,则根据本发明的上述邻居粒子对搜索方法,当以i粒子为主粒子进行搜索时,则以该计算区域内除i粒子以外的其余η-I个粒子为搜索范围查找i粒子的邻粒子,可以获得邻居粒子对(i,j);当以j粒子为主粒子进行搜索时,则以该计算区域内除j粒子以外的其余η-I个粒子为搜索范围查找i粒子的邻粒子,可以获得邻居粒子对(j,i),从而建立的邻居粒子对信
息包括重复的邻居粒子对,即包括邻居粒子对(i,j)和邻居粒子对(j,i)。参考图4,图4是本发明第一实施例提供的另一种邻居粒子对搜索方法的流程示意图。进一步地,在各计算区域内建立了邻居粒子对信息后,所述邻居粒子对搜索方法还包括在所述邻居粒子对信息中记录主粒子和邻粒子之间相互作用力的计算方式;以列表形式记录所述各计算区域内所有粒子的邻居粒子对信息。关于建立邻居列表的详细介绍,本文将在第二实施例中进行详细描述。相比较现有技术的邻居粒子对搜索方法,由于只搜索到邻居粒子对(i,j),只能计算得出该邻居粒子对(i,j)中i粒子的受力情况,因此邻居粒子对(j,i)中j的受力情况需要采用牛顿第三定律获得,这样易导致从核间的数据写冲突。本发明实施例中,利用上述方法建立的邻居粒子对信息,该邻居粒子对信息中包括重复的邻居粒子对,即搜索到邻居粒子对(i,j)和邻居粒子对(j,i),因此所述计算方式可以不采用牛顿第三定律,就可以获得主粒子和邻粒子之间的相互作用力,这样避免了由于采用牛顿第三定律导致的从核之间的并行写冲突问题。对于单进程程序,上述邻居粒子对搜索方法可以建立各计算区域内所有粒子的邻居粒子对信息,然而,对于多进程程序,若仍然采用上述邻居粒子对搜索方法则可能会丢失处于计算区域边界粒子的受力。具体而言,单进程程序中,各粒子都处于计算区域内,因此采用上述方法可以建立该计算区域内所有粒子的邻居粒子对信息;对于多进程程序,由于采用区域分解的方式形成多个计算区域,除了处于计算区域内的粒子,还包括处于计算区域边界的粒子,因此,采用上述邻居粒子对搜索方法只能搜索处于计算区域内粒子的邻居,无法搜索到处于计算区域边界粒子的邻居,从而可能会丢失处于计算区域边界粒子的受力。例如,假如i粒子和j粒子是一对邻居,i粒子是处于计算区域内的粒子,j粒子是处于计算区域边界上的粒子,则采用本发明上述方法只能搜索到i粒子的邻粒子j,即找到(i,j)这一邻居粒子对,而无法搜索到(j,i)这一邻居粒子对,则j粒子受到的i粒子对j粒子的力就会发生丢失现象。基于上述问题,本发明实施例进一步提供一种邻居粒子对搜索方法,在完成了第一次搜索——即完成计算区域内的邻居粒子对搜索之后,还包括,第二次搜索,针对处于计算区域边界的粒子进行搜索。本领域人员应该了解的是,上述第一次、第二次搜索是用以区分不同的邻居粒子搜索区域,而不应成为邻居搜索的先后顺序的限制。参考图5,图5是本发明第一实施例提供的又一种邻居粒子对搜索方法的流程示意图。作为本发明的一个实施例,该邻居粒子对搜索方法进一步包括分别以各粒子作为主粒子来建立各粒子的邻居粒子对;对于各主粒子,进一步在其所处计算区域边界的粒子中确定该主粒子的邻粒子。作为本发明的一个实施例,以各计算区域内的全部粒子为主粒子的搜索范围,以计算区域边界的粒子为邻粒子的搜索范围。作为本发明的一个实施例,当搜索包括计算区域边界的粒子时,处于计算区域边界的粒子都是以邻粒子的形式出现。举例而言,在多进程程序的邻居粒子对搜索方法中,若i粒子和j粒子是一对邻居,其中i粒子处于计算区域内,j粒子处于该计算区域的边界,则根据本发明的上述邻居 粒子对搜索方法,以i粒子为主粒子进行搜索,则以该计算区域边界的粒子为搜索范围查找i粒子的邻粒子,可以获得邻居粒子对(i,j)。进一步地,在完成第二次搜索,建立了邻居粒子对信息后,所述邻居粒子对搜索方法还包括在所述邻居粒子对信息中记录主粒子和邻粒子之间相互作用力的计算方式;以列表形式记录所述各计算区域内所有粒子的邻居粒子对信息。由于第二次搜索的邻居粒子对信息中,处于计算区域边界的粒子只以邻粒子的形式出现,因此,本发明实施例中,利用第二次搜索方法建立的邻居粒子对信息,需要采用牛顿第三定律来获得处于计算区域边界的粒子的受力情况。举例而言,通过第二次搜索找到邻居粒子对(i,j),其中i粒子处于计算区域内,j粒子处于该计算区域的边界;而j粒子作为处于计算区域的边界的粒子,不会以主粒子的形式出现,也就是说通过第二次搜索,无法获得邻居粒子对(j,i )。因此,可以通过非成键力计算获得该邻居粒子对(i,j)中i粒子的受力情况,而邻居粒子对(j,i)中j粒子的受力情况,可以通过采用牛顿第三定律获得。综上,本发明以主粒子所处计算区域内的其余全部粒子作为邻粒子搜索范围,来确定该主粒子的邻粒子,相比较现有技术,扩大了邻粒子的搜索范围,从而可以在各计算区域内建立该计算区域内所有粒子的邻居粒子对信息,生成重复的邻居粒子对,从而可以不必应用牛顿第三定律,消除从核间的写冲突。其次,本发明进一步以主粒子所处计算区域边界的粒子作为邻粒子搜索范围,改进了现有技术不对邻粒子所处区域(区域内部或区域边界)进行区分的邻居搜索方法,从而有利于根据邻粒子所处的区域采用不同的计算方式。第二实施例本发明实施例进一步提供一种应用上述邻居粒子对搜索方法的分子动力学计算方法。参考图6,图6是本发明的第二实施例提供的一种分子动力学计算方法流程示意图。作为本发明的一个实施例,该分子动力学计算方法,适用于众核处理系统;该方法包括分别以各粒子作为主粒子来建立各粒子的邻居粒子对;其中,对于各主粒子,均在其所处计算区域内的其余粒子中确定该主粒子的邻粒子;
基于各计算区域内建立的该计算区域内所有粒子的邻居粒子对信息,计算各主粒子的受力。本发明的分子动力学计算方法,首先进行邻居粒子对搜索,获得计算区域内所有粒子的邻居粒子对信息,然后,基于该获得的邻居粒子对信息,计算各主粒子的受力。进一步地,采用第一计算方式计算各主粒子的受力,所述第一计算方式不采用牛
顿第三定律。作为本发明的一个实施例,所述以各粒子作为主粒子来建立各粒子的邻居粒子对,指的是以各计算区域内的全部粒子为主粒子的搜索范围;对于各主粒子,均在其所处计算区域内的其余粒子中确定该主粒子的邻粒子,指的是,除主粒子外,以该主粒子所处计算区域内的其余全部粒子作为该主粒子的邻粒子搜索范围,相比较现有技术,扩大了搜索范围,建立的邻居粒子对信息中包括重复的邻居粒子对。 进一步地,在所述邻居粒子对信息中记录主粒子和邻粒子之间相互作用力的计算方式,并且,以列表形式记录所述各计算区域内所有粒子的邻居粒子对信息。参考图2,图2示出了根据本发明方法提供的一组邻居列表示意图。相比较图1,图2增加了第四栏内容,以及增加了若干行标志为SW的扩展邻居列表。参考图2,该邻居列表包括四栏内容,分别是邻居列表名称、邻居粒子对类型、粒子间(主粒子和邻粒子之间)作用力类型,以及作用力计算方式,在本发明实施例中,所述作用力计算方式包括第一计算方式;第二计算方式,具体是根据邻粒子的所处区域选择“是否应用牛顿第三定律”。作为本发明的一个实施例,图中邻居列表名称一栏,名称后有SW标志的代表该邻居中的邻粒子处于计算区域边界,而名称后无SW标志的代表该邻居中的主粒子和邻粒子都处于计算区域内;邻居粒子对类型一栏,其中enlistATOM表示主粒子和邻粒子均为非水粒子,enliStffATER表示主粒子为水分子,邻粒子为非水粒子,enlistffATERffATER表示主粒子、邻粒子均为水分子;粒子间作用力类型一栏,vdw表示范德华力,coul表示库仑力。基于上述方法搜索到的邻居粒子对,全部是处于计算区域范围内的,因此基于该邻居粒子对信息建立的邻居列表,就如图2所示前十行的邻居列表(即不具有SW标志)。该邻居粒子对信息中包括重复的邻居粒子对,即搜索到邻居粒子对(i,j)和邻居粒子对(j,i ),因此所述计算方式可以不采用牛顿第三定律,就可以获得邻居粒子对(i,j )中i粒子的受力,以及邻居粒子对(j,i)中j粒子的受力。因此,相应于前十行的邻居列表,在图2第四栏“是否应用牛顿第三定律”,记录的是“否”信息,即针对从计算区域内搜索的邻居粒子对,不采用牛顿第三定律计算非成键力,这样避免了由于采用牛顿第三定律导致的并行写冲突问题。如前述第一实施例中所述,如果只搜索处于计算区域内粒子的邻居,对于多进程程序而言,则无法搜索到处于计算区域边界粒子的邻居,导致边界粒子的受力情况丢失的现象。基于上述问题,本发明邻居搜索过程分成两次进行,不仅包括第一次搜索一即在计算区域内进行邻居粒子对搜索,还包括第二次搜索。本领域人员应该了解的是,上述第一次、第二次搜索是用以区分不同的邻居粒子搜索区域,而不应成为邻居搜索的先后顺序的限制。
参考图7,图7是本发明的第二实施例提供的另一种分子动力学计算方法流程示意图。作为本发明的一个实施例,该方法包括分别以各粒子作为主粒子来建立各粒子的邻居粒子对;对于各主粒子,进一步在其所处计算区域边界的粒子中确定该主粒子的邻粒子。进一步地,基于所有粒子的邻居粒子对信息,计算各主粒子的受力;对于邻粒子为计算区域边界粒子的各主粒子,采用第二计算方式计算该各主粒子的受力,所述第二计算方式采用牛顿第三定律。作为本发明的一个实施例,以各计算区域内的全部粒子为主粒子的搜索范围,以计算区域边界的粒子为邻粒子的搜索范围。作为本发明的一个实施例,当搜索包括计算区域边界的粒子时,处于计算区域边界的粒子都是以邻粒子的形式出现。基于上述方法搜索到的邻居粒子对,其邻粒子是处于计算区域边界的粒子,因此 基于该邻居粒子对信息建立的邻居列表,就如图2所示后十行的扩展邻居列表(即具有SW
O因此,相应于后十行的扩展邻居列表,在图2第四栏“是否应用牛顿第三定律”,记录的是“是”信息,即针对邻粒子为计算区域边界粒子的各主粒子,需要采用牛顿第三定律计算非成键力,这样可以正确获得计算区域边界粒子的受力情况。需要说明的是,图2中所提供的一组邻居列表中的格式及内容,是为了更清楚地说明本发明实施例的分子动力学计算方法,本领域技术人员应该了解的是,该邻居列表不应成为对本发明保护范围的限制。参考图8,图8是本发明的第二实施例提供的另一种分子动力学计算方法流程示意图。作为本发明的一个实施例,该方法包括分别以各粒子作为主粒子来建立各粒子的邻居粒子对;其中,对于各主粒子,均在其所处计算区域内的其余粒子中确定该主粒子的邻粒子;对于各主粒子,进一步在其所处计算区域边界的粒子中确定该主粒子的邻粒子;基于各计算区域建立的所有粒子的邻居粒子对信息,计算各主粒子的受力;对于邻粒子处于计算区域内的各主粒子,采用第一计算方式计算各主粒子的受力,所述第一计算方式不采用牛顿第三定律;对于邻粒子为计算区域边界粒子的各主粒子,采用第二计算方式计算该各主粒子的受力,所述第二计算方式采用牛顿第三定律。总而言之,基于本发明邻居粒子对处于不同区域的两次搜索计算区域内的邻居粒子对第一次搜索,以及计算区域边界的邻居粒子对第二次搜索,本发明所建立的邻居列表也相应地包括两部分,即针对第一次搜索建立的邻居列表计算时不应用牛顿第三定律(前十行),以及针对第二次搜索建立的邻居列表计算时应用牛顿第三定律(后十行)。相比较现有技术不对邻粒子所处区域(区域内部或区域边界)进行区分的邻居搜索方法,本发明根据邻粒子所处区域不同(区域内部或区域边界),采用区分的邻居搜索方法,从而有利于根据邻粒子所处的区域采用不同的计算方式,这样,解决了写冲突问题,并且整个计算体系内的大部分粒子的受力计算都不应用牛顿第三定律,使得可充分发挥从核的并行计算能力。第三实施例
本发明实施例还提供一种众核处理系统,适用于执行上述实施例所述的邻居粒子对搜索方法及分子动力学计算。参考图9,图9是本发明实施例提供的一种众核处理系统的方框示意图。作为本发明的一个实施例,该众核处理系统10包括主处理器核(主核)和多个从处理器核(从核),该众核处理系统包括邻居粒子对搜索模块101及计算模块104 ;其中,所述邻居粒子对搜索模块101适用于分别以各粒子作为主粒子来建立各粒子的邻居粒子对;其中,对于各主粒子,均在其所处计算区域内的其余粒子中确定该主粒子的邻粒子;所述计算模块104基于邻居粒子对搜索模块在各计算区域内建立的该计算区域内所有粒子的邻居粒子对信息,计算各主粒子的受力。其中,所述计算模块104计算各主粒子的受力指的是计算邻居粒子对中各主粒子的非成键力。 所述众核处理系统的主核和从核通常具有各自独立的存储空间,每个从核都具有一个相对容量较小、存取速度较快的局部存储器(未图示)。本发明实施例中,邻居粒子对搜索模块101利用上述方法建立的邻居粒子对信息,该邻居粒子对信息中包括重复的邻居粒子对,即搜索到邻居粒子对(i,j)和邻居粒子对(j,i),因此所述计算方式可以不采用牛顿第三定律,就可以获得主粒子和邻粒子之间的相互作用力,这样避免了由于采用牛顿第三定律导致的并行写冲突问题。对于单进程程序,邻居粒子对搜索模块101利用上述邻居粒子对搜索方法可以建立各计算区域内所有粒子的邻居粒子对信息,然而,对于多进程程序,若仍然采用上述邻居粒子对搜索方法则可能会丢失处于计算区域边界粒子的受力。因此,本发明邻居粒子对搜索模块101将邻居搜索过程分成两次进行,不仅包括第一次搜索——即在计算区域内进行邻居粒子对搜索,还包括第二次搜索。本领域人员应该了解的是,上述第一次、第二次搜索是用以区分不同的邻居粒子搜索区域,而不应成为邻居搜索的先后顺序的限制。根据本发明的一个实施例,对于各主粒子,所述邻居粒子对搜索模块101进一步适用于在其所处计算区域边界的粒子中确定该主粒子的邻粒子;所述邻居粒子对搜索模块进一步适用于在所述邻居粒子对信息中记录主粒子和邻粒子之间相互作用力的计算方式。由于第二次搜索的邻居粒子对信息中,处于计算区域边界的粒子只以邻粒子的形式出现,因此,本发明实施例中,利用第二次搜索建立的邻居粒子对信息,需要采用牛顿第三定律来获得处于计算区域边界的粒子的受力情况。所述众核处理系统10还包括邻居列表建立模块102,适用于以列表形式记录所述各计算区域内所有粒子的邻居粒子对信息。总而言之,邻居粒子对搜索模块101基于邻居粒子处于不同区域进行两次搜索,分别包括计算区域内的邻居粒子对第一次搜索,以及计算区域边界的邻居粒子对第二次搜索。本发明所建立的邻居列表也相应地包括两部分,即针对第一次搜索建立的邻居列表计算时不应用牛顿第三定律(前十行),以及针对第二次搜索建立的邻居列表计算时应用牛顿第三定律(后十行),具体请参考图2。作为本发明的一个实施例,当邻居粒子对搜索模块101搜索到的邻居粒子对达到一定数量时(该数量可由用户自行定义),统一由put_in_list函数放入邻居列表中。然而,在众核处理系统中,由于电荷组的循环拆分到多个从核并行处理,多个从核如果同时调用put_in_list函数可能造成邻居列表数据的写冲突。因此,在本发明实施例中,所述邻居粒子对搜索模块101在建立各粒子的邻居粒子对之后,先将邻居搜索结果记录下来,统一由主核写邻居列表的方式,也就是说,所述邻居列表建立模块102是由主核进行控制的。这样做有两个好处首先避免由各个从核同时调用put_in_list函数导致的写冲突问题;其次,由主核控制写操作的顺序,可以保持邻居列表信息与原程序一致,利于并行程序的正确性验证。此外,根据本发明的一个实施例,所述众核处理系统10还包括邻居列表分析模块103,对于处于计算区域内的邻居粒子对,采用第一计算方式计算该邻居粒子对的各主粒子的受力,所述第一计算方式不采用牛顿第三定律;对于邻粒子为计算区域边界粒子的邻居粒子对,采用第二计算方式计算该邻居粒子对的各主粒子的受力,所述第二计算方式采用 牛顿第三定律。由于邻居列表中还包括处于计算区域边界的粒子,为了保持邻居搜索在程序实现上的统一'I"生,本发明实施例进一步在put_in_list函数中增加一个bool参数,该参数用以标志邻粒子是否为边界粒子的情况。所述众核处理系统还可以包括更新模块105,适用于在计算模块104计算各主粒子的受力之后,更新各主粒子的受力。由于第一计算方式不采用牛顿第三定律,因此在该邻居粒子对中只需要计算并更新主粒子的受力,而不会出现各从核间由于利用牛顿第三定律同时更新某个粒子的受力导致的写冲突问题。这种情况下,该更新模块105由从核进行控制的。对于采用牛顿第三定律的扩展邻居列表,只需要在从核的局部存储器中,更新该从核上邻粒子的受力,并由主核统一累加更新,这样也可以避免从核间的数据写冲突问题。这种情况下,该更新模块105由主核进行控制的。举例而言,假使某个处于计算区域边界的k粒子分别是两个粒子,例如i粒子和j粒子的邻粒子,该i粒子和j粒子在不同的从核上处理,那么在利用牛顿第三定律同时更新k粒子的受力时,也是更新不同从核上k粒子的受力,之后再由主核累加更新。关于邻居粒子对搜索模块101及计算模块104的详细介绍,可以进一步参考第一实施例的邻居粒子对搜索方法,以及第二实施例的分子动力学计算方法,在此不予赘述。为进一步说明本发明实施例的有益效果,本发明发明人提供以下实验测试数据及分析并行测试环境为有64个从核的众核处理器,串行测试环境为Intel E5430,由于测试环境与Intel E5430频率不同,测试数据选取时钟周期数即拍数作为比较的单位,结果如下页表I所示。表I:测试数据
权利要求
1.一种邻居粒子对搜索方法,适用于配置成执行分子动力学计算的众核处理系统;其特征在于,该方法包括 分别以各粒子作为主粒子来建立各粒子的邻居粒子对;其中,对于各主粒子,均在其所处计算区域内的其余粒子中确定该主粒子的邻粒子; 从而在各计算区域内建立该计算区域内所有粒子的邻居粒子对信息。
2.如权利要求I所述的邻居粒子对搜索方法,其特征在于,还包括在所述邻居粒子对信息中记录主粒子和邻粒子之间相互作用力的计算方式。
3.如权利要求I所述的邻居粒子对搜索方法,其特征在于,还包括,对于各主粒子,进一步在其所处计算区域边界的粒子中确定该主粒子的邻粒子。
4.如权利要求3所述的邻居粒子对搜索方法,其特征在于,还包括,在所述邻居粒子对信息中记录主粒子和邻粒子之间相互作用力的计算方式。
5.如权利要求4所述的邻居粒子对搜索方法,其特征在于,还包括,第一计算方式;第二计算方式。
6.如权利要求I至5任一项所述的邻居粒子对搜索方法,其特征在于,还包括,以列表形式记录所述各计算区域内所有粒子的邻居粒子对信息。
7.一种分子动力学计算方法,适用于众核处理系统;其特征在于,该方法包括 分别以各粒子作为主粒子来建立各粒子的邻居粒子对;其中,对于各主粒子,均在其所处计算区域内的其余粒子中确定该主粒子的邻粒子; 基于各计算区域内建立的该计算区域内所有粒子的邻居粒子对信息,计算各主粒子的受力。
8.如权利要求7所述的分子动力学计算方法,其特征在于,所述建立邻居粒子对信息还包括记录主粒子和邻粒子之间相互作用力的计算方式。
9.如权利要求8所述的分子动力学计算方法,其特征在于,还包括,以列表形式记录所述各计算区域内所有粒子的邻居粒子对信息。
10.如权利要求7所述的分子动力学计算方法,其特征在于,采用第一计算方式计算各主粒子的受力,所述第一计算方式不采用牛顿第三定律。
11.如权利要求7所述的分子动力学计算方法,其特征在于,所述分别以各粒子作为主粒子来建立各粒子的邻居粒子对还包括 对于各主粒子,进一步在其所处计算区域边界的粒子中确定该主粒子的邻粒子。
12.如权利要求11所述的分子动力学计算方法,其特征在于,还包括,以列表形式记录所述各计算区域内所有粒子的邻居粒子对信息。
13.如权利要求11所述的分子动力学计算方法,其特征在于,对于邻粒子为计算区域边界粒子的各主粒子,采用第二计算方式计算该各主粒子的受力,所述第二计算方式采用牛顿第三定律。
14.一种众核处理系统,适用于分子动力学计算,包括主处理器核和多个从处理器核,其特征在于 该众核处理系统包括邻居粒子对搜索模块及计算模块;其中,所述邻居粒子对搜索模块适用于分别以各粒子作为主粒子来建立各粒子的邻居粒子对;其中,对于各主粒子,均在其所处计算区域内的其余粒子中确定该主粒子的邻粒子;所述计算模块基于邻居粒子对搜索模块在各计算区域内建立的该计算区域内所有粒子的邻居粒子对信息,计算各主粒子的受力。
15.如权利要求14所述的众核处理系统,其特征在于对于各主粒子,所述邻居粒子对搜索模块进一步适用于在其所处计算区域边界的粒子中确定该主粒子的邻粒子。
16.如权利要求15所述的众核处理系统,其特征在于所述邻居粒子对搜索模块进一步适用于在所述邻居粒子对信息中记录主粒子和邻粒子之间相互作用力的计算方式。
17.如权利要求14至16任一项所述的众核处理系统,其特征在于还包括邻居列表建立模块,适用于以列表形式记录所述各计算区域内所有粒子的邻居粒子对信息。
18.如权利要求17所述的众核处理系统,其特征在于还包括邻居列表分析模块,对于处于计算区域内的邻居粒子对,采用第一计算方式计算该邻居粒子对的各主粒子的受力,所述第一计算方式不采用牛顿第三定律。
19.如权利要求17所述的众核处理系统,其特征在于还包括邻居列表分析模块,对于邻粒子为计算区域边界粒子的邻居粒子对,采用第二计算方式计算该邻居粒子对的各主粒子的受力,所述第二计算方式采用牛顿第三定律。
全文摘要
本发明提供一种邻居粒子对搜索方法,适用于配置成执行分子动力学计算的众核处理系统;该方法包括分别以各粒子作为主粒子来建立各粒子的邻居粒子对;其中,对于各主粒子,均在其所处计算区域内的其余粒子中确定该主粒子的邻粒子;从而在各计算区域内建立该计算区域内所有粒子的邻居粒子对信息。本发明还提供一种采用该邻居粒子对搜索方法的分子动力学计算方法及其众核处理系统,本发明针对邻粒子所处不同区域进行区分的邻居搜索方法,从而有利于根据邻粒子所处的区域采用不同的计算方式,充分发挥众核处理系统的从核处理能力。
文档编号G06F17/50GK102945298SQ201210409979
公开日2013年2月27日 申请日期2012年10月24日 优先权日2012年10月24日
发明者张军, 刘桂英, 倪颖杰, 李祖华, 马飞, 李弢 申请人:无锡江南计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1