CN114490011A - N体模拟在异构架构的并行加速实现方法 - Google Patents

N体模拟在异构架构的并行加速实现方法 Download PDF

Info

Publication number
CN114490011A
CN114490011A CN202011260657.3A CN202011260657A CN114490011A CN 114490011 A CN114490011 A CN 114490011A CN 202011260657 A CN202011260657 A CN 202011260657A CN 114490011 A CN114490011 A CN 114490011A
Authority
CN
China
Prior art keywords
particle
particles
module
calculation
speed
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
Application number
CN202011260657.3A
Other languages
English (en)
Other versions
CN114490011B (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.)
Shanghai Jiaotong University
Original Assignee
Shanghai Jiaotong University
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 Shanghai Jiaotong University filed Critical Shanghai Jiaotong University
Priority to CN202011260657.3A priority Critical patent/CN114490011B/zh
Publication of CN114490011A publication Critical patent/CN114490011A/zh
Application granted granted Critical
Publication of CN114490011B publication Critical patent/CN114490011B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

一种N体模拟在异构架构的并行加速实现方法,通过初始化后更新缓冲区,通过CPU内存与GPU显存之间的信息传输后,依次通过GPU以分桶算法计算粒子之间的短程力并返回结果至CPU端;通过CPU计算粒子之间的长程力及加速度后更新粒子速度,最后更新缓冲区粒子的速度信息并当满足条件时结束模拟;本发明在CPU端进行主体程序的计算和数据读取、输出等功能,在GPU端进行程序中热点函数的计算,通过基于粒子‑网格算法,将粒子之间的力分为短程力和长程力,利用CPU和GPU的算力及其架构特点,实现快速计算。

Description

