CN111368484B - 基于神威架构的宇宙n体数值模拟优化方法及系统 - Google Patents

基于神威架构的宇宙n体数值模拟优化方法及系统 Download PDF

Info

Publication number
CN111368484B
CN111368484B CN202010195498.7A CN202010195498A CN111368484B CN 111368484 B CN111368484 B CN 111368484B CN 202010195498 A CN202010195498 A CN 202010195498A CN 111368484 B CN111368484 B CN 111368484B
Authority
CN
China
Prior art keywords
slave
core
cosmic
calculation
task
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
CN202010195498.7A
Other languages
English (en)
Other versions
CN111368484A (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.)
Shandong University
Original Assignee
Shandong 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 Shandong University filed Critical Shandong University
Priority to CN202010195498.7A priority Critical patent/CN111368484B/zh
Publication of CN111368484A publication Critical patent/CN111368484A/zh
Application granted granted Critical
Publication of CN111368484B publication Critical patent/CN111368484B/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
    • 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
    • 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/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs

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体数值模拟优化方法及系统。其中,该方法包括将同一目标进程的宇宙粒子数据打包且一次性传输至主核的相应进程,以分离MPI通信过程与宇宙N体数值模拟计算过程;在主核中将各个相同目标进程的宇宙粒子数据形成各个粒子对应的粒子包并按照数字形式从小到大逐个标记各个粒子包的ID值;构建任务列表,每个任务对应一对粒子包,将任务列表中的所有任务平均分配至各个从核上,保证各个从核的负载均衡;在各个从核上利用多项式来拟合erfc函数和exp函数,利用拟合的erfc函数和exp函数求解各个任务中每对粒子的相互作用力,得到从核计算结果;将各个从核计算结果均上传至主核进行汇总,实现宇宙N体的数值模拟。

Description

