CN111429974A - 超级计算机平台上的分子动力学模拟短程力并行优化方法 - Google Patents
超级计算机平台上的分子动力学模拟短程力并行优化方法 Download PDFInfo
- Publication number
- CN111429974A CN111429974A CN202010211397.4A CN202010211397A CN111429974A CN 111429974 A CN111429974 A CN 111429974A CN 202010211397 A CN202010211397 A CN 202010211397A CN 111429974 A CN111429974 A CN 111429974A
- Authority
- CN
- China
- Prior art keywords
- cache
- data
- core
- memory
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16C—COMPUTATIONAL CHEMISTRY; CHEMOINFORMATICS; COMPUTATIONAL MATERIALS SCIENCE
- G16C10/00—Computational theoretical chemistry, i.e. ICT specially adapted for theoretical aspects of quantum chemistry, molecular mechanics, molecular dynamics or the like
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Spectroscopy & Molecular Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开提供了一种超级计算机平台上的分子动力学模拟短程力并行优化方法,将分子动力学应用中的多个相邻粒子放在一个组中,形成一个粒子包,实现数据聚集;确认缓存是否命中,如果缓存命中,只更新写缓存中的作用力数据,如果缓存未命中,把相应行中的原始数据放到主核内存中,并从主核内存中的获取需要的缓存行的数据,进行作用力数据的更新,并利用从核在其副本中记录每个缓存行的更新状态;将粒子包中的不同粒子的相同的位置元素改为连续,每个从核在主存中保留临时内存以存储由相应从核计算的邻居列表,将通过收集所有这些邻居列表来形成邻接表,将不同从核的邻居列表作为配对列表连接,完成优化。
Description
技术领域
本公开属于分子动力学模拟优化技术领域,涉及一种超级计算机平台上的分子动力学模拟短程力并行优化方法。
背景技术
本部分的陈述仅仅是提供了与本公开相关的背景技术信息,不必然构成在先技术。
GROMACS是一个非常流行的分子动力学应用,主要用于模拟蛋白质、脂质和核酸等生物分子之间存在着的复杂化学键和键合相互作用。由于GROMACS提供了极好的非键合作用力模拟能力,越来越多的研究组织开始使用GROMACS模拟聚合物等非生物分子体系。GROMACS支持几乎所有常见的分子动力学模拟算法,并且具有高性能,易用,开源,辅助工具丰富等特点,使其成为了分子动力学应用的佼佼者之一。
长期以来,人们迫切希望在超级计算机上加速GROMACS。但是,对于异构众核的超级计算机来说,一般主核与单个从核的计算能力相当,而主核与从核阵列相比计算能力较弱;其次对于小数据量的访存来说,直接内存访问的带宽较低;相比于传统CPU,从核没有缓存架构,每个从核的局部存储空间非常小,这些都构成了将GROMACS移植到超级计算机平台上的诸多限制。
发明内容
本公开为了解决上述问题,提出了一种超级计算机平台上的分子动力学模拟短程力并行优化方法,本公开能够把分子动力学应用GROMACS在超级计算机平台上进行加速,且具有很好的性能和扩展性。
根据一些实施例,本公开采用如下技术方案:
一种超级计算机平台上的分子动力学模拟短程力并行优化方法,包括:
将分子动力学应用中的多个相邻粒子放在一个组中,形成一个粒子包,实现数据聚集;
将索引ID分解,将缓存行的标记与原始行的标记进行比较,如果相同,则缓存命中,如果该标记与原始标记不同,则缓存未命中;
计算位置的标签和缓存行,如果缓存命中,只更新写缓存中的作用力数据,如果缓存未命中,把相应行中的原始数据放到主核内存中,并从主核内存中的获取需要的缓存行的数据,进行作用力数据的更新,并利用从核在其副本中记录每个缓存行的更新状态;
将粒子包中的不同粒子的相同的位置元素改为连续,每个从核在主存中保留临时内存以存储由相应从核计算的邻居列表,将通过收集所有这些邻居列表来形成邻接表,将不同从核的邻居列表作为配对列表连接,完成优化。
作为可选择的实施方式,在分子动力学应用中,每四个相邻粒子放在一个组中,并且总是同时计算同一组中的粒子,将四个粒子的所有数据集中在一个结构中,称之为一个粒子包。
作为可选择的实施方式,缓存是否命中以平均内存访问时间作为衡量标准。
作为可选择的实施方式,将局部设备内存中的部分空间作为读缓存,使用直接映射缓存策略,将缓存行号和缓存行的长度设为2的幂数。
作为可选择的实施方式,将索引ID分解为标签号,行号和偏移号,标签号表示主核中缓存行的唯一ID,行号是从核中的缓存行索引,偏移数是缓存行中粒子的地址,将缓存行的标记与原始行的标记进行比较,如果它们相同,则意味着缓存行命中,如果该标记与原始标记不同,则缓存未命中。
作为可选择的实施方式,如果缓存未命中,从核更新主存中的作用力并获取主存中该粒子的作用力。
作为可选择的实施方式,如果缓存未命中,让每个从核维护一定大小的局部存储作为更新缓冲,用来累积每个粒子的受力变化,在更新缓冲区中,每个粒子都将映射到一个特定的地址,每个粒子的作用力变化将首先累积在更新缓冲区而不是直接在主存中更新,主存中作用力的更新只会占用更新缓冲区中的一个粒子被另一个粒子替换的时间,实现延迟更新。
作为可选择的实施方式,如果缓存未命中,将相应缓存行中的原始数据放到主核内存中,并从主核内存中的获取所需要的缓存行的数据,然后更新。
作为可选择的实施方式,使用直接映射缓存方法实现延迟更新。
作为可选择的实施方式,将外循环中的每个粒子包向量化并与内循环中的粒子进行短程力的计算。
一种超级计算机平台上的分子动力学模拟短程力并行优化***,包括:
数据聚集模块,被配置为将分子动力学应用中的多个相邻粒子放在一个组中,形成一个粒子包,实现数据聚集;
读取模块,被配置为将索引ID分解,将缓存行的标记与原始行的标记进行比较,如果相同,则缓存命中,如果该标记与原始标记不同,则缓存未命中;
更新模块,被配置为计算位置的标签和缓存行,如果缓存命中,只更新写缓存中的作用力数据,如果缓存未命中,把相应行中的原始数据放到主核内存中,并从主核内存中的获取需要的缓存行的数据,进行作用力数据的更新,并利用从核在其副本中记录每个缓存行的更新状态;
加速邻接表生成模块,被配置为将粒子包中的不同粒子的相同的位置元素改为连续,每个从核在主存中保留临时内存以存储由相应从核计算的邻居列表,将通过收集所有这些邻居列表来形成邻接表,将不同从核的邻居列表作为配对列表连接,完成优化。
一种超级计算机平台,包括处理器和计算机可读存储介质,处理器用于实现各指令;计算机可读存储介质用于存储多条指令,所述指令适于由处理器加载并执行所述的分子动力学模拟短程力并行优化方法的步骤。
与现有技术相比,本公开的有益效果为:
本公开通过数据聚合来加速短程力计算,减少了受内存访问带宽的限制;
本公开通过写缓存和读缓存方式,能够降低缓存未命中率,同时提高了每个核组的DMA带宽,向量化优化减少了计算时间并将计算速度从缓存版本增加近2倍,同时通过更新标记减少了大量无意义的传输。
附图说明
构成本公开的一部分的说明书附图用来提供对本公开的进一步理解,本公开的示意性实施例及其说明用于解释本公开,并不构成对本公开的不当限定。
图1是“申威26010”架构图;
图2是GROMACS中使用的算法过程示意图;
图3是得到的粒子包示意图;
图4是短程力计算期间的读取缓存操作示意图;
图5是延迟更新过程示意图;
图6是归约过程示意图;
图7是数据布局已更改为相同的位置元素连续示意图;
图8是转换运算的示意图;
图9是配对列表连接过程示意图;
图10是对比例示意图;
图11是不同优化的表现示意图;
图12是弱扩展性和强扩展性示意图。
具体实施方式:
下面结合附图与实施例对本公开作进一步说明。
应该指出,以下详细说明都是例示性的,旨在对本公开提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本公开所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本公开的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
在本实施例中,以神威·太湖之光”计算机***作为超级计算机平台为例进行说明。
“申威26010”异构众核处理器是由中国自主技术研制,采用64位自主申威指令集,全芯片260个核心,芯片标准工作频率1.45GHz,峰值运算速度3.168TFLOPS。每个“申威26010”集成了四个运算核组,共260个运算核心,它们通过片上网络连接。每个核组由1个运算控制核心(主核)和64个运算核心阵列(从核阵列)组成。“申威26010”架构图如图1所示。
将GROMACS移植到“神威·太湖之光”计算机***上,利用异构众核处理器及其加速线程库、SIMD扩展指令等,对GROMACS进行优化并达到较好的效果。GROMACS中使用的算法和其他分子动力学应用类似。如图2所示,GROMACS的工作流由初始条件输入、作用力计算、状态更新和结果输出组成。其中,粒子间作用力的计算是最耗时的部分,本实施例主要针对短程力进行并行优化。
事实上,充分利用“申威26010”是很难的,将GROMACS移植到“申威26010”有许多限制。首先主核与单个从核的计算能力相当,而主核与从核阵列相比计算能力较弱;其次对于小数据量的访存来说,直接内存访问的带宽较低;相比于传统CPU,从核没有缓存架构,每个从核的局部存储空间只有64字节的大小。
具体包括以下步骤:
(1)数据聚集
在短程力的计算过程中,计算所需要的数据被存储在位置、类型和电荷量三个数组中,这些数据中,除了每个粒子在三维空间中的位置坐标外,其他所有元素都存储在非连续的内存区域中。所以每次计算时都需要进行多次访问内存来获取不同类型的数据,且每次获取的数据量非常小。
对于DMA(Direct Memory Access,直接内存访问)来说,有三个因素会影响它的性能。首先是访问数据的块大小,表1表明了DMA的带宽随着访问数据大小的增加而增加,我们发现,如果数据大小达到256B,几乎可以获得最佳性能。其次,当数据量不够大时,可以通过使访问的地址按顺序增加来获得更好的性能。第三,DMA冲突也会减慢DMA的带宽,所以应当尽量避免它。
表1
Access Data Size | DMA BandwIDth |
8B | 0.99GB/s |
16B | 1.99GB/s |
32B | 3.99GB/s |
64B | 7.96GB/s |
128B | 15.77GB/s |
256B | 28.88GB/s |
512B | 28.98GB/s |
2048B | 30.48GB/s |
16384B | 30.94GB/s |
为了达到峰值带宽和降低内存访问频率,尝试将同一个粒子的不同数据元素聚合为一个新的数据结构。在GROMACS中,每四个相邻粒子放在一个组中,并且总是同时计算同一组中的粒子。所以可以将四个粒子的所有数据集中在一个结构中,称之为一个粒子包。它将增加每次访存的大小,并降低内存访问频率。最后,得到一个如图3所示的粒子包。
这样,一次内存访问的数据块从4B增加到96B,如表1所示,带宽从小于0.99GB/s增加到接近15.77GB/s,而且可以一次获得四个粒子的数据,而使用从前的方法需要20次。它将减少内存访问的次数,避免DMA冲突。
如图3所示,将来自不同数组的数据聚合到粒子包中。P表示不同的颗粒。x,y,z表示三个不同的位置元素,t表示该粒子的类型,C表示粒子携带的电荷量。
(2)读取策略
虽然通过数据聚合达到更高的带宽,但是想要达到峰值带宽仍然有很长的路要走。在其他一些程序中,可以做一些预处理,但在GROMACS中,需要访问的粒子是随机的,并且邻居列表将在几次计算后重新生成。因此,不可能进行任何预处理。为了在内存访问中获得更好的性能,希望一次获得更多的原子包,所以本实施例提供了软件缓存的方法。
实际上,与其他CPU结构不同的是,“申威26010”的从核中没有缓存结构。但是,从核可以非常快速地访问LDM(Local Device Memory,局部设备内存)中的数据。LDM类似于从核的一级缓存。如果从核需要的数据在LDM中,则认为它是缓存命中。如果没有,将其视为缓存未命中,此时必须通过DMA访问主核内存中的数据,这将消耗很多时间。
软件缓存的性能非常复杂。仅通过带宽或缓存未命中率来评估缓存性能是不合适的。更倾向于使用平均内存访问时间作为衡量标准,如公式1所示。
AMAT=HT+MR·MP 公式1
在公式1中,AMAT(Average Memory Access Time)是加载数据的平均时间。HT(HitTime)是缓存命中时加载数据的时间。MR(Miss Rate)是缓存的未命中率。MP(MissPenalty)是在缓存未命中时加载数据的时间。从等式中,我们发现AMAT由两部分组成。仅仅达到更高带宽或降低缓存未命中率是没用的。应该努力在它们之间保持平衡。
在GROMACS中,将64KB大小的LDM中的16KB空间作为读缓存。使用直接映射缓存策略,将缓存行号和缓存行的长度设为2的幂数。因此可以在高速缓存中使用位操作,这将使命中时间远低于正常值。与n路组相联缓存相比,缓存的未命中率可能略高。但是直接映射缓存的命中时间远低于n路组相联和其他任何缓存策略。此外,终于发现缓存未命中率低于5%,达到了预期。读缓存的操作如图4所示。一次可以获取8个粒子包,并且粒子数据可以重复使用。这样,根据表1,每次DMA中访问的数据块从96B提升为768B,带宽达到30G/s左右,几乎达到了峰值带宽。
如图4所示,首先将索引ID分解为标签号,行号和偏移号。标签号表示主核中缓存行的唯一ID。行号是从核中的缓存行索引。偏移数是缓存行中粒子的地址。第二步是将缓存行的标记与原始行的标记进行比较。如果它们相同,则意味着缓存行是我们想要的。所以可以做第四步,获取数据和计算。如果该标记与原始标记不同,这意味着缓存未命中,必须执行第三步,获取数据。然后再做第四步。
(3)延迟更新
在计算A、B粒子间作用力的过程中,每次不仅会更新A粒子的作用力,同时会更新B粒子的作用力,这意味着每次计算都会对主核中的作用力进行一次更新,这对于主核和从核之间的低带宽来说太频繁了。所以寻求一种方法来解决这个问题。我们发现同一个粒子可能会被不同从核更新很多次,因此,不同粒子的作用力变化可以在从核中累积,之后向主核一次性更新。
让每个从核维护一定大小的局部存储作为更新缓冲,用来累积每个粒子的受力变化。在更新缓冲区中,每个粒子都将映射到一个特定的地址。每个粒子的作用力变化将首先累积在更新缓冲区而不是直接在主存中更新。主存中作用力的更新只会占用更新缓冲区中的一个粒子被另一个粒子替换的时间,称此策略为延迟更新。为了有效地实现这一策略,使用直接映射缓存方法。每次数据的更新都是基于8个粒子包,为了方便起见,也将其称为一个缓存行。具体操作如图5所示,这样,多次DMA可以减少到一次访问,将获得更好的DMA性能。
第一步和第二步与图4相同。如果标记与原始标记相同,可以更新缓冲区中的数据。如果标签与原始标签不同,从核应该更新主存中的作用力并获取主存中该粒子的作用力。
本实施例提出了RMA方法(Redundancy Memory Approach,冗余内存方法)。通过这种方式,在主核内存中保留冗余内存。创建64个作用力数据副本。
每个从核都会更新其中一个副本。完成所有作用力的计算后,最后再更新原始数据。从从核中更新作用力的步骤中,使用与读取缓存类似的方式。将某个从核内存保留为写入缓存(作用力更改缓存)。首先,计算位置的标签和缓存行。如果标签命中,只更新写缓存中的作用力数据。但是,如果标记未命中,那么缓存未命中。这时应该把这行中的原始数据放到主核内存中,并从主核内存中的获取所需要的缓存行的数据,然后可以更新它。在计算结束时,应该将缓存中的所有数据都put到主核内存中。在此之后,将所有64份副本归约为原始数据。可以通过从核加速它,因为数据的连续性非常好。
(4)更新标记
为了并行短程力的计算,还存在另一个挑战,即写冲突。选择了为每个从核保留作用力数组的方法,即RMA方法。冗余的作用力数组称为原始数组的副本。收集副本、求和以及写回主存的步骤我们称为归约步骤。要使用RMA,所有的副本都应该在计算之前初始化,这个过程消耗的时间几乎与计算的时间相同。为了实现更高效的DMA,提出了一种新的策略,即更新标记策略。
在计算过程中,大多数粒子只会更新64个从核中的一些作用力,而很少会更新所有从核中的受力。如果某个粒子的数据在某些从核中没有更新,则这些从核中该粒子的数据副本在计算期间将永远不会更改。因此,初始化和归约步骤对于这些粒子的副本来说变得毫无意义。把这些粒子的拷贝称为无意义的拷贝。这些无意义的拷贝普遍存在,在初始化和归约过程中占用了大量的时间。更新标记可以在几乎不造成性能损失的情况下降低无意义的成本。
更新标记策略的主要思想是在从核自身记录每个副本的更新状态。为了节省内存并使用延迟更新策略,每个从核将在其副本中记录每个缓存行的更新状态。在这个方法中,初始化步骤就可以被废弃。如果未更新缓存行,则其数据的值必须为0(初始值)。因此,数据不需要提取,可以在从核副本中设置为0。在归约步骤中,如图6所示,如果缓存行没有被更新,那它将不需要被添加到原始数据中,所以它不会被提取。
使用每个位来标记缓存行的更新状态。对于1字节存储器,有8位。对于一个缓存行,有八个粒子包。因此,对于一个字节大小的内存,可以记录256(8×8×4)个粒子的更新状态。
为了实现更新标记策略,在每个从核中使用1位的空间来标记缓存行的更新状态,其中包括8个粒子包即32个粒子。这意味着一个整型参数可以记录1024个粒子的更新状态。所有这些操作都可以通过位操作完成。
(5)向量化
由于对内存访问进行了仔细的优化,在短程力计算的部分获得了不错的性能。因此,计算成了这个部分中新的热点。所以尝试将它向量化。在“申威26010”中,从核支持256位SIMD向量寄存器。它支持floadv4,可以一次计算4个float。
在GROMACS中,由于某些操作不能很容易地被向量化加速,因此要有效地实现向量化仍存在挑战。在GROMACS中,外循环中的粒子是固定的,而内循环中的粒子经常发生变化。考虑到这一点,将外循环中的每4个粒子向量化并与内循环中的粒子进行短程力的计算将更加有效。
在向量化之后,预处理和后处理占据了大量的时间。在预处理步骤中,每4个float应该被转换为floatv4参数,以便之后的计算。在原始粒子包中,不同粒子的同一元素是不连续的,这使得元素无法有效地提取和转换为向量。如图7所示,我们改变了数据布局,使它们成为连续的,这可以加快预处理步骤。
在后处理中,向量应该转换为四个浮点数,并添加到三个位置元素中。为了更有效地执行求和运算,本实施例提供了一个转换运算,其中包括六个simd_vshff操作来转换向量。如图8所示,可以不用分解将该向量添加到数组中,这样后处理变得更加高效。
在后处理中,使用从核中的向量shuffle来使相同粒子的三个位置元素连续。如图8所示,在其上花费了六次simd操作。
(6)加速邻接表生成
在仔细优化了短程力的计算之后,邻接表的建立成为新的热点。如背景部分所述,邻接表将在每个nstlist步骤中重新生成。
对于GROMACS中的邻接表,它包含每个粒子的邻居列表。对于每个粒子,它保持其邻居的开始和结束的索引。为了在多核***中实现这一点,如图9所示,不同的核心将生成不同粒子的邻居列表。由于不同邻居列表的长度不同,因此无法获取从核中第一个邻居列表的起始索引。为了解决这个问题,每个从核在主存中保留临时内存以存储由相应从核计算的邻居列表。最后,将通过收集所有这些邻居列表来形成邻接表。每个粒子的邻居列表的开始和结束的索引是同时计算的。
更重要的是,在建立邻居列表的过程中,需要大量的随机访问内存,这类似于计算部分中的内存访问。
在短程力的计算中,直接映射缓存的性能表现非常好。大多数情况下,缓存未命中率小于10%。但是在建立邻接表的部分中,直接映射缓存的性能是不太理想的。由于严重的缓存抖动,缓存未命中率超过85%。为了消除缓存抖动,在这个部分中使用了两路组相联策略。通过这种方式,我们实现了将缓存未命中率从超过85%降低到10%左右。
基于GROMACS-5.1.5版本,使用水算例作为标准算例,来评估GROMACS的性能。
(1)短程力计算的优化性能
如上所述,短程力计算是最耗时的部分。因此,评估对它优化的性能。正如在优化部分中所展示的那样,使用许多新的优化方法来加速短程力计算。在第一个优化步骤中,只使用数据聚合来加速它。那时,只获得3倍的加速。计算受内存访问带宽的限制。通过写缓存和读缓存,可以部分减少内存访问的限制。通过它获得了20倍的加速。当将写缓存和读缓存中的缓存未命中率降至低于15%时,每个核组的DMA带宽超过30G/s,几乎达到理论峰值带宽。向量化优化减少了计算时间并将计算速度从缓存版本增加近2倍。最后,通过更新标记减少了大量无意义的传输。与上一版本相比,再获得2倍的加速。将短程力计算部分加速了63倍。图10中所示的不同情况看起来加速比率不会随每个核组中的粒子数量而变化。
图10给出了不同优化方法的加速比。Ori是GROMACS的原始版本。它只是在主核上运行。Pkg是使用数据聚合的版本。Cache是使用读写缓存实现的版本。Vec是通过向量化加速的版本。Mark是使用更新标记策略的版本。
(2)整体性能
除了优化短程力的计算外,本实施例还在邻居搜索、I/O、通信等方面做了一些其他的优化。因为在不同算例下某些优化的性能是不同的。因此,我们使用两个不同规模的算例从而更好地评估性能。第一个算例包含48,000个粒子,使用单个核组。第二个算例包含3,072,000个粒子,我们使用512个核组来模拟它。在单核组算例中,大部分时间花在邻居搜索和短程力计算上。如图11所示,可以在版本1和版本2中获得更好的加速比。而版本3和版本4中的优化似乎毫无用处。特别是通信优化,因为在单个核组模拟中没有通信。而512个核组规模的时间用于不同方面。因此,版本1和版本2中的算例2不如算例1的加速比率。版本3和版本4中算例2的加速比率优于算例1。最后,在算例1中获得32倍的加速,在算例2中获得18倍的加速。
图11给出了不同优化的表现。在算例1中,一个核组模拟大约48,000个粒子。在算例2中,512个核组模拟大约3,000,000个粒子。Ori版本是没有任何优化的版本,仅由主核模拟。Cal版本是优化短程交互计算的版本。而List版本优化了对列表的生成。Other版本包含所实现的其他优化。
(3)扩展性
在评估中,使用具有48,000个粒子的水算例作为强扩展性测试中的算例。我们使用4个核组到512个核组进行模拟。对于弱可扩展性,使每个核组模拟超过10,000个粒子,规模从4个核组到512个核组。为了计算并行效率,我们使用公式2和公式3这两个等式。在公式2中,是强扩展性的并行效率。是用4个核组(一个“申威26010”处理器)模拟算例1的时间。在公式3中,用N个核组模拟算例1的时间,与公式2中的相同。
从图12中可以看出,本实施例获得了很好的弱扩展性。随着规模的增加,几乎没有性能损失。如图12所示,并行效率在512个核组时降至0.60。
本领域内的技术人员应明白,本公开的实施例可提供为方法、***、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本公开是参照根据本公开实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本公开的优选实施例而已,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
上述虽然结合附图对本公开的具体实施方式进行了描述,但并非对本公开保护范围的限制,所属领域技术人员应该明白,在本公开的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本公开的保护范围以内。
Claims (10)
1.一种超级计算机平台上的分子动力学模拟短程力并行优化方法,其特征是:包括:
将分子动力学应用中的多个相邻粒子放在一个组中,形成一个粒子包,实现数据聚集;
将索引ID分解,将缓存行的标记与原始行的标记进行比较,如果相同,则缓存命中,如果该标记与原始标记不同,则缓存未命中;
计算位置的标签和缓存行,如果缓存命中,只更新写缓存中的作用力数据,如果缓存未命中,把相应行中的原始数据放到主核内存中,并从主核内存中的获取需要的缓存行的数据,进行作用力数据的更新,并利用从核在其副本中记录每个缓存行的更新状态;
将粒子包中的不同粒子的相同的位置元素改为连续,每个从核在主存中保留临时内存以存储由相应从核计算的邻居列表,将通过收集所有这些邻居列表来形成邻接表,将不同从核的邻居列表作为配对列表连接,完成优化。
2.如权利要求1所述的一种超级计算机平台上的分子动力学模拟短程力并行优化方法,其特征是:在分子动力学应用中,每四个相邻粒子放在一个组中,并且总是同时计算同一组中的粒子,将四个粒子的所有数据集中在一个结构中,我们称之为一个粒子包。
3.如权利要求1所述的一种超级计算机平台上的分子动力学模拟短程力并行优化方法,其特征是:缓存是否命中以平均内存访问时间作为衡量标准。
4.如权利要求1所述的一种超级计算机平台上的分子动力学模拟短程力并行优化方法,其特征是:将局部设备内存中的部分空间作为读缓存,使用直接映射缓存策略,将缓存行号和缓存行的长度设为2的幂数。
5.如权利要求1所述的一种超级计算机平台上的分子动力学模拟短程力并行优化方法,其特征是:将索引ID分解为标签号,行号和偏移号,标签号表示主核中缓存行的唯一ID,行号是从核中的缓存行索引,偏移数是缓存行中粒子的地址,将缓存行的标记与原始行的标记进行比较,如果它们相同,则意味着缓存行命中,如果该标记与原始标记不同,则缓存未命中。
6.如权利要求1所述的一种超级计算机平台上的分子动力学模拟短程力并行优化方法,其特征是:如果缓存未命中,从核更新主存中的作用力并获取主存中该粒子的作用力;
让每个从核维护一定大小的局部存储作为更新缓冲,用来累积每个粒子的受力变化,在更新缓冲区中,每个粒子都将映射到一个特定的地址,每个粒子的作用力变化将首先累积在更新缓冲区而不是直接在主存中更新,主存中作用力的更新只会占用更新缓冲区中的一个粒子被另一个粒子替换的时间,实现延迟更新。
7.如权利要求1所述的一种超级计算机平台上的分子动力学模拟短程力并行优化方法,其特征是:如果缓存未命中,将相应缓存行中的原始数据放到主核内存中,并从主核内存中的获取所需要的缓存行的数据,然后更新;
或,使用直接映射缓存方法实现延迟更新。
8.如权利要求1所述的一种超级计算机平台上的分子动力学模拟短程力并行优化方法,其特征是:将外循环中的每个粒子包向量化并与内循环中的粒子进行短程力的计算。
9.一种超级计算机平台上的分子动力学模拟短程力并行优化***,其特征是:包括:
数据聚集模块,被配置为将分子动力学应用中的多个相邻粒子放在一个组中,形成一个粒子包,实现数据聚集;
读取模块,被配置为将索引ID分解,将缓存行的标记与原始行的标记进行比较,如果相同,则缓存命中,如果该标记与原始标记不同,则缓存未命中;
更新模块,被配置为计算位置的标签和缓存行,如果缓存命中,只更新写缓存中的作用力数据,如果缓存未命中,把相应行中的原始数据放到主核内存中,并从主核内存中的获取需要的缓存行的数据,进行作用力数据的更新,并利用从核在其副本中记录每个缓存行的更新状态;
加速邻接表生成模块,被配置为将粒子包中的不同粒子的相同的位置元素改为连续,每个从核在主存中保留临时内存以存储由相应从核计算的邻居列表,将通过收集所有这些邻居列表来形成邻接表,将不同从核的邻居列表作为配对列表连接,完成优化。
10.一种超级计算机平台,其特征是:包括处理器和计算机可读存储介质,处理器用于实现各指令;计算机可读存储介质用于存储多条指令,所述指令适于由处理器加载并执行权利要求1-8中任一项所述的分子动力学模拟短程力并行优化方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010211397.4A CN111429974B (zh) | 2020-03-24 | 2020-03-24 | 超级计算机平台上的分子动力学模拟短程力并行优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010211397.4A CN111429974B (zh) | 2020-03-24 | 2020-03-24 | 超级计算机平台上的分子动力学模拟短程力并行优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111429974A true CN111429974A (zh) | 2020-07-17 |
CN111429974B CN111429974B (zh) | 2023-05-05 |
Family
ID=71555664
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010211397.4A Active CN111429974B (zh) | 2020-03-24 | 2020-03-24 | 超级计算机平台上的分子动力学模拟短程力并行优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111429974B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112069091A (zh) * | 2020-08-17 | 2020-12-11 | 北京科技大学 | 一种应用于分子动力学模拟软件的访存优化方法及装置 |
CN115952393A (zh) * | 2023-03-13 | 2023-04-11 | 山东大学 | 基于超级计算机的多头注意力机制的前向计算方法及*** |
CN116701263A (zh) * | 2023-08-01 | 2023-09-05 | 山东大学 | 一种用于超级计算机的dma操作方法及*** |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102945298A (zh) * | 2012-10-24 | 2013-02-27 | 无锡江南计算技术研究所 | 邻居粒子对搜索、分子动力学计算方法及众核处理*** |
US20140257769A1 (en) * | 2013-03-06 | 2014-09-11 | Nvidia Corporation | Parallel algorithm for molecular dynamics simulation |
CN105787227A (zh) * | 2016-05-11 | 2016-07-20 | 中国科学院近代物理研究所 | 结构材料辐照损伤的多gpu分子动力学模拟方法 |
CN109885917A (zh) * | 2019-02-02 | 2019-06-14 | 中国人民解放军军事科学院国防科技创新研究院 | 一种并行分子动力学模拟方法及*** |
-
2020
- 2020-03-24 CN CN202010211397.4A patent/CN111429974B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102945298A (zh) * | 2012-10-24 | 2013-02-27 | 无锡江南计算技术研究所 | 邻居粒子对搜索、分子动力学计算方法及众核处理*** |
US20140257769A1 (en) * | 2013-03-06 | 2014-09-11 | Nvidia Corporation | Parallel algorithm for molecular dynamics simulation |
CN105787227A (zh) * | 2016-05-11 | 2016-07-20 | 中国科学院近代物理研究所 | 结构材料辐照损伤的多gpu分子动力学模拟方法 |
CN109885917A (zh) * | 2019-02-02 | 2019-06-14 | 中国人民解放军军事科学院国防科技创新研究院 | 一种并行分子动力学模拟方法及*** |
Non-Patent Citations (1)
Title |
---|
XIAOHUI DUAN等: ""Neighbor-list-free Molecular Dynamics on Sunway TaihuLight Supercomputer"" * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112069091A (zh) * | 2020-08-17 | 2020-12-11 | 北京科技大学 | 一种应用于分子动力学模拟软件的访存优化方法及装置 |
CN112069091B (zh) * | 2020-08-17 | 2023-09-01 | 北京科技大学 | 一种应用于分子动力学模拟软件的访存优化方法及装置 |
CN115952393A (zh) * | 2023-03-13 | 2023-04-11 | 山东大学 | 基于超级计算机的多头注意力机制的前向计算方法及*** |
CN115952393B (zh) * | 2023-03-13 | 2023-08-18 | 山东大学 | 基于超级计算机的多头注意力机制的前向计算方法及*** |
CN116701263A (zh) * | 2023-08-01 | 2023-09-05 | 山东大学 | 一种用于超级计算机的dma操作方法及*** |
CN116701263B (zh) * | 2023-08-01 | 2023-12-19 | 山东大学 | 一种用于超级计算机的dma操作方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN111429974B (zh) | 2023-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111429974B (zh) | 超级计算机平台上的分子动力学模拟短程力并行优化方法 | |
CN112835627B (zh) | 用于单指令多线程或单指令多数据类型处理器的近似最近邻域搜索 | |
KR102028252B1 (ko) | 자율 메모리 아키텍처 | |
US9612750B2 (en) | Autonomous memory subsystem architecture | |
CN113313247B (zh) | 基于数据流架构的稀疏神经网络的运算方法 | |
Helman et al. | Designing practical efficient algorithms for symmetric multiprocessors | |
US20190018766A1 (en) | Method and device for on-chip repetitive addressing | |
CN115168281B (zh) | 一种基于禁忌搜索算法的神经网络片上映射方法和装置 | |
CN116401502B (zh) | 一种基于NUMA***特性优化Winograd卷积的方法及装置 | |
JP7069898B2 (ja) | 学習識別装置および学習識別方法 | |
CN113312283A (zh) | 一种基于fpga加速的异构图学习*** | |
CN106484532B (zh) | 面向sph流体模拟的gpgpu并行计算方法 | |
Kim et al. | Efficient multi-GPU memory management for deep learning acceleration | |
CN117149795A (zh) | 一种基于混合内存的自适应图计算更新方法及*** | |
CN111832144B (zh) | 一种全振幅量子计算模拟方法 | |
CN113449152B (zh) | 图数据预取器及预取方法 | |
Zeng et al. | DF-GAS: a Distributed FPGA-as-a-Service Architecture towards Billion-Scale Graph-based Approximate Nearest Neighbor Search | |
CN105573834B (zh) | 一种基于异构平台的高维词汇树构建方法 | |
CN105912404B (zh) | 一种基于磁盘的大规模图数据中寻找强连通分量的方法 | |
CN112100446B (zh) | 搜索方法、可读存储介质和电子设备 | |
Li et al. | An application-oblivious memory scheduling system for DNN accelerators | |
CN113312285A (zh) | 一种卷积神经网络加速器及其工作方法 | |
CN112631610A (zh) | 一种针对粗粒度可重构结构的数据重用消除访存冲突方法 | |
Liu et al. | TinyTS: Memory-Efficient TinyML Model Compiler Framework on Microcontrollers | |
CN111709872B (zh) | 一种图三角形计数算法的自旋存内计算架构 |
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 |