N体模拟在异构架构的并行加速实现方法
技术领域
本发明涉及的是一种计算机模拟领域的技术,具体涉及一种N体模拟在异构架构的并行加速实现方法,能够适用于新材料研发、医药研发、游戏的实时模拟等工业领域。
背景技术
N体问题是高性能计算领域的最具代表性、最有挑战性也最重要的课题之一,具有广泛的应用领域,当粒子为宏观世界的天体时,可以模拟星系的形成,当粒子为微观世界的分子、等离子体时,可以模拟核聚变的过程等。N体问题主要是求解空间中每个粒子受其余粒子的作用的计算,由于需要计算每个粒子与所有其余粒子之间的作用力,复杂度为O(N2),当粒子数很大时,计算量和访存量都非常巨大,需要计算的时间很长。
发明内容
本发明针对现有技术存在的上述不足,提出一种N体模拟在异构架构的并行加速实现方法,在CPU端进行主体程序的计算和数据读取、输出等功能,在GPU端进行程序中热点函数的计算,通过基于粒子-网格(Particle-Mesh,PM)算法,将粒子之间的力分为短程力和长程力,利用CPU和GPU的算力及其架构特点,实现快速计算。
本发明是通过以下技术方案实现的:
本发明涉及一种N体模拟在异构架构的并行加速实现方法,通过初始化后更新缓冲区,通过CPU内存与GPU显存之间的信息传输后,依次通过GPU以分桶算法计算粒子之间的短程力并返回结果至CPU端;通过CPU计算粒子之间的长程力及加速度后更新粒子速度,最后更新缓冲区粒子的速度信息并当满足条件时结束模拟。
所述的初始化是指:读入参数文件以及初始场文件,划分网格及缓冲区,初始化粒子的位置、速度分布,具体为:根据网格划分计算域并分配给相应的进程,初始化全局数组,将数据传输给相应的进程。将相邻计算域的交界部分划分为缓冲区,用于存储可能从该计算域进入其他计算域的粒子。
所述的参数文件包括:网格划分大小、计算域划分大小、数据存储类型、数组结构、时间片dt大小。
所述的初始场文件包括:网格内所有粒子的位置和速度信息。
所述的更新缓冲区是指:根据粒子的位置和速度,计算dt时间后粒子的新的位置,并更新进入缓冲区的粒子位置信息。
所述的粒子位置信息是指:xnew=xold+v*dt,其中xnew、xold分别为粒子新的位置和原位置,v为粒子的速度。更新位置后判断粒子是否处于缓冲区即划分的计算域的交界区,用单独的buffer_x数组存储位于缓冲区的粒子的位置信息。
所述的短程力,按照修正的万有引力定律和粒子之间的距离计算引力,具体为:
Figure BDA00027745100100000211
Figure BDA0002774510010000021
其中G为引力常数,m为粒子质量,x为粒子位置,修正参数pcut的计算规则为:
Figure BDA0002774510010000022
|xj-xi|>rsoft,其中nfcutoff为设定的短程力阈值,rsoft是软化参数,防止粒子距离太近导致发生计算数值差异。
所述的长程力,按照PM算法采用三维快速傅里叶变换(FFT)求解泊松方程得到,具体包括:1)采用云单元(Cloud In Cell,CIC)方法向网格中分配质量;2)在网格中求引力势的泊松方程在傅里叶空间中的解;3)根据势能计算引力,并将引力插入到每个粒子位置。
所述的分配质量,其权重函数W为:
Figure BDA0002774510010000023
Figure BDA0002774510010000024
其中:W为权重函数;S为形状函数且由不同的分配方法决定;x为粒子的坐标,其不同的下标代表不同的粒子;L=nl,其中l表示网格空间大小,n为倍数;分配质量后得到的分配点的密度ρi为:
Figure BDA0002774510010000025
所述的引力势的泊松方程在傅里叶空间中的解是指:
Figure BDA0002774510010000026
Figure BDA0002774510010000027
其中:k为波矢,
Figure BDA0002774510010000028
Figure BDA0002774510010000029
分别为势能、格林函数和密度函数的傅里叶变换式,引力通过求解方程
Figure BDA00027745100100000210
得到,再通过以下方式插入原来的位置:f(xj)=∑iW(xj-xi)fi
所述的短程力与长程力的区分标准为:以中心粒子所在的细网格为基础,在该中心网格的x、y、z轴方向上相距pp_range个细网格内的所有粒子在计算时均采用短程力的计算方式,超出pp_range范围的粒子均采用长程力的计算方式。
所述的更新粒子速度是指:根据短程力和牛顿第二定律计算粒子的加速度,并计算dt时间后粒子新的速度,并更新粒子的速度信息,具体为:vnew=vold+a*dt,其中:vnew、vold为粒子的新速度和原速度,a为粒子的加速度,其计算方式为:a=(fl+fs)/m,其中fl、fs分别为粒子所受的其余粒子的长程力和短程力,m为粒子质量。
所述的满足条件,其包括但不限于在分子动力学中模拟中,是判断当前状态是否达到稳态。
本发明涉及一种实现上述方法的系统,包括:数据读取模块、初始化模块、粒子位置更新模块、主机端设备端数据传输模块、粒子间短程力计算模块、粒子间长程力计算模块、粒子速度更新模块及后处理模块,其中:数据读取模块根据参数文件和初始场文件解析出网格、粒子速度及位置以及时间片信息并输出至初始化模块,初始化模块与粒子位置更新模块相连,根据粒子的速度更新位置,粒子位置更新模块与主机端设备端数据传输模块相连并传输粒子的位置分布信息,粒子间短程力计算模块也与主机端设备端数据传输模块相连并传输粒子所受的短程力,粒子间长程力计算模块与与粒子速度更新模块相连并传输粒子所受的合力,粒子速度更新模块与后处理模块及粒子位置更新模块相连并传输粒子的速度分布信息。
技术效果
本发明整体解决了现有N体模拟问题在在粒子数很大时计算量和访存量过大导致的模拟时长很长的问题;与现有技术相比,本发明使用CUDA编程框架,针对使用粒子-网格法进行大规模宇宙模拟的问题实现了并行加速。整个程序主体在CPU上进行计算,其中的热点部分(占总时长的90%以上)移植到GPU上进行进一步的并行加速。并且,本发明通过一系列优化措施,降低了GPU上各线程的负载不均衡现象,进一步提高了GPU计算效率。本发明通过使用混合精度的方法,在保证计算结果正确的前提下,降低了内存使用量和访存量,理论上可以减少50%。通过对粒子数为1677.7万的算例进行测试,GPU迭代速度相较于40核心并行的CPU版迭代计算有最高8.7倍的提升。
附图说明
图1为本发明流程图;
图2为粒子-网格法网格划分示意图;
图中:a为整体空间划分方式,b为单个计算域周围缓冲区示意图;
图3为GPU上粒子间力的计算流程图;
图4为GPU性能优化结果示意图。
具体实施方式
如图1所示,本实施例包括以下步骤:
步骤1、开始时程序读入粒子相对所在粗网格的位置信息文件*_xp_*.bin、速度信息文件*_vp_*.bin和每个粗网格中的粒子数文件*_np_*.bin、粗网格的速度场信息文件*_vc_*.bin,检查点文件z_checkpoint.txt和z_halofind.txt。
步骤2、根据参数设置初始化讯息传递界面(MPI)环境和快速傅里叶变换(FFT)环境,并对每个进程划分处理区域,具体为:将整个空间虚拟为一个大的立方体,并将该空间等分为nn3个小空间,即image,对应一个进程来处理;每个image进一步等分为nc3个粗网格,每个粗网格再等分为ncell3个细网格,相邻image的交界区划分出ncb个粗网格的区域,即缓冲区以存储可能进入的image的粒子;另外将每个image的空间等分为nnt3个小立方体,即tile,每个进程依次循环处理各个tile内的数据。
步骤3、初始化缓冲区,用于存储从一个进程负责的计算域运动到别的进程的粒子信息。初始化GPU运行环境,设定GPU设备,分配GPU全局数组空间,打印GPU设备信息等,包括设备的流处理器数、线程束中的线程个数等。
步骤4、采用混合精度的方法,用int类型数据来存储粒子在粗网格中的位置和速度,用来代替原本的double类型,理论上可以减少50%的消耗。依次计算每个tile,根据粗网格的位置数据和粒子在粗网格中的分布位置,计算出粒子在实际空间中的坐标:
Figure BDA0002774510010000041
Figure BDA0002774510010000042
是粗网格的左边界,Δxi是细网格在粗网格中的相对位置,mi∈{0,1,…,255}可以存储为1个1字节的整数。再根据存储的粗网格速度场和和粒子的权重分布,计算得出每个粒子的速度。其中在一个粗网格中的粒子速度满足高斯分布,因此粒子的实际速度为:
Figure BDA0002774510010000043
其中:vc为粗网格的速度,νd为粒子的实际速度,
Figure BDA0002774510010000044
表示将粗网格划分为
Figure BDA0002774510010000045
份,
Figure BDA0002774510010000046
为高斯分布的方差。根据粒子的实际速度和实际位置,计算出粒子在dt时间之后的新的位置,并统计本进程中的粒子总数和进入缓冲区的粒子数,并使用MPI_Sendrecv()函数交换各进程缓冲区中的数据,更新缓冲区的粒子位置信息。
步骤5、依次计算每个tile,使用分桶算法计算每个细网格中的粒子数和粒子ID,并将这些数据复制至GPU显存。由于每个细网格中的粒子数不一定相同,因此在定义GPU数据结构时,采用的是一维动态数组的方式,将所有细网格的粒子数据都复制至该数组中,并记录每个细网格的粒子数和在该数组中的起始位置。
由于数据的存储格式是以粗网格为单位,因此在访问细网格中的粒子数据时是不规则的随机访存,为了减少这种不规则访存,本实施例采用分桶算法,以每个细网格为一个桶,记录在该细网格中的粒子数目和粒子ID,并记录每个细网格周围pp_range个细网格范围内的粒子数,再把这些数组和粒子的位置、速度数组复制至GPU。
所述的分桶算法可以将GPU端的访存方式变为线性的连续访存,大大减少了GPU上的数据访存时间,对GPU来说是更加友好的计算策略。
步骤6在GPU端设定每个GPU块(block)对应一个粗网格,并且为了兼顾计算效率,GPU调度以及GPU寄存器分配,每个block分配256个线程(thread)。按照粗网格中的粒子数进行区分,当粒子数较少则每个thread计算一个细网格,依次循环计算该细网格中的每个粒子与周围所有粒子的万有引力,并进行加和;当粒子数较多则依次循环计算每个细网格,每个thread计算该细网格中的一个粒子,得出每个粒子所受的万有引力。随后将力的数组复制回CPU端。
由于本案例的模拟中,刚开始模拟时,粒子在空间中的分布比较均匀,每个进程负责的计算域中的计算量和访存量差别不大,负载均衡性较好;而随着模拟的进行,粒子会发生聚集现象,导致某个区域的粒子数非常多而别的区域粒子数很少,导致不同进程的计算量和访存量发生较大的差别,引起严重的负载不均衡效应。另外,在GPU线程束(warp)中,32个线程保持着SIMT(single instruction,multiple threads)的方式。对于Warp内的线程,当有个线程对应的网格单元在本次计算中跳过,该线程需要等待warp内其他线程的计算完成,在负载不均衡现象很严重时会造成计算性能的浪费。因此本实施例根据粗网格中的粒子数采用不同的并行划分策略,当网格中的粒子数较少时,说明该区域的粒子聚集现象较轻,每个区域的计算量较小,因此采用一个GPU block分配一个粗网格,每个线程计算一个细网格的方式;当网格中的粒子数较多时,说明该区域的粒子聚集现象比较严重,因此采用一个遍历每个细网格,每个线程计算细网格中的一个粒子的方式,可以减少线程之间的负载不均衡造成的性能损失,对GPU来说是更为友好的计算策略。
另外,当粒子聚集现象特别严重,细网格中的粒子数超过设定的阈值时,本实施例采用动态并行的方法进行优化。在每个GPU线程计算一个细网格时,用该线程调用新的GPU函数,以该网格中的粒子数为GPU block数,每个block负责计算一个中心粒子,block中的线程并行计算周围粒子对中心粒子的作用力。这种策略可以将计算量很大的线程重新拆分为多个线程并行计算,防止该线程的运行时间过长导致同一warp内的其他线程等待时间过长,是较为友好的计算策略。
在GPU端进行计算时,由于之前定义的数组均为全局数组,而GPU对全局内存的访问速度较慢,因此本发明采用先将一部分数据复制至共享内存,在计算时只读写共享内存,计算完成后再将共享内存中的内容更新到全局数组中的方式,减少了数据读写的时间,提高了整体计算效率。
步骤7、将GPU端计算的粒子所受的短程力数据传输回CPU端。
步骤8、在CPU端采用3D FFT算法求解泊松方程,得到粒子所受的长程力,并计算出粒子在长程力作用下的加速度和速度增量,更新粒子的速度信息,并根据粒子目前的坐标,计算得出dt时间后粒子新的位置,更新内存中的数组信息。统计缓冲区的粒子信息,使用MPI_Sendrecv()函数进行不同进程之间的通信,再根据本进程内新的粒子速度数据更新本进程的粗网格的速度场,即所有粒子的速度的加权平均值。
步骤9、根据网格中的粒子密度和速度场判断状态,当目前的粒子密度和速度场符合步骤1中的检查点时,输出当前的粒子信息,包括位置、速度、密度信息等。判断当前状态是否为检查点文件中的最后一个检查点,如果是则结束模拟,如果不是则重复步骤4至步骤9。
本实施例在DGX-2上(GPU型号为:NVIDIA TeslaV100*16),CPU型号为:Intel XeonGold6248的平台上进行的测试,验证了本实施例的正确性,同时对比了CPU-GPU并行计算和仅采用CPU进行并行计算的加速效果。其中GPU计算采用的CUDA框架版本为9.2,CPU中进行快速傅里叶变换采用的是fftw中的库函数,fftw的版本为3.3.1。
CPU与GPU参数信息如下表:
Figure BDA0002774510010000061
在以上平台上对测试算例进行计算,测试算例的粒子数和网格大小均为为16777216;分别实现了通过CPU进行计算求解以及通过GPU对迭代部分进行加速求解。以CPU40核心并行的计算速度为基准,图4为GPU的加速效果。该算例总共迭代了450步,从图中可以看出,随着模拟步数的增加,GPU版的加速比越高,这是因为随着模拟的进行,粒子发生聚集效应,粒子聚集的网格需要计算数据急剧增大,GPU端的动态并行方法充分利用GPU的数量庞大的计算核心,将计算进一步并行化,且能够使GPU通过线程快速的切换掩盖对数据的访存的耗时。
综上,本发明提供了基于GPU的粒子-网格法模拟N体问题的并行加速方法,在GPU上实现了主要耗时部分的并行计算,相较于CPU上的40核心并行执行,本方法在1677.7万个粒子规模的算例上达到了最高8.7倍的加速比。
上述具体实施可由本领域技术人员在不背离本发明原理和宗旨的前提下以不同的方式对其进行局部调整,本发明的保护范围以权利要求书为准且不由上述具体实施所限,在其范围内的各个实现方案均受本发明之约束。