基于神威架构的宇宙N体数值模拟优化方法及系统
技术领域
本发明属于数值模拟优化领域,尤其涉及一种基于神威架构的宇宙N体数值模拟优化方法及系统。
背景技术
本部分的陈述仅仅是提供了与本发明相关的背景技术信息,不必然构成在先技术。
PhotoNs-2.0是国家天文台开发的一款宇宙N体数值模拟的软件,用于解决空间大尺度结构的形成演化,进而帮助研究包括宇宙物质分布、星系形成以及暗物质和能量等问题的本质,在神威超算平台上的移植和应用具有重要的意义。
在模拟粒子动力学系统中,每个粒子在物理力的影响下与所有其他粒子相互作用。对于物理力的计算都需要进行长程力和短程力的计算。在本软件中物理力的计算采用PM(Particle Meshmethod)和FMM(Fast Multipole Method)相结合的方式。其中PM是指粒子网格算法,被用于长程引力的计算;FMM是指快速多极子算法,被用于短程引力的计算。
“神威·太湖之光”是计算速度世界第三的超级计算机,也是目前国内计算速度最快的超级计算机。这样的计算机应当充分应用于科研及生产的各个领域,才能最大程度的体现出他的价值。“神威·太湖之光”搭载的是国家完全自主设计的“申威26010”众核处理器,具有不同于Intel及AMD等处理器的独特架构。“申威26010”处理器含有1个主核和1个从核阵列,从核阵列共有64个从核组成,按8*8的方式分布,每个从核的性能同主核基本相同,且每个从核都有自己的局部存储器(LDM),每个LDM大小为64K,从核访问LDM的效率等同于主核访问L2 Cache的效率。神威架构支持Fortran、C、C++编程语言,但是要同时使用主从核进行程序加速,需要用到神威自主设计的Athread加速线程库和SIMD扩展线程库。发明人发现,PhotoNs-2.0代码在神威平台上的初始移植版本的性能表现欠佳,其没有充分利用硬件资源,造成硬件资源浪费,且宇宙N体数值模拟速度慢的问题。
发明内容
为了解决上述问题,本发明提供一种基于神威架构的宇宙N体数值模拟优化方法及系统,其能够充分利用神威架构的硬件资源,提高宇宙N体的数值模拟速度。
为了实现上述目的,本发明采用如下技术方案:
本发明的第一方面提供一种基于神威架构的宇宙N体数值模拟优化方法,包括:
将同一目标进程的宇宙粒子数据打包且一次性传输至主核的相应进程,以分离MPI通信过程与宇宙N体数值模拟计算过程;
在主核中将各个相同目标进程的宇宙粒子数据形成各个粒子对应的粒子包并按照数字形式从小到大逐个标记各个粒子包的ID值;
构建任务列表,每个任务对应一对粒子包,将任务列表中的所有任务平均分配至各个从核上,保证各个从核的负载均衡;
在各个从核上利用多项式来拟合erfc函数和exp函数,利用拟合的erfc函数和exp函数求解各个任务中每对粒子的相互作用力,得到从核计算结果;
将各个从核计算结果均上传至主核进行汇总,实现宇宙N体的数值模拟。
本发明的第二方面提供一种基于神威架构的宇宙N体数值模拟优化系统,包括:
通信模块,其用于将同一目标进程的宇宙粒子数据打包且一次性传输至主核的相应进程,以分离MPI通信过程与宇宙N体数值模拟计算过程;
粒子包ID标记模块,其用于在主核中将各个相同目标进程的宇宙粒子数据形成各个粒子对应的粒子包并按照数字形式从小到大逐个标记各个粒子包的ID值;
任务平均分配模块,其用于构建任务列表,每个任务对应一对粒子包,将任务列表中的所有任务平均分配至各个从核上,保证各个从核的负载均衡;
从核计算结果获取模块,其用于在各个从核上利用多项式来拟合erfc函数和exp函数,利用拟合的erfc函数和exp函数求解各个任务中每对粒子的相互作用力,得到从核计算结果;
从核计算结果汇总模块,其用于将各个从核计算结果均上传至主核进行汇总,实现宇宙N体的数值模拟。
本发明的有益效果是:
本发明将同一目标进程的宇宙粒子数据打包且一次性传输至主核的相应进程,以分离MPI通信过程与宇宙N体数值模拟计算过程,优化后的通信并不存在各进程相互等待的时间,从而进一步提高了通信的效率。
本发明将任务列表中的所有任务平均分配至各个从核上,保证各个从核的负载均衡,解决了从核上的负载均衡问题,也解决了从核间的写冲突问题。
本发明在各个从核上利用多项式来拟合erfc函数和exp函数,利用拟合的erfc函数和exp函数求解各个任务中每对粒子的相互作用力,得到从核计算结果,使用函数拟合的形式,在达到极高的计算精度的同时,也能够使用向量化的方式极大的提高多项式计算的速度,经过模拟函数的优化后,从核函数解决了频繁访问主存的问题,使得从核计算的效果的到了极大的性能提升。
附图说明
构成本发明的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。
图1是本发明实施例提供的一种基于神威架构的宇宙N体数值模拟优化方法流程图;
图2(a)是本发明实施例提供的通信与计算混杂的情况;
图2(b)是本发明实施例提供的通信与计算分离的情况;
图3(a)是本发明实施例提供的原MPI通信流程;
图3(b)是本发明实施例提供的减少MPI通信空的通信流程;
图4是本发明实施例提供的I粒子任务会被分配到两个从核上的情况;
图5是本发明实施例提供的exp拟合函数和exp库函数的计算结果对比图;
图6是本发明实施例提供的erfc拟合函数和erfc库函数的计算结果对比图;
图7是本发明实施例提供的原程序及各优化版本在8进程、64进程、512进程情况加速比图;
图8是本发明实施例提供的一种基于神威架构的宇宙N体数值模拟优化系统结构示意图。
具体实施方式
下面结合附图与实施例对本发明作进一步说明。
应该指出,以下详细说明都是例示性的,旨在对本发明提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本发明所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本发明的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
实施例1
图1给出了本实施例的一种基于神威架构的宇宙N体数值模拟优化方法流程图。
下面结合图1给出本实施例的基于神威架构的宇宙N体数值模拟优化方法的具体实施过程。
如图1所示,本实施例的一种基于神威架构的宇宙N体数值模拟优化方法,包括:
步骤S101:将同一目标进程的宇宙粒子数据打包且一次性传输至主核的相应进程,以分离MPI通信过程与宇宙N体数值模拟计算过程。
在原始PhotoNs-2.0代码程序中,进程与进程之间的粒子受力情况需要按照“通信-计算”的模式计算27轮,这种通信与计算混杂在一起的方式会造成计算资源的空等,如图2(a)所示。
从图2(a)中通信与计算混杂的情况可以看到,多个进程在一轮通信中需要同时开始,所以在每一轮结束的部分都会进行一次同步,保证所有的进程都将这一轮进行结束,才会开始下一轮。下面通过改变其计算模式,原先的程序是按照“通信-计算”的模式进行27轮,而我们将其修改为两大部分任务,第一部分任务是完成所有的MPI通信,第二部分任务是完成所有的计算。之所以这样修改,是因为进行这样的修改之后,计算部分可以不需要等待其他进程计算结束而独立的进行。如图2(a)就是以进行三轮迭代为例子进行的简单描述,可以看到,如图2(b)的通信与计算分离的情况要比通信与计算混杂的情况更快速的完成。其中,MPI是一个跨语言的通讯协议。
通过通信与计算分离的优化操作,我们减少了大量的空等时间,但是我们观察图1通信与计算分离的情况,会发现在MPI通信部分中,一个进程在发送完本轮的数据之后,还是需要等待本轮的其他所有进程传输完各自的数据才能进入下一轮数据的发送操作。这样也会产生不少的空等时间,为此,我们在计算与通信分离的基础上,
针对通信部分又做了进一步优化。图3(a)中原MPI通信流程,图3(b)减少MPI通信空等的通信流程。为了消除MPI通信过程之中的空等,我们重新组织了MPI发送的数据。原程序MPI通信27轮的根本原因是本轮MPI的传输数据需要在本轮中产生然后再发送。为此我们重新组织了数据,可以一次性传输原先需分27轮发送给同一目标进程的数据。效果如图3所示,可以看到,优化后的MPI通信并不存在各进程相互等待的时间,从而进一步提高了MPI通信的效率。
将同一目标进程的宇宙粒子数据打包且一次性传输至主核的相应进程,以分离MPI通信过程与宇宙N体数值模拟计算过程,优化后的通信并不存在各进程相互等待的时间,从而进一步提高了通信的效率。
步骤S102:在主核中将各个相同目标进程的宇宙粒子数据形成各个粒子对应的粒子包并按照数字形式从小到大逐个标记各个粒子包的ID值。
经过通信与计算分离及MPI通信优化之后,通信过程不再是程序的热点问题,程序的耗时转移到了对作用力的计算上。而对计算优化最有用的就是充分利用从核计算资源,将计算任务分配到从核上进行执行。
之所以使用从核执行比原先只用主核执行程序要快,是因为神威的每个节点由一个主核和64个从核组成,而且主核和从核的计算性能是差不多的,因此如果抛却带宽的影响,理论上64个从核执行要比主核快64倍。
在原程序中,作用力是使用迭代的方式进行计算的,每个迭代处理的是两个粒子包I、J,为了能将计算任务分配到从核上执行,我们抽象出任务的概念,每个任务对应一对粒子包I、J,即一次迭代所处理的数据,因为各迭代之间并不相互依赖,所以每个任务都可以独立的处理。
如图4所示,在对任务按I粒子进行排序之后按块将任务分配到各个从核上。因为每个任务在从核上的处理时间大致相等,所以我们尽量保证分配给各个从核的任务块等大,这样就保证了各个从核上的负载均衡,即每个从核处理的任务量基本相等,避免了很多从核空等一个从核处理任务的情况。之所以我们要将任务按I进行排序,是为了解决写冲突的问题。首先分析一下写冲突出现的情况,如果我们不按照I粒子进行排序,那么I粒子在任务队列中就是随机出现的,在进行任务分配的时候就会分配到多个不同的从核上,所以在从核计算过程中,很容易出现两个从核同时写一个I粒子的作用力结果的情况,这样就出现了写冲突。而将任务按I粒子进行排序之后,包含I粒子的任务会出现两种情况:
第一种情况是,所有I粒子任务全部分布在同一个从核上,这样只有一个从核去写I粒子的计算结果,就避免了写冲突问题;
第二种情况是,I粒子任务会被分配到两个从核上,但是I粒子任务的前半段会分配在前一个从核的后半部分,I粒子任务的后半段会分配的后一个从核的前半部分,即图4所画的情况相同,在这种情况下,在后一个从核处理I粒子任务的时候,前一个从核在处理非I粒子任务,所以后一个从核在写I粒子的作用力的时候,前一个从核并不会同时写I粒子的作用力结果;而当前一个从核计算I粒子的时候,后一个从核早就将I粒子任务计算完毕,所以前一个从核写I粒子结果的时候,后一个从核也并不会同时写I粒子的计算结果,从而这种情况也不会出现写冲突问题。
通过按I粒子排序的任务队列,将任务平均分配到了64个从核上,即解决了从核上的负载均衡问题,也解决了从核间的写冲突问题。
步骤S103:构建任务列表,每个任务对应一对粒子包,将任务列表中的所有任务平均分配至各个从核上,保证各个从核的负载均衡。
其中,将erfc函数和exp函数的计算均拆分为两个部分,整数部分和小数部分;其中,整数部分按e的指数等于数组下标的情况存放在一个数组中,利用查表实现,超出整数查表范围的情况,利用移位的快速幂计算形式实现;对于小数部分,编制python脚本来求解erfc函数和exp函数小数部分的多项式系数。
具体地,从核计算时间的提升限制在两个函数计算上,分别是erfc函数和exp函数。erfc函数和exp函数是两个库函数,从核调用这两个库函数会频繁的访问主存,导致从核的带宽极低,严重影响了从核的性能。
为了解决以上问题,在从核上自己模拟实现计算函数,针对exp函数采用泰勒展开式进行计算,因为在x=0处的泰勒展开式只有在0的邻域内才能拟合精确,而且我们的程序对exp及erfc函数的精度又要求极高(精度要求在10^-13次方左右),如果直接按x的原值进行展开,exp计算的精度完全达不到要求,所以将exp函数的计算拆分为两个部分,整数部分和小数部分。计算公式如下面公式所示:
exp(x)=ex=e[x].ex-[x]
Figure GDA0002476179730000081
对于整数计算部分,我们将大量的exp的整数计算结果按e的指数等于数组下标的情况存放在一个数组中,利用查表实现。对于那些x值超出整数查表范围的情况,利用移位的快速幂计算形式实现,这样将x转换为二进制,只需要进行二进制长度次的移位和计算就可以计算出e[x]的结果。
对于小数部分,起初使用泰勒展开式的形式进行计算,计算出的ex-[x]具有很高的精度,同时还发现小数计算部分可以进行向量化的形式进行优化,在经过向量化之后,小数计算的效果获得了很不错的性能提升。但是最终小数部分我们并没有采用此计算方式,我们最终使用了函数拟合的形式,它相较于使用泰勒展开式拥有更快的速度,且精度也完全可以满足要求。除了exp的小数部分的计算外,关于erfc函数的计算我们也使用了函数拟合的形式。
函数拟合就是利用多项式来逼近真实函数,利用多项式来逼近实际函数的难点就在于多项式各阶系数的确定。为此,编制python脚本来求解erfc函数和exp函数小数部分的多项式系数。最终的实现效果十分出色,只需要12阶就可以实现erfc函数和exp函数小数部分的高精度拟合,而且这样的多项式形式非常容易实现向量化。最终exp、erfc拟合函数和exp、erfc库函数的计算结果对比如图5及图6所示。
从图5及图6可以看到在函数的整体情况(0.1精度)上,两条线几乎完全重合,看不出任何差别,为了展现出我们的模拟函数和库函数的结果的细微差别,我们将精度提升到10-17。在10-17精度下,可以看出明显的差别。最终模拟函数的精度可以达到10-14~10-15
使用函数拟合的形式,在达到极高的计算精度的同时,也能够使用向量化的方式极大的提高多项式计算的速度,经过模拟函数的优化后,从核函数解决了频繁访问主存的问题,使得从核计算的效果的到了极大的性能提升。
步骤S104:在各个从核上利用多项式来拟合erfc函数和exp函数,利用拟合的erfc函数和exp函数求解各个任务中每对粒子的相互作用力,得到从核计算结果。
在photoNs-2.0项目中,同一对粒子间的计算过程相同,且被重复计算两遍。即任务(i,j)和(j,i)的计算结果相同,但是在程序中却被计算了两遍。如果我们能够只计算(i,j)的结果,而将此结果直接当作(j,i)的计算结果,就可以省去对(j,i)的计算过程,这样就可以减少一半的计算量,这也就一定程度上意味着省去一半的计算时间。
在具体实施中,在求解各个任务中每对粒子的相互作用力的过程中,去除任意两个粒子相互作用力的重复计算。
其中,去除任意两个粒子相互作用力的重复计算的过程为:
对于任务(i,j)和任务(j,i),当i≠j时,比较i和j的大小,当i<j时取(i,j),当i>j时,取(j,i);其中,i和j是粒子包的ID值。
此处的优化针对的是:粒子间相互作用力的计算。由于粒子间的作用力是等大、反向的,所以对于一对粒子间作用力的数值计算只需要计算一次,软件源码中是计算了两遍,即计算粒子i对粒子j的作用力时计算了一遍,计算粒子j对粒子i的作用力时也计算了一遍,属于冗余计算,我们对此的优化是去除冗余计算,只计算一次。
为了避免写冲突的问题,在主核上为每个从核都开辟了一段额外的存储空间,使每个从核将(i,j)计算的结果写回主核空间中(j,i)结果对应的位置。因为每个从核在主核都拥有各自的空间,所以在从核写回的时候一定不会出现写冲突的问题。
步骤S104:将各个从核计算结果均上传至主核进行汇总,实现宇宙N体的数值模拟。
经过以上手段的优化之后,我们的项目获得了优异的性能提升。以下是我们在8进程、64进程、512进程的情况下进行的原版项目和各个优化版本的对比,其中各版本的优化是按照优化策略引进的先后顺序排序的。如表1所示,我们将原程序作为基础版本,各个版本的加速比都是针对该版本进行的。
表1原程序及各优化版本在8进程、64进程、512进程情况下的性能统计
Figure GDA0002476179730000111
从表1中可以知道我们最终在8进程、64进程、512进程的情况下获得了62倍、93倍、106倍的提升。为了直观的观察各个版本的加速比提升,我们根据这些数据绘制了各版本的加速比图表,如图7所示。
实施例2
如图8所示,本实施例一种基于神威架构的宇宙N体数值模拟优化系统,其包括:
(1)通信模块,其用于将同一目标进程的宇宙粒子数据打包且一次性传输至主核的相应进程,以分离MPI通信过程与宇宙N体数值模拟计算过程;
(2)粒子包ID标记模块,其用于在主核中将各个相同目标进程的宇宙粒子数据形成各个粒子对应的粒子包并按照数字形式从小到大逐个标记各个粒子包的ID值;
(3)任务平均分配模块,其用于构建任务列表,每个任务对应一对粒子包,将任务列表中的所有任务平均分配至各个从核上,保证各个从核的负载均衡;
(4)从核计算结果获取模块,其用于在各个从核上利用多项式来拟合erfc函数和exp函数,利用拟合的erfc函数和exp函数求解各个任务中每对粒子的相互作用力,得到从核计算结果;
其中,在所述从核计算结果获取模块中,在求解各个任务中每对粒子的相互作用力的过程中,去除任意两个粒子相互作用力的重复计算。
在所述从核计算结果获取模块中,去除任意两个粒子相互作用力的重复计算的过程为:
对于任务(i,j)和任务(j,i),当i≠j时,比较i和j的大小,当i<j时取(i,j),当i>j时,取(j,i);其中,i和j是粒子包的ID值。
在所述从核计算结果获取模块中,将erfc函数和exp函数的计算均拆分为两个部分,整数部分和小数部分;其中,整数部分按e的指数等于数组下标的情况存放在一个数组中,利用查表实现,超出整数查表范围的情况,利用移位的快速幂计算形式实现;对于小数部分,编制python脚本来求解erfc函数和exp函数小数部分的多项式系数。
(5)从核计算结果汇总模块,其用于将各个从核计算结果均上传至主核进行汇总,实现宇宙N体的数值模拟。
在所述从核计算结果汇总模块中,在主核上为每个从核都开辟有一段额外的存储空间,使每个从核将其对应的从核计算结果写回主核空间对应的位置。
本实施例将同一目标进程的宇宙粒子数据打包且一次性传输至主核的相应进程,以分离MPI通信过程与宇宙N体数值模拟计算过程,优化后的通信并不存在各进程相互等待的时间,从而进一步提高了通信的效率。
本实施例将任务列表中的所有任务平均分配至各个从核上,保证各个从核的负载均衡,解决了从核上的负载均衡问题,也解决了从核间的写冲突问题。
本实施例在各个从核上利用多项式来拟合erfc函数和exp函数,利用拟合的erfc函数和exp函数求解各个任务中每对粒子的相互作用力,得到从核计算结果,使用函数拟合的形式,在达到极高的计算精度的同时,也能够使用向量化的方式极大的提高多项式计算的速度,经过模拟函数的优化后,从核函数解决了频繁访问主存的问题,使得从核计算的效果的到了极大的性能提升。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种基于神威架构的宇宙N体数值模拟优化方法,其特征在于,包括:
将同一目标进程的宇宙粒子数据打包且一次性传输至主核的相应进程,以分离MPI通信过程与宇宙N体数值模拟计算过程;
在主核中将各个相同目标进程的宇宙粒子数据形成各个粒子对应的粒子包并按照数字形式从小到大逐个标记各个粒子包的ID值;
构建任务列表,每个任务对应一对粒子包,将任务列表中的所有任务平均分配至各个从核上,保证各个从核的负载均衡;
在各个从核上利用多项式来拟合erfc函数和exp函数,利用拟合的erfc函数和exp函数求解各个任务中每对粒子的相互作用力,得到从核计算结果;
将各个从核计算结果均上传至主核进行汇总,实现宇宙N体的数值模拟;
在获取从核计算结果时,将erfc函数和exp函数的计算均拆分为两个部分,整数部分和小数部分;其中,整数部分按e的指数等于数组下标的情况存放在一个数组中,利用查表实现,超出整数查表范围的情况,利用移位的快速幂计算形式实现;对于小数部分,编制python脚本来求解erfc函数和exp函数小数部分的多项式系数。
2.如权利要求1所述的基于神威架构的宇宙N体数值模拟优化方法,其特征在于,在求解各个任务中每对粒子的相互作用力的过程中,去除任意两个粒子相互作用力的重复计算。
3.如权利要求2所述的基于神威架构的宇宙N体数值模拟优化方法,其特征在于,去除任意两个粒子相互作用力的重复计算的过程为:
对于任务(i,j)和任务(j,i),当i≠j时,比较i和j的大小,当i<j时取(i,j),当i>j时,取(j,i);其中,i和j是粒子包的ID值。
4.如权利要求1所述的基于神威架构的宇宙N体数值模拟优化方法,其特征在于,在主核上为每个从核都开辟有一段额外的存储空间,使每个从核将其对应的从核计算结果写回主核空间对应的位置。
5.一种基于神威架构的宇宙N体数值模拟优化系统,其特征在于,包括:
通信模块,其用于将同一目标进程的宇宙粒子数据打包且一次性传输至主核的相应进程,以分离MPI通信过程与宇宙N体数值模拟计算过程;
粒子包ID标记模块,其用于在主核中将各个相同目标进程的宇宙粒子数据形成各个粒子对应的粒子包并按照数字形式从小到大逐个标记各个粒子包的ID值;
任务平均分配模块,其用于构建任务列表,每个任务对应一对粒子包,将任务列表中的所有任务平均分配至各个从核上,保证各个从核的负载均衡;
从核计算结果获取模块,其用于在各个从核上利用多项式来拟合erfc函数和exp函数,利用拟合的erfc函数和exp函数求解各个任务中每对粒子的相互作用力,得到从核计算结果;
从核计算结果汇总模块,其用于将各个从核计算结果均上传至主核进行汇总,实现宇宙N体的数值模拟;
在所述从核计算结果获取模块中,将erfc函数和exp函数的计算均拆分为两个部分,整数部分和小数部分;其中,整数部分按e的指数等于数组下标的情况存放在一个数组中,利用查表实现,超出整数查表范围的情况,利用移位的快速幂计算形式实现;对于小数部分,编制python脚本来求解erfc函数和exp函数小数部分的多项式系数。
6.如权利要求5所述的基于神威架构的宇宙N体数值模拟优化系统,其特征在于,在所述从核计算结果获取模块中,在求解各个任务中每对粒子的相互作用力的过程中,去除任意两个粒子相互作用力的重复计算。
7.如权利要求6所述的基于神威架构的宇宙N体数值模拟优化系统,其特征在于,在所述从核计算结果获取模块中,去除任意两个粒子相互作用力的重复计算的过程为:
对于任务(i,j)和任务(j,i),当i≠j时,比较i和j的大小,当i<j时取(i,j),当i>j时,取(j,i);其中,i和j是粒子包的ID值。
8.如权利要求5所述的基于神威架构的宇宙N体数值模拟优化系统,其特征在于,在所述从核计算结果汇总模块中,在主核上为每个从核都开辟有一段额外的存储空间,使每个从核将其对应的从核计算结果写回主核空间对应的位置。
CN202010195498.7A 2020-03-19 2020-03-19 基于神威架构的宇宙n体数值模拟优化方法及系统 Active CN111368484B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010195498.7A CN111368484B (zh) 2020-03-19 2020-03-19 基于神威架构的宇宙n体数值模拟优化方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010195498.7A CN111368484B (zh) 2020-03-19 2020-03-19 基于神威架构的宇宙n体数值模拟优化方法及系统

