在多处理器系统上进行分子动力学模拟的方法和装置 【技术领域】
本发明涉及数据处理领域,具体地,涉及在多处理器系统上进行分子动力学模拟的方法和装置。
背景技术
分子动力学模拟的含义是利用计算机模拟分子的运动过程。其是一个重要的HPC(High Performance Computing,高性能计算)应用,经常在调查物质的性质时使用。利用分子动力学模拟,通过在计算机中追踪全部分子的运动规律,能够导出物质全体的性质,从而能够处理分子级别上的问题,这在材料、生物、光学、医学等研究领域都具有实际的意义。
在分子动力学模拟中,为了得到分子的运动轨迹,需要时刻地追踪全部分子的运动,这样,就会存在大量的迭代模拟计算步骤。在分子动力学模拟中,在每一次迭代步骤中,需要分别计算每一个分子的能够表明该分子的当前状态的力、加速度、速度以及位置等属性。
可以理解,在计算上,分子动力学模拟是一项非常庞大的工作,因为将有大量的分子需要模拟,以及大量的模拟步骤需要执行。
在分子动力学模拟中,计算时间的绝大部分都消耗在了计算分子对之间的作用力上,因为在对特定分子进行分子间作用力的计算时,需要考虑该分子的所有周围相邻分子,即需要分别求取这些周围相邻分子与该特定分子之间的作用力,然后对这些作用力进行求和等运算。
在现有的分子动力学模拟方案中,通常都是将需要进行分子动力学模拟的整个物质空间在空间坐标系中划分为M×M×M个立方体小盒子或者长方体的小盒子,以便据此找到相邻分子。也就是说,每一个分子都根据其位置属于一个特定的小盒子。以下说明书中都以M×M×M个立方体小盒子为例进行陈述,但是本领域技术人员可以知道,长方体的小盒子也是类似的。对于M×M×M个立方体小盒子,每一个小盒子的各边的长度等于截断半径,该截断半径是一个预先确定的值。如果两个分子之间的距离大于截断半径,则这两个分子之间的作用力将被忽略。采用这种方式,能够方便分子之间的作用力的计算。
具体地,图1是通常的分子动力学模拟方案的图示说明。如图1所示,在通常的分子动力学模拟方案中,在计算中心小盒子(用灰色表示)中的特定分子的作用力时,需要考虑该中心小盒子周围的26个(上方的9个、下方的9个以及除上下方之外的侧方的8个)小盒子(均未填充颜色)以及该中心小盒子本身共27个小盒子,以找到与该特定分子之间的距离处于截断半径之内的所有相邻分子,来计算各相邻分子与该特定分子之间的作用力之和。即,在通常的方案中考虑:
27个小盒子=26个周围相邻小盒子+中心小盒子自身。
目前存在有多种不同的算法来优化分子间作用力的计算,linkcell方法是其中性能最好的一种。在linkcell方法中,根据牛顿第3定律、即作用力a→b=-作用力b→a,考虑对于两个分子之间的作用力只计算一次。基于这一考虑,在linkcell方法中,在计算一个特定分子的作用力时,通过仅寻找14个小盒子来代替通常方案中的27个小盒子,能够减少几乎一半的计算量。即,在linkcell方法中考虑:
14个小盒子=13个周围相邻小盒子+中心小盒子自身。
具体地,图2是linkcell方法的图示说明。如图2所示,在linkcell方法中,在计算中心小盒子(用深灰色表示)中地特定分子的作用力时,需要考虑其上方以及侧方的共13个(上方的9个以及侧方的4个)小盒子(用浅灰色表示)中的分子。
但是,上述所有的现有分子动力学模拟方案都是在单处理器系统的平台上实现的,在这样的平台上实现,模拟性能是不理想的。
Cell宽频引擎(Cell Broadband Engine,CBE)是一种单芯片多处理器系统。如图3所示,CBE系统具有在一个共享的、相干的主存储器上进行操作的9个处理器,其中包括一个主处理器(Power Processing Unit,PPU)和8个协处理器(Synergistic Processing unit,SPU),各SPU具有256K字节大小的本地存储器,并且各SPU依赖于DMA(Direct MemoryAccess)操作来进行其本地存储器与主存储器之间的数据传输。在这样的系统结构下,CBE能够提供杰出的计算能力。具体来说,Cell处理器在时钟频率3.2GHz的情况下能够达到204G浮点运算数/秒。具有这样高的计算能力,对于具有高计算任务量的分子动力学模拟来说,CBE显然是一个理想的执行平台。
但是,如果将上述现有的分子动力学模拟方案直接应用于CBE这样的多处理器系统,则并不能够得到性能的极大提升,其原因如下。
在现有的分子动力学模拟方案中,各个小盒子的分子数据是分散存储在存储器中的,一个小盒子中的分散存储的分子数据通过链表串接起来。也就是说,每一个小盒子都具有一个与其对应的链表,该链表包含了指向该小盒子中的所有分子数据的存储位置的指针。此外,用一个全局数组来存储全部链表的表头。
并且,在现有的分子动力学模拟方案中,考虑到分子是不断运动的,一个分子可能会从一个小盒子运动到另一个小盒子,甚至是越过相邻小盒子,所以在每一个迭代计算步骤之后都要使分子与小盒子的隶属关系得到调整。这种调整通过调整链表来实现。具体地,使分子数据的存储位置不变,而通过调整链表,将这种与小盒子的隶属关系变化了的分子的数据从原小盒子的链表中移除并链接到新移动到的小盒子的链表中,来体现分子在所模拟的物质空间中的位置变化。
如果对于CBE应用上述方案,则在各SPU从CBE的主存储器获取一个所需的小盒子的分子数据到其本地存储器中以便进行分子间作用力的计算等模拟计算时,由于该小盒子中的分子数据在主存储器中的存储位置是离散的,所以需要利用与该小盒子对应的链表来依次定位该小盒子中的每一个分子数据的存储位置,并依次利用DMA操作将这些分子数据获取到其本地存储器中。这样,由于分子数据是分散存储的,所以每获取一个分子数据就需要进行一次DMA操作,即在一次DMA操作中仅能够获取一个分子数据。这样,各SPU为了获取所需的小盒子的分子数据,需要利用DMA操作重复地进行与主存储器之间的分子数据交换,这样,会导致模拟性能的急剧降低。
因此,需要设计出一种适合于CBE这样的多处理器系统的分子动力学模拟方案。
【发明内容】
鉴于上述问题,本发明提供了一种在多处理器系统上进行分子动力学模拟的方法和装置,以便通过使所模拟的物质空间中的各个小盒子的分子数据分别连续存储在与该小盒子对应的存储区域中,使该多处理器系统中的各加速器能够利用较少的DMA操作从主存储器中获得多个小盒子的分子数据到其本地存储器中,从而减少与主存储器之间的频繁数据交换,提升模拟性能。
根据本发明的一个方面,提供了一种在多处理器系统上进行分子动力学模拟的方法,其中该多处理器系统包括至少一个核心处理器以及多个加速器(accelerator),该方法包括:将需要进行分子动力学模拟的物质空间划分为多个小盒子;以每一个小盒子的分子数据连续存储在与该小盒子对应的存储区域中的方式,将上述多个小盒子的分子数据存储在该多处理器系统的主存储器中;以及以在一次DMA操作中获取至少一个小盒子的分子数据的方式,使上述多个加速器并行地从上述主存储器中重复获取上述多个小盒子的分子数据,并进行分子动力学模拟计算。
根据本发明的另一个方面,提供了一种在多处理器系统中进行分子动力学模拟的装置,其中该多处理器系统包括至少一个核心处理器以及多个加速器,该装置包括:小盒子划分单元,其将需要进行分子动力学模拟的物质空间划分为多个小盒子;分子数据保存单元,其以每一个小盒子的分子数据连续存储在与该小盒子对应的存储区域中的方式,将上述多个小盒子的分子数据存储在该多处理器系统的主存储器中;以及模拟单元,其以在一次DMA操作中获取至少一个小盒子的分子数据的方式,使上述多个加速器并行地从上述主存储器中重复获取上述多个小盒子的分子数据,并进行分子动力学模拟计算。
【附图说明】
相信通过以下结合附图对本发明具体实施方式的说明,能够使人们更好地了解本发明上述的特点、优点和目的。
图1是通常的分子动力学模拟方案的图示说明;
图2是linkcell方法的图示说明;
图3是CBE的系统框图;
图4是根据本发明实施例的在多处理器系统上进行分子动力学模拟的方法的流程图;
图5是图4中的分子数据存储步骤410的详细流程图;
图6是图4中的分子数据获取及分子动力学模拟计算步骤415的详细流程图;
图7、8是图6的过程的图示说明;
图9是图6中的逐层分子数据获取及分子动力学模拟步骤615的详细流程图;
图10-12是图9的过程的图示说明;以及
图13是根据本发明实施例的在多处理器系统中进行分子动力学模拟的装置的方框图。
【具体实施方式】
下面就结合附图对本发明的各个优选实施例进行详细说明。
图4是根据本发明实施例的在多处理器系统上进行分子动力学模拟的方法的流程图。其中,该多处理器系统具有至少一个核心处理器以及多个加速器(accelerator)。具体地,该多处理器系统例如可以是前述具有一个PPU(核心处理器)和8个SPU(加速器)的CBE。
本实施例的在多处理器系统上进行分子动力学模拟的方法,与前述现有的分子动力学模拟方案中使各个小盒子的分子数据分散存储并利用链表将其串接起来的方式不同,所采用的是在该多处理器系统的主存储器中使进行分子动力学模拟的物质空间中的各个小盒子内的分子数据分别连续存储在各个小盒子所对应的存储区域中的方式。
以下说明书中都以M×M×M个立方体小盒子为例进行陈述,但是本领域技术人员可以知道,长方体的小盒子也是类似的。
具体地,如图4所示,本实施例的在多处理器系统上进行分子动力学模拟的方法,首先在步骤405,将需要进行分子动力学模拟的物质空间划分为多个、例如M×M×M个立方体小盒子,其中,该多个立方体小盒子的每一个的各边长度等于预先确定的截断半径。该步骤与前面参照图1、2所描述的现有的方案是同样的。
在步骤410,以每一个小盒子的分子数据连续存储在与该小盒子对应的存储区域中的方式,将上述多个小盒子的分子数据存储在该多处理器系统的主存储器中。对于该步骤,将在后面结合图5进行详细说明。
在步骤415,以在一次DMA操作中获取至少一个小盒子的分子数据的方式,使上述多个加速器并行地从上述主存储器中重复获取上述多个小盒子的分子数据,并进行分子动力学模拟计算。对于该步骤,将在后面结合图6、7进行详细说明。
下面,结合图5详细描述上面图4中的分子数据存储步骤410。图5是根据本发明实施例的该步骤410的详细流程图。
如图5所示,首先,在步骤505,在该多处理器系统的主存储器中,设置与所模拟的物质空间中的上述多个小盒子的数量对应的多个存储区域。其中,每一个存储区域用于存储上述多个小盒子中的一个的分子数据。
具体地,在如上述步骤405中所述将所模拟的物质空间划分为M×M×M个立方体小盒子的情况下,在该步骤505,在该多处理器系统的主存储器中设置M×M×M个存储区域,以分别存储该M×M×M个小盒子的分子数据。
此外,在一个优选实施例中,在该步骤中,在主存储器中连续地设置上述多个存储区域。
此外,由于如上所述分子是不断运动的,一个分子可能会从一个小盒子运动到另一个小盒子,所以相应地,一个小盒子中的分子数目也是变化的。为此,在该步骤中,将上述多个存储区域的每一个设定得足够大,以便即使在其相应的小盒子中的分子数目发生变化时,该存储区域也能够完全存储该小盒子中的全部分子数据。具体地,可以预先设定一个小盒子中最大可能的分子数目,然后根据该最大可能的分子数目来设定该多个存储区域的每一个的大小。此外,优选地,该多个存储区域的大小是相同的。
在步骤510,确定上述多个小盒子与上述多个存储区域的对应关系。
在一个实施例中,可以为上述多个小盒子设置在空间坐标系中的相对位置坐标,并通过该相对位置坐标确定上述多个小盒子与上述多个存储区域的对应关系。
具体地,参照图1,可以将所模拟的物质空间中位于空间坐标系原点的小盒子的相对位置坐标设置为(x=0,y=0,z=0),并且沿x轴的正方向使小盒子的x坐标依次递增,例如将x轴正方向上的第二个小盒子的坐标设置为(x=1,y=0,z=0),依此类推;此外,沿y轴的正方向使小盒子的y坐标依次递增,例如将y轴正方向上的第二个小盒子的坐标设置为(x=0,y=1,z=0),依此类推;再者,沿z轴的正方向使小盒子的z坐标依次递增,例如将z轴正方向上的第二个小盒子的坐标设置为(x=0,y=0,z=1),依此类推。
然后,在上述相对位置坐标的基础上,并且在如上所述所模拟的物质空间被划分为M×M×M个立方体小盒子的情况下,根据下式(1)将坐标为(x,y,z)的小盒子与上述多个存储区域中其相应的存储区域对应起来:
Index=x+M×y+M2×z (1)
其中,Index指示该坐标为(x,y,z)的小盒子所对应的存储区域的顺序号。即,根据Index,能够确定与坐标为(x,y,z)的小盒子对应的存储区域是上述多个(在此情况下是M×M×M个)存储区域中、从初始地址开始的第Index个存储区域。
具体地,参照图1,假设所模拟的物质空间被划分为3×3×3(即M=3)个小盒子,则可以将位于空间坐标系原点的小盒子的相对位置坐标确定为(x=0,y=0,z=0),从而根据上式(1),能够确定该小盒子所对应的存储区域的顺序号为Index=x+M×y+M2×z=0+3×0+32×0=0。此外,可以将x轴正方向上紧接着的第二个小盒子的坐标设置为(x=1,y=0,z=0),从而根据上式(1),能够确定该小盒子所对应的存储区域的顺序号为Index=x+M×y+M2×z=1+3×0+32×0=1,依此类推;此外,可以将y轴正方向上的第二个小盒子的坐标设置为(x=0,y=1,z=0),从而根据上式(1),能够确定该小盒子所对应的存储区域的顺序号为Index=x+M×y+M2×z=0+3×1+32×0=3,依此类推;再者,可以将z轴正方向上的第二个小盒子的坐标设置为(x=0,y=0,z=1),从而根据上式(1),能够确定该小盒子所对应的存储区域的顺序号为Index=x+M×y+M2×z=0+3×0+32×1=9,依此类推。
此外,根据上述小盒子在空间坐标系中的相对位置坐标,还能够确定各个小盒子之间的相邻关系。例如,能够确定坐标为(x=1,y=0,z=0)的小盒子是坐标为(x=0,y=0,z=0)的小盒子的右侧相邻小盒子,坐标为(x=0,y=1,z=0)的小盒子是坐标为(x=0,y=0,z=0)的小盒子的正上方相邻小盒子。
以上小盒子与存储区域的对应关系以及小盒子之间的相邻关系,在各加速器为进行分子动力学模拟计算而获取相关的多个小盒子时,是要应用到的,所以如果能够根据小盒子的坐标直接确定这些关系,则对于各加速器而言将是非常便利的。
以上虽然说明了利用小盒子的相对位置坐标来确定小盒子与存储区域的对应关系的情况,但是并不限于此,也可以直接为上述多个小盒子以及多个存储区域设置相对应的编号,以便按照编号将该多个小盒子与上述多个存储区域一一对应。
在步骤515,按照上述多个小盒子与上述多个存储区域的对应关系,将该多个小盒子的分子数据分别存储到上述多个存储区域中各自相应的存储区域中。其中,每一个小盒子的分子数据在与该小盒子对应的存储区域中是连续存储的。
此外,在一个实施例中,在上述多个存储区域的各个的开头,指示该存储区域中所存储的分子数据的数量,即该存储区域所对应的小盒子中的分子数目,以便利上述多个加速器中相应的加速器对该存储区域中的数据的访问。
以上,就是对图5的分子数据存储过程的详细描述。
下面,结合图6、7详细描述上面图4的方法中的分子数据获取及分子动力学模拟计算步骤415。图6是根据本发明实施例的该步骤415的详细流程图,图7、8是图6的过程的图示说明。
如图6所示,首先在步骤605,根据上述多个加速器的数量,将上述多个小盒子划分为相应的多个部分。其中每一个部分包括多层小盒子。
具体地,如图7所示,在该步骤中,沿空间坐标系的z轴方向,将上述多个小盒子划分为多个部分。
此外,在一个实施例中,根据负载平衡原则,将上述多个小盒子划分为均等的多个部分。也就是说,在如上所述所模拟的物质空间被划分为M×M×M个小盒子、加速器的数量为m的情况下,将该多个小盒子沿z轴划分为与加速器的数量对应的多个部分,每一个部分包括M/m层的小盒子。
需要说明的是,在图7中,是沿z轴方向来进行划分的,但是,划分方式并不仅限于此,而也可以沿x轴或y轴将上述多个小盒子划分为与加速器的数量对应的多个部分等。
在步骤610,如图7所示,将上述多个部分分配给上述多个加速器,以使每一个加速器负责处理其中的一个部分。
在步骤615,使上述多个加速器并行地对于各自的部分,以在一次DMA操作中获取至少一个小盒子的分子数据的方式,逐层获取分子数据并进行分子动力学模拟计算,其中该多个加速器在并行处理中相互之间始终隔着多层小盒子。
如上所述,由于分子是不断运动的,一个分子可能会从一个小盒子运动到另一个小盒子,所以需要在每一个迭代计算步骤之后对分子与小盒子的隶属关系进行调整。在本实施例中,由于如上所述每一个小盒子中的分子数据是连续存储在与该小盒子对应的存储区域中的,所以在进行分子与小盒子的隶属关系的调整时,可以通过在各个小盒子所对应的存储区域之间直接移动分子数据来实现。
但是,当在多个加速器上并行地进行分子动力学模拟的情况下,若两个不同的加速器上的小盒子在所模拟的物质空间上相互距离太近,则如图8所示有可能会产生这些小盒子中的分子运动到同一目标小盒子中,从而这两个加速器需要同时使用该目标小盒子的分子数据进行模拟计算之后的调整的情况,这样就会产生数据冲突。
在本实施例中,通过采取上述各包含多层小盒子的多个部分的划分方式并使各个加速器在并行处理中相互之间始终隔开多层小盒子,来避免在分子与小盒子的隶属关系的调整时可能出现的上述数据冲突的情况。
具体地,在本实施例中,如图7所示,在沿空间坐标系的z轴方向将上述多个小盒子划分为多个部分的情况下,为了使各个加速器在并行处理时相互隔开多层小盒子,可以使各个加速器对于其各自的部分,按照相同的层顺序,例如沿z轴从下到上或从上到下,逐层小盒子地进行分子数据的获取以及分子动力学模拟计算。
这样,在该多个加速器获取各自的第一层小盒子的分子数据时,这些第一层相互之间便隔着多层小盒子,从而由于该多个加速器按照相同的层顺序进行并行处理,所以这种分隔状态能够始终保持,即各个加速器所并行处理的层相互之间始终能够隔着多层小盒子。
这样,便能够避免当前位于不同的加速器上的两个小盒子在物质空间上的距离过近,从而引起数据冲突的情况。
此外,在采取其他的划分方式,例如沿x轴或y轴将上述多个小盒子划分为多个部分的情况下,也可以依此来实现。
下面,结合图9-12详细描述上面图6中的逐层分子数据获取及模拟计算步骤615。图9是根据本发明实施例的、以一个加速器为例的该步骤615的详细流程图,图10-12是图9的过程的图示说明。
需要说明的是,如前面针对linkcell方法所描述的,在对某一中心小盒子中的分子进行分子间作用力的计算等模拟计算时,要考虑、从而获取该中心小盒子本身以及该中心小盒子的上方以及侧方的13个相邻小盒子共14个小盒子中的分子数据。
相对于此,在图9的过程中,在进行中心小盒子的模拟计算时,并不仅获取与该模拟计算相关的14个单个的小盒子,而是获取这14个小盒子分别所在的整个条带的分子数据。也就是说,在图9的过程中,是以条带为单位,逐个层中的逐个条带地来获取分子数据并进行分子动力学模拟计算的。
具体地,如图9所示,首先在步骤905,将由多个小盒子划分而成的上述多个部分中,分配给当前加速器的部分中的第一层设定为当前处理的层。其中,可以将该部分中沿z轴正方向上的最底层作为第一层,使该加速器沿z轴正方向逐层进行处理,也可以将z轴正方向上的最顶层作为第一层,使该加速器沿z轴反方向逐层进行处理。
在步骤910,将上述当前处理的层划分为多栏。
具体地,参照图10,在该步骤中,沿着空间坐标系中的x轴,将该当前处理的层划分为多栏。
在该步骤中,之所以将当前处理的层划分为多栏,是考虑到在多处理器系统中通常存在加速器的本地存储器大小限制的问题。例如,在CBE中,每个SPU的本地存储器容量仅是256K。在此情况下,由于所模拟的物质空间中的一层小盒子通常包括大量的分子数据,各加速器的本地存储器容量通常是远远不够的,所以就需要逐一地获取该层中的部分分子数据来进行处理。
从而,在本实施例中,将当前处理的层沿x轴划分为多栏,以便如图9所示,逐个栏来进行分子数据的处理。其中,该多栏的栏长度、即一栏中x轴方向上的小盒子的数量,依该多处理器系统中加速器的本地存储器容量以及一个小盒子中所包含的分子数量来确定。
在步骤915,将当前处理的层中的第一栏设定为当前栏。
在步骤920,使该加速器对于当前栏中要进行分子动力学模拟计算的条带(以下,称为中心条带),以在一次DMA操作中获取至少一个小盒子的分子数据的方式,获取与该条带的分子动力学模拟计算有关的多个条带的分子数据到其本地存储器中。其中,所谓一个条带,如图9、10所示,是一栏中x轴方向上的一行小盒子。
具体地,如图11、12所示,假设当前要进行模拟计算的中心小盒子位于条带0上,则由于与该中心小盒子的模拟计算有关的上方以及侧方的13个相邻小盒子分别位于该条带0的上方以及侧方的条带1-4上,所以在本实施例中,使该加速器将条带1-4与条带0(中心条带)一同整个条带地获取到其本地存储器中。
由此,可以理解,在当前栏中的第一个条带作为要进行分子动力学模拟计算的中心条带的情况下,需要获取该中心条带本身、该条带的下一条带、该条带上方相邻的3个条带共5个条带的分子数据到该加速器的本地存储器中。并且,本领域的技术人员可以理解,由于该第一个条带处于当前层的边界,所以作为该条带的上方相邻的三个条带之一,将使用该中心条带的上一层的、与该中心条带所在的一边相对的另一边上的条带。并且,对于在模拟计算中所存在的所有类似边界问题,都是类似来进行处理的。
此外,在要进行分子动力学模拟计算的中心条带并不是当前栏中的第一个条带的情况下,并不需要使加速器重新获取所有与该条带的分子动力学模拟计算有关的5个条带的分子数据到其本地存储器中,因为已经有部分条带在前一条带的分子动力学模拟计算中被存储在了该加速器的本地存储器中,而仅需要获取这5个条带中还未存储在该加速器的本地存储器中的条带即可。即,仅需要获取该中心条带的下一相邻条带以及该中心条带的上方的下一条带即可。
此外,在本实施例中,由于每一个小盒子中的分子数据都是连续存储在与该小盒子对应的存储区域中的,所以在获取分子数据时,一个小盒子中的分子数据能够在一次DMA操作中全部被获取到加速器的本地存储器中。从而,在本步骤中,可以以在一次DMA操作中获取一个小盒子的方式,使该加速器获取所需的多个条带。
进而,在如图5的步骤505中所述的那样,所模拟的物质空间中的多个小盒子所对应的存储区域在主存储器中连续地设置,即该多个小盒子连续地存储在主存储器中的情况下,利用一次DMA操作能够获取相邻的多个小盒子的分子数据。从而,在本步骤中,可以以在一次DMA操作中获取多个小盒子的方式,使该加速器获取所需的多个条带。
再者,在如图5的步骤510中所描述的那样为所模拟的物质空间中的小盒子设置相对位置坐标并利用该相对位置坐标将各个小盒子与其存储区域对应起来的情况下,由于x轴方向上的一行小盒子所对应的存储区域是连续的,所以能够利用一次DMA操作获取这一行小盒子或这一行小盒子中的一部分、即一个条带的分子数据到加速器的本地存储器中。从而,在本步骤中,可以以在一次DMA操作中获取由多个小盒子构成的一个条带的方式,使该加速器获取所需的多个条带。在此过程中,可以根据小盒子的相对位置坐标,来定位与中心条带相关的上方及侧方的条带,进而获取这些条带的分子数据。
进而,在该步骤中,使上述加速器根据前面确定的上述多个小盒子与上述多个存储区域的对应关系,来获取上述多个条带的分子数据。
接着,在步骤925,该加速器利用其本地存储器中所存储的上述多个条带的分子数据,进行中心条带的分子数据的分子动力学模拟计算。在该步骤中,利用这多个条带的分子数据,完成该中心条带上的所有小盒子的分子动力学模拟计算。也就是说,对于该中心条带上的所有小盒子,依次利用这多个条带中的相关小盒子的分子数据来进行分子动力学模拟计算。
在步骤930,判断当前栏中是否所有条带均经过了分子动力学模拟计算,如果是,则转到步骤940,否则,前进到步骤935。
在步骤935,将当前栏中上述中心条带的下一条带设定为要进行分子动力学模拟计算的中心条带,并返回到步骤920,继续处理该下一条带。
在步骤940,判断当前层中是否还有未处理的栏,如果有,则前进到步骤945,否则转到步骤950。
在步骤945,将该当前栏的下一栏设定为要进行处理的栏。接着,返回到步骤920,继续处理该下一栏。
在步骤950,判断分配给该加速器的部分中是否还有未处理的层,如果有,则前进到步骤955,否则该过程结束。
在步骤955,设定下一个要进行处理的层。在各加速器对于分配给其的部分,在z轴方向上从最底层开始向上逐层进行处理的情况下,将当前处理的层的上方的层设定为下一个要进行处理的层,在从最顶层开始向下逐层进行处理的情况下,将下方的层设定为下一个要进行处理的层。
接着,返回到步骤910,继续处理该下一层。
以上,就是对图9的逐层分子数据获取及模拟计算过程的详细描述。
需要说明的是,在图9的过程中,虽然包括了将当前处理的层划分为多栏的步骤,但可以理解,该步骤是考虑到加速器的本地存储器容量的限制才执行的,在各加速器的本地存储器容量允许的情况下,当然也可以不执行该步骤,即不将当前处理的层划分为多栏,而将该层作为整体来进行处理。
此外,在图9的过程中,虽然在将当前处理的层划分为多栏时所说明的是沿着空间坐标系的x轴进行划分的情况,但是,并不限于此,也可以采用其他的划分方式,例如将当前处理的层沿着空间坐标系的y轴划分为多栏等。
此外,虽然在图9中说明了各加速器在进行模拟计算时获取多个条带的分子数据的情况,但是,并不限于此,也可以如现有技术中那样,对于中心小盒子的分子动力学模拟计算,仅获取与该模拟计算有关的14个小盒子的分子数据。
以上就是对本实施例的在多处理器系统上进行分子动力学模拟的方法的详细描述。在本实施例中,通过使所模拟的物质空间中的每一个小盒子的分子数据连续存储在与该小盒子对应的存储区域中,能够使各加速器利用较少的DMA操作从主存储器中获得多个小盒子的分子数据到其本地存储器中,从而减少与主存储器之间的频繁数据交换。进而,通过使所模拟的物质空间中的多个小盒子按照位置关系连续存储,能够使各加速器在一次DMA操作中获取由多个小盒子组成的一个条带的分子数据到其本地存储器中,从而按照条带来进行分子动力学模拟,这样能够进一步减少与主存储器之间的数据交换。从而,相对于前述现有的分子动力学模拟方案,本实施例的分子动力学模拟方法能够提高计算时间对数据传输时间的比率,从而提高模拟性能。
在同一发明构思下,本发明提供一种在多处理器系统中进行分子动力学模拟的装置。下面结合附图对其进行描述。
图13是根据本发明实施例的在多处理器系统中进行分子动力学模拟的装置的方框图。其中,该多处理器系统具有至少一个核心处理器以及多个加速器。具体地,该多处理器系统例如可以是前述具有一个PPU(核心处理器)和8个SPU(加速器)的CBE。
具体地,如图13所示,本实施例的在多处理器系统中进行分子动力学模拟的装置10包括:小盒子划分单元11、分子数据保存单元12、多个部分划分单元13、分配单元14以及模拟单元15。
小盒子划分单元11将需要进行分子动力学模拟的物质空间划分为多个立方体的小盒子。
分子数据保存单元12以每一个小盒子的分子数据连续存储在与该小盒子对应的存储区域中的方式,将上述多个小盒子的分子数据存储在该多处理器系统的主存储器中。
如图13所示,分子数据保存单元12进一步包括:存储区域设置单元121、对应关系确定单元122以及保存单元123。
存储区域设置单元121在上述多处理器系统的主存储器中,设置与上述多个小盒子的数量对应的多个存储区域。在一个优选实施例中,存储区域设置单元121在该主存储器中连续地设置该多个存储区域。
对应关系确定单元122确定上述多个小盒子与上述多个存储区域的对应关系。在一个优选实施例中,对应关系确定单元122为该多个小盒子设置在空间坐标系中的相对位置坐标,并且通过相对位置坐标的计算,确定该多个小盒子与上述多个存储区域的对应关系。
保存单元123以每一个小盒子的分子数据连续存储在与该小盒子对应的存储区域中的方式,按照上述多个小盒子与上述多个存储区域的对应关系,将该多个小盒子的分子数据分别存储到上述多个存储区域。
多个部分划分单元13根据上述多个加速器的数量,将上述多个小盒子划分为相应的多个部分,其中每一个部分包括多层小盒子。
分配单元14将上述多个部分分配给上述多个加速器,以使每一个加速器处理其中的一个部分。
模拟单元15以在一次DMA操作中获取至少一个小盒子的分子数据的方式,使上述多个加速器并行地从上述主存储器中重复获取上述多个小盒子的分子数据,并进行分子动力学模拟计算。
具体地,模拟单元15使上述多个加速器并行地对于各自的部分,以在一次DMA操作中获取至少一个小盒子的分子数据的方式,逐层获取分子数据并进行分子动力学模拟计算,其中该多个加速器在并行处理中相互之间始终隔着多层小盒子。进一步地,模拟单元15使该多个加速器并行地对于各自的部分,逐个层中的逐个条带地获取分子数据并进行分子动力学模拟计算,其中一个条带包含多个小盒子。
如图13所示,模拟单元15进一步包括:分子数据获取单元151以及模拟计算单元152。
分子数据获取单元151使上述多个加速器并行地对于各自的部分,从第一层开始逐层地:对于当前层中的各个条带,以在一次DMA操作中获取至少一个小盒子的分子数据的方式,获取与该条带的分子动力学模拟计算有关的多个条带的分子数据到本地存储器中。并且,分子数据获取单元151使上述多个加速器分别根据前面确定的上述多个小盒子与上述多个存储区域的对应关系,来获取其各自的多个条带的分子数据。
模拟计算单元152使上述多个加速器并行地,利用其本地存储器中存储的上述多个条带的分子数据,进行分子动力学模拟计算。
在一个实施例中,该模拟单元15还包括可选的栏划分单元153,其根据上述多个加速器的本地存储器容量以及上述多个小盒子中的分子数目,对于上述多个加速器的每一个,将其当前处理的层划分为多栏。
在此情况下,分子数据获取单元151以及模拟计算单元152,使上述多个加速器并行地对于其多栏的每一个中的各个当前条带,以在一次DMA操作中获取至少一个小盒子的分子数据的方式,获取与该条带的分子动力学模拟计算有关的多个条带的分子数据到本地存储器中,并利用该多个条带的分子数据进行该当前条带的分子动力学模拟计算。
在一个优选实施例中,每一个条带中的各个小盒子所对应的存储区域在主存储器中是连续地设置的。
在此情况下,模拟单元15使上述多个加速器并行地对于各自的部分,以在一次DMA操作中获取一个条带的分子数据的方式,逐个层中的逐个条带地获取分子数据并进行分子动力学模拟计算。
以上就是对本实施例的在多处理器系统中进行分子动力学模拟的装置的详细描述。其中,该装置10及其各个组成部分,可以由专用的电路或芯片构成,也可以通过计算机(处理器)执行相应的程序来实现。
本发明还提供一种程序产品,包含在多处理器系统上实现以上所有方法的程序代码以及承载该程序代码的承载介质。
以上虽然通过一些示例性的实施例对本发明的在多处理器系统上进行分子动力学模拟的方法和装置进行了详细的描述,但是以上这些实施例并不是穷举的,本领域技术人员可以在本发明的精神和范围内实现各种变化和修改。因此,本发明并不限于这些实施例,本发明的范围仅以所附权利要求为准。