Claims (10)

1.一种N体模拟在异构架构的并行加速实现方法,其特征在于,通过初始化后更新缓冲区,通过CPU内存与GPU显存之间的信息传输后,依次通过GPU以分桶算法计算粒子之间的短程力并返回结果至CPU端;通过CPU计算粒子之间的长程力及加速度后更新粒子速度,最后更新缓冲区粒子的速度信息并当满足条件时结束模拟;
所述的分桶算法,以每个细网格为一个桶,记录在该细网格中的粒子数目和粒子ID,并记录每个细网格周围若干个细网格范围内的粒子数,再把这些数组和粒子的位置、速度数组复制至GPU。
2.根据权利要求1所述的N体模拟在异构架构的并行加速实现方法,其特征是,所述的初始化是指:读入参数文件以及初始场文件,划分网格及缓冲区,初始化粒子的位置、速度分布;
所述的更新缓冲区是指:根据粒子的位置和速度,计算dt时间后粒子的新的位置,并更新进入缓冲区的粒子位置信息。
3.根据权利要求2所述的N体模拟在异构架构的并行加速实现方法,其特征是,所述的初始化是具体为:根据网格划分计算域并分配给相应的进程,初始化全局数组,将数据传输给相应的进程,将相邻计算域的交界部分划分为缓冲区,用于存储可能从该计算域进入其他计算域的粒子。
4.根据权利要求1所述的N体模拟在异构架构的并行加速实现方法,其特征是,所述的粒子位置信息是指:xnew=xold+v*dt,其中xnew、xold分别为粒子新的位置和原位置,v为粒子的速度,更新位置后判断粒子是否处于缓冲区即划分的计算域的交界区,用单独的buffer_x数组存储位于缓冲区的粒子的位置信息。
5.根据权利要求1所述的N体模拟在异构架构的并行加速实现方法,其特征是,所述的短程力,按照修正的万有引力定律和粒子之间的距离计算引力,具体为:
Figure FDA0002774508000000011
Figure FDA0002774508000000012
其中G为引力常数,m为粒子质量,x为粒子位置,修正参数pcut的计算规则为:
Figure FDA0002774508000000013
其中nfcutoff为设定的短程力阈值,rsoft是软化参数,防止粒子距离太近导致发生计算数值差异。
6.根据权利要求1所述的N体模拟在异构架构的并行加速实现方法,其特征是,所述的长程力,按照PM算法采用三维快速傅里叶变换求解泊松方程得到,具体包括:1)采用云单元方法向网格中分配质量;2)在网格中求引力势的泊松方程在傅里叶空间中的解;3)根据势能计算引力,并将引力插入到每个粒子位置。
7.根据权利要求6所述的N体模拟在异构架构的并行加速实现方法,其特征是,所述的分配质量,其权重函数W为:
Figure FDA0002774508000000021
其中:W为权重函数;S为形状函数且由不同的分配方法决定;x为粒子的坐标,其不同的下标代表不同的粒子;L=nl,其中l表示网格空间大小,n为倍数;分配质量后得到的分配点的密度ρi为:
Figure FDA0002774508000000022
8.根据权利要求6所述的N体模拟在异构架构的并行加速实现方法,其特征是,所述的引力势的泊松方程在傅里叶空间中的解是指:
Figure FDA0002774508000000023
其中:k为波矢,
Figure FDA0002774508000000024
Figure FDA0002774508000000025
分别为势能、格林函数和密度函数的傅里叶变换式,引力通过求解方程
Figure FDA0002774508000000026
得到,再通过以下方式插入原来的位置:f(xj)=∑iW(xj-xi)fi
9.根据权利要求1所述的N体模拟在异构架构的并行加速实现方法,其特征是,所述的更新粒子速度是指:根据短程力和牛顿第二定律计算粒子的加速度,并计算dt时间后粒子新的速度,并更新粒子的速度信息,具体为:vnew=vold+a*dt,其中:vnew、vold为粒子的新速度和原速度,a为粒子的加速度,其计算方式为:a=(fl+fs)/m,其中fl、fs分别为粒子所受的其余粒子的长程力和短程力,m为粒子质量。
10.一种实现上述任一权利要求所述方法的模拟系统,其特征在于,包括:数据读取模块、初始化模块、粒子位置更新模块、主机端设备端数据传输模块、粒子间短程力计算模块、粒子间长程力计算模块、粒子速度更新模块及后处理模块,其中:数据读取模块根据参数文件和初始场文件解析出网格、粒子速度及位置以及时间片信息并输出至初始化模块,初始化模块与粒子位置更新模块相连,根据粒子的速度更新位置,粒子位置更新模块与主机端设备端数据传输模块相连并传输粒子的位置分布信息,粒子间短程力计算模块也与主机端设备端数据传输模块相连并传输粒子所受的短程力,粒子间长程力计算模块与与粒子速度更新模块相连并传输粒子所受的合力,粒子速度更新模块与后处理模块及粒子位置更新模块相连并传输粒子的速度分布信息。
CN202011260657.3A 2020-11-12 2020-11-12 N体模拟在异构架构的并行加速实现方法 Active CN114490011B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011260657.3A CN114490011B (zh) 2020-11-12 2020-11-12 N体模拟在异构架构的并行加速实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011260657.3A CN114490011B (zh) 2020-11-12 2020-11-12 N体模拟在异构架构的并行加速实现方法