Publications (2)

Publication Number Publication Date
CN111368484A CN111368484A (zh) 2020-07-03
CN111368484B true CN111368484B (zh) 2022-04-15

Family

ID=71210743

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010195498.7A Active CN111368484B (zh) 2020-03-19 2020-03-19 基于神威架构的宇宙n体数值模拟优化方法及系统

Country Status (1)

Country Link
CN (1) CN111368484B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112306678B (zh) * 2020-10-22 2022-10-04 中国海洋大学 一种基于异构众核处理器的算法并行处理方法及系统
CN114490011A (zh) * 2020-11-12 2022-05-13 上海交通大学 N体模拟在异构架构的并行加速实现方法
CN112765870B (zh) * 2021-01-20 2022-05-06 中国科学院计算机网络信息中心 一种基于gpu的n体模拟程序性能优化方法
CN116167304B (zh) * 2023-04-23 2023-07-25 山东省计算中心(国家超级计算济南中心) 基于神威架构的油藏数值模拟gmres优化方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106095583A (zh) * 2016-06-20 2016-11-09 国家海洋局第海洋研究所 基于新神威处理器的主从核协同计算编程框架
CN107273094A (zh) * 2017-05-18 2017-10-20 中国科学院软件研究所 一种适应于“神威·太湖之光”上hpcg优化的数据结构及其高效实现方法
CN109766208A (zh) * 2019-01-10 2019-05-17 国家超级计算无锡中心 基于寄存器间通信的非对齐内存访问加速方法
CN110780842A (zh) * 2019-10-25 2020-02-11 无锡恒鼎超级计算中心有限公司 基于神威架构的船舶三维声弹性模拟计算的并行优化方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106095583A (zh) * 2016-06-20 2016-11-09 国家海洋局第海洋研究所 基于新神威处理器的主从核协同计算编程框架
CN107273094A (zh) * 2017-05-18 2017-10-20 中国科学院软件研究所 一种适应于“神威·太湖之光”上hpcg优化的数据结构及其高效实现方法
CN109766208A (zh) * 2019-01-10 2019-05-17 国家超级计算无锡中心 基于寄存器间通信的非对齐内存访问加速方法
CN110780842A (zh) * 2019-10-25 2020-02-11 无锡恒鼎超级计算中心有限公司 基于神威架构的船舶三维声弹性模拟计算的并行优化方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Global Simulation of Planetary Rings on Sunway TaihuLight;Masaki Iwasawa 等;《ICCS Camera Ready Version 2018》;20181231;全文 *
快速多极子方法在申威众核处理器上的实现和优化;王武 等;《计算机工程与科学》;20190731;第41卷(第7期);全文 *

Also Published As

Publication number Publication date
CN111368484A (zh) 2020-07-03

Similar Documents

Publication Publication Date Title
CN111368484B (zh) 基于神威架构的宇宙n体数值模拟优化方法及系统
CN104714850B (zh) 一种基于opencl的异构共同计算均衡方法
CN109002659B (zh) 一种基于超级计算机的流体机械仿真程序优化方法
CN104820657A (zh) 一种基于嵌入式异构多核处理器上的核间通信方法及并行编程模型
CN108509270B (zh) 一种国产申威26010众核处理器上K-means算法的高性能并行实现方法
CN111858066B (zh) 气体动理论统一算法中的cpu+gpu异构并行优化方法
CN110929456B (zh) 移动粒子法并行计算等效粒子负载均衡加速方法
CN104765589A (zh) 基于mpi的网格并行预处理方法
CN111444134A (zh) 分子动力学模拟软件的并行pme的加速优化方法及系统
CN109918182A (zh) 虚拟化技术下的多gpu任务调度方法
CN110955732B (zh) 一种用于在Spark环境中实现分区负载均衡的方法和系统
Du et al. Model parallelism optimization for distributed inference via decoupled CNN structure
Bhatelé et al. Benefits of topology aware mapping for mesh interconnects
Dzafic et al. High performance power flow algorithm for symmetrical distribution networks with unbalanced loading
CN114970294A (zh) 基于神威架构的三维应变仿真pcg并行优化方法及系统
CN112686379A (zh) 集成电路装置、电子设备、板卡和计算方法
CN114201287B (zh) 一种基于cpu+gpu异构平台协同处理数据的方法
CN107992358A (zh) 一种适用于核外图处理系统的异步io执行方法及系统
CN111475205B (zh) 一种基于数据流解耦合的粗粒度可重构阵列结构设计方法
CN116167304B (zh) 基于神威架构的油藏数值模拟gmres优化方法及系统
CN110502337B (zh) 针对Hadoop MapReduce中混洗阶段的优化系统
Li et al. Performance optimization algorithm of radar signal processing system
CN113297537B (zh) 一种稀疏结构化三角方程组求解的高性能实现方法和装置
CN113704691B (zh) 一种申威众核处理器的小规模对称矩阵并行三对角化方法
Deng et al. CPU/GPU computing for an implicit multi-block compressible Navier-Stokes solver on heterogeneous platform

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