Publications (2)

Publication Number Publication Date
CN114490011A true CN114490011A (zh) 2022-05-13
CN114490011B CN114490011B (zh) 2024-06-18

Family

ID=81491050

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011260657.3A Active CN114490011B (zh) 2020-11-12 2020-11-12 N体模拟在异构架构的并行加速实现方法

Country Status (1)

Country Link
CN (1) CN114490011B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116107640A (zh) * 2023-02-17 2023-05-12 上海交通大学 针对dsmc算法缓存以及simd向量化的系统性优化系统
CN116225722A (zh) * 2023-05-08 2023-06-06 中国空气动力研究与发展中心计算空气动力研究所 流场变量的通信方法、装置、终端设备及存储介质
CN116911146A (zh) * 2023-09-14 2023-10-20 中南大学 三维重力场全息数值模拟及cpu-gpu加速方法
CN117690502A (zh) * 2024-02-04 2024-03-12 浪潮电子信息产业股份有限公司 一种分子动力学模拟系统及方法

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030014231A1 (en) * 2001-04-26 2003-01-16 International Business Machines Corporation System and method for molecular dynamic simulation
CN103345491A (zh) * 2013-06-26 2013-10-09 浙江大学 一种应用哈希Hash划分桶快速获得邻域的方法
CN105468439A (zh) * 2015-11-19 2016-04-06 华东师范大学 在cpu-gpu异构框架下遍历固定半径内邻居的自适应并行算法
CN107633123A (zh) * 2017-09-13 2018-01-26 浙江工业大学 一种用于光滑粒子流体动力学模拟出血及处理加速的方法
CN108595266A (zh) * 2018-04-18 2018-09-28 北京奇虎科技有限公司 基于区域内闲散算力的资源应用方法及装置、计算设备
CN109857543A (zh) * 2018-12-21 2019-06-07 中国地质大学(北京) 一种基于多节点多gpu计算的流线模拟加速方法
CN111368484A (zh) * 2020-03-19 2020-07-03 山东大学 基于神威架构的宇宙n体数值模拟优化方法及系统
CN111638979A (zh) * 2020-05-24 2020-09-08 中信银行股份有限公司 调用请求的处理方法、装置、电子设备及可读存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030014231A1 (en) * 2001-04-26 2003-01-16 International Business Machines Corporation System and method for molecular dynamic simulation
CN103345491A (zh) * 2013-06-26 2013-10-09 浙江大学 一种应用哈希Hash划分桶快速获得邻域的方法
CN105468439A (zh) * 2015-11-19 2016-04-06 华东师范大学 在cpu-gpu异构框架下遍历固定半径内邻居的自适应并行算法
CN107633123A (zh) * 2017-09-13 2018-01-26 浙江工业大学 一种用于光滑粒子流体动力学模拟出血及处理加速的方法
CN108595266A (zh) * 2018-04-18 2018-09-28 北京奇虎科技有限公司 基于区域内闲散算力的资源应用方法及装置、计算设备
CN109857543A (zh) * 2018-12-21 2019-06-07 中国地质大学(北京) 一种基于多节点多gpu计算的流线模拟加速方法
CN111368484A (zh) * 2020-03-19 2020-07-03 山东大学 基于神威架构的宇宙n体数值模拟优化方法及系统
CN111638979A (zh) * 2020-05-24 2020-09-08 中信银行股份有限公司 调用请求的处理方法、装置、电子设备及可读存储介质

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
SIAN JIN: ""Understanding GPU-Based Lossy Compression for Extrem-Scale Cosmological Simulations"", 《2020 IEEE INTERNATIONAL PARALLEL AND DISTRIBUTED PROCESSING SYMPOSIUM (IPDPS)》, 14 July 2020 (2020-07-14), pages 105 - 115 *
凌云萧萧: ""三分钟搞懂CPU, GPU, FPGA计算能力"", Retrieved from the Internet <URL:《https://zhuanlan.zhihu.com/p/33325253》> *
李宝峰: ""一种基于N-body模拟的混合加速策略设计与实现"", 《第十七届计算机工程与工艺年会暨第三届微处理器技术论坛论文集(上册)》, 20 July 2013 (2013-07-20), pages 385 - 389 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116107640A (zh) * 2023-02-17 2023-05-12 上海交通大学 针对dsmc算法缓存以及simd向量化的系统性优化系统
CN116107640B (zh) * 2023-02-17 2023-12-26 上海交通大学 针对dsmc算法缓存以及simd向量化的系统性优化系统
CN116225722A (zh) * 2023-05-08 2023-06-06 中国空气动力研究与发展中心计算空气动力研究所 流场变量的通信方法、装置、终端设备及存储介质
CN116911146A (zh) * 2023-09-14 2023-10-20 中南大学 三维重力场全息数值模拟及cpu-gpu加速方法
CN116911146B (zh) * 2023-09-14 2024-01-19 中南大学 三维重力场全息数值模拟及cpu-gpu加速方法
CN117690502A (zh) * 2024-02-04 2024-03-12 浪潮电子信息产业股份有限公司 一种分子动力学模拟系统及方法
CN117690502B (zh) * 2024-02-04 2024-05-17 浪潮电子信息产业股份有限公司 一种分子动力学模拟系统及方法

Also Published As

Publication number Publication date
CN114490011B (zh) 2024-06-18

Similar Documents

Publication Publication Date Title
CN114490011B (zh) N体模拟在异构架构的并行加速实现方法
US9679351B2 (en) Out-of-core ray tracing with memory-efficient page generation
US10007742B2 (en) Particle flow simulation system and method
Shen et al. Agent-based traffic simulation and traffic signal timing optimization with GPU
US9092901B2 (en) Parallel grid population
JP2013037691A (ja) 加速構造を構築するためのシステム、方法、及びコンピュータプログラムプロダクト
EP3933779A1 (en) Intersection testing in a ray tracing system
CN110516316B (zh) 一种间断伽辽金法求解欧拉方程的gpu加速方法
CN102393826B (zh) 一种基于多核并行处理的柔性场景连续碰撞检测方法
CN104360896A (zh) 一种基于gpu集群的并行流体仿真加速方法
CN106484532B (zh) 面向sph流体模拟的gpgpu并行计算方法
Bikker Improving Data Locality for Efficient In‐Core Path Tracing
CN109670001A (zh) 基于cuda的多边形栅格化gpu并行计算方法
Rajf et al. Comparison of road traffic simulation speed on CPU and GPU
Chentanez et al. GPU accelerated grid-free surface tracking
Kosiachenko Efficient GPU Parallelization of the Agent-Based Models Using MASS CUDA Library
Park et al. Transparent GPU memory management for DNNs
Schmidtke et al. Chunked bounding volume hierarchies for fast digital prototyping using volumetric meshes
CN116107640B (zh) 针对dsmc算法缓存以及simd向量化的系统性优化系统
US11966999B2 (en) Real-time simulation using material point method on graphics processing units
CN112528456B (zh) 一种异构节点计算系统及方法
CN116401916B (zh) 高质量三维体网格的生成方法、装置、介质及设备
US11709812B2 (en) Techniques for generating and processing hierarchical representations of sparse matrices
US20220374496A1 (en) Techniques for accelerating matrix multiplication computations using hierarchical representations of sparse matrices
CN109976810B (zh) 一种基于OpenCL的稠密矩阵乘GPU加速方法

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