一种面向异构集群的三维中子输运特征线并行求解方法

未命名 07-20 阅读:92 评论:0


1.本发明属于数值核反应堆中子输运计算机模拟技术领域,特别是涉及一种面向异构集群的三维中子输运特征线并行求解方法。


背景技术:

2.反应堆物理的中心问题之一就是要确定反应堆内中子通量密度按空间和能量的分布。常见的中子输运求解方法有特征线法、离散纵标法、蒙特卡洛算法和其他混合方法。其中,特征线法(method of characteristics,moc)相对其他算法具有模型简单、计算相对准确、可以适应复杂几何、易于任务分解等优点。
3.玻尔兹曼输运方程用于描述中子在介质中的输运过程,稳态中子输运玻尔兹曼方程的形式如下:
[0004][0005]
其中,r为平面位置向量,ω为角方向向量,e为中子能量,ψ为中子角通量,∑
t
为中子总截面,q为总中子源项,q具体可以表示为:
[0006][0007]
其中,∑s为中子散射截面,∑f为中子裂变截面,χ为中子裂变能谱。
[0008]
由于难以求解偏微分方程的精确解,一般使用数值方法去计算其近似解。特征线法是一种确定性方法,在几何空间区域中设置有限段离散的轨迹,将连续玻尔兹曼方程转化为可以用计算机编程实现的沿轨迹段的迭代求解方程组。经过多群能量近似、空间坐标离散、各向同性近似、平源区近似等数学变换后,在三维特征线求解算法中,标通量最终可以根据沿每条轨迹段的角通量变化量δψ
k,i,g,p
进行计算,其形式如下:
[0009][0010]
其中,k为空间坐标向量,i为平源区,g为能群,p为极角,ω为求积组权重,δψ
k,i,g,p
具体可以表示为:
[0011][0012]
其中,s为轨迹段,τ为光学长度。
[0013]
三维中子输运特征线程序的主要计算任务就是在源迭代循环中不断迭代计算公式(3),在每一次循环中会遍历三维几何空间内被平源区截取的所有轨迹段,计算中子输运过程中沿轨迹段的角通量变化,并以此来更新标通量,直到源迭代收敛或跳出循环。
[0014]
然而,在求解大型算例或精细化算例时,随着几何区域和特征线密度等参数的细
化,轨迹分布变密,被平源区截取的轨迹段的数量将增长的非常快,甚至以亿为单位计数,这会导致三维特征线程序的源迭代计算非常耗时,同时程序会对轨迹段产生更多的存储需求。以串行三维中子输运特征线程序为例,输运求解时间如图2所示,特征线在上亿规模时耗时超过5个小时,而百亿特征线规模的程序耗时将会以天为单位,因此随着算例规模的扩大和参数的细化,程序模拟的效率问题是影响程序求解规模的关键问题。
[0015]
基于模块化区域分解的并行算法按照几何区域进行任务划分,可以实现跨节点的进程级并行,每个进程分别计算几何区域内的输运扫描过程,可以提高程序模拟的运行速度。然而在源迭代过程中会多次遍历所有3d轨迹和轨迹段,这一过程大约占各进程运行时间的90%以上,仅按照几何区域划分进行并行化的算法,其可扩展性严重受限于源迭代算法,尤其是输运扫描过程,因为随着区域划分的数量越来越多,仍需串行执行的轨迹生成、轨迹分段等预处理操作和源迭代中输运扫描的代码块占比将越来越大,导致并行效率下降。
[0016]
william等人提出了用gpu加速卡加速模块化2d moc方法来模拟中子输运过程的技术,以2d轨迹和极角为单位进行gpu线程的任务划分,针对输运扫描算法的嵌套结构使用区域分解算法对2d moc方法进行大规模并行化,模拟2d c5g7基准题时的加速比可以超过50倍。但在其实现中,轨迹是按照方位角和轨迹链索引进行遍历,再分别进行单条轨迹拷贝(包括轨迹段数组),随着轨迹数量的增加,会大幅提高设备端拷贝方法的总启停时间,在对大规模算例进行模拟时的效率将迅速降低。另外,此方法提供的输运扫描并行算法并不能直接适用于3d moc方法,由于3d轨迹需要引入对轴向极角和轨迹堆上索引的遍历,3d moc的异构加速实现需要考虑新的线程任务划分方式,另外还会导致数据传输量大、存储受限等问题。


技术实现要素:

[0017]
本发明的目的是提供一种面向异构集群的三维中子输运特征线并行求解方法,以解决上述现有技术存在的问题。
[0018]
为实现上述目的,本发明提供了一种面向异构集群的三维中子输运特征线并行求解方法,包括以下步骤:
[0019]
s1.参数初始化;
[0020]
s2.生成轨迹段;
[0021]
s3.封装特征线数据并传输至设备端;
[0022]
s4.输运扫描异构计算;
[0023]
s5.源迭代终止判断;
[0024]
s6.写出模拟结果;
[0025]
进一步,s1中所述参数初始化具体为:初始化几何、特征线以及并行化参数,从xml配置文件和命令行中读取输入参数,包括求积组、方位角、极角、轨迹间距、能群数、材料截面、进程数、加速卡数、区域划分配置和收敛误差限。根据区域划分配置分配cpu端计算任务,将几何空间划分成若干区域,将mpi进程绑定至各区域,每个mpi进程只计算穿过该区域的3d轨迹和轨迹段。
[0026]
进一步,s2所述生成轨迹段具体为:每个mpi进程根据方位角和平面轨迹间距在几
何区域内生成2d轨迹、2d轨迹链,再根据极角和轴向轨迹间距生成3d轨迹,并进行轨迹分段。
[0027]
进一步,s3所述封装特征线数据并传输至设备端具体为:每个mpi进程根据dcu卡数平均分配3d轨迹,在cpu端预处理特征线数据,将按方位角、方位角序号、极角、轴向轨迹堆序号索引的3d轨迹和轨迹段转化为连续编号的特征线数据,创建设备端索引数组用于定位在封装后数据中的位置,并将特征线数据和索引异步传输至各加速卡的设备端显存。另外将材料、平源区、求积权重数据传输至设备端。
[0028]
进一步,s4所述输运扫描异构计算具体为:使用dcu加速源迭代计算,遍历所有3d轨迹及其轨迹段,按公式:
[0029]
其中,k为特征线,i为平源区,g为能群,
[0030]
计算沿特征线运动方向上的角通量变化量,具体为:
[0031]
s41.主机端异步调用输运扫描核函数,在核函数内部遍历所有3d轨迹,按照3d轨迹id和能群的组合索引划分dcu线程的计算任务,每个线程在一轮中只负责一条3d轨迹在一个能群上的输运扫描计算。
[0032]
s42.在每次计算任务开始之前,block内所有线程连续访存本轮所需的角通量,并写入共享内存lds中,各线程再从lds访存当前轨迹的角通量。
[0033]
s43.各线程遍历所有轨迹段,在循环中通过预取待计算的轨迹段来提高访存效率,并沿轨迹运动方向计算本轮轨迹段对标通量的贡献。
[0034]
s44.将沿轨迹积累的通量变化写入当前轨迹的角通量中,再根据边界条件将通量变化写入当前轨迹出射的邻接轨迹对应的临时通量数组中。
[0035]
s45.计算完毕后,各线程更新下一轮要计算的轨迹编号和能群编号。
[0036]
s46.重复步骤s42-s45,直到计算完所有轨迹下的所有能群对应的特征线法输运扫描过程。
[0037]
s47.等待所有设备端完成输运计算。
[0038]
s48.每一次源迭代计算后,将设备端计算的角通量数组传输至cpu端,相邻进程交换边界角通量信息,再将更新后的角通量传输回设备端。
[0039]
s49.用所有经过同一平源区的角通量来更新标通量。
[0040]
s410.用标通量和散射截面更新有效增殖系数keff,并计算残差。
[0041]
进一步,s5所述源迭代终止判断具体为:判断当前是否达到最大迭代次数max
iter
或残差是否小于收敛阈值,若是,则结束源迭代循环,执行s6;否则,重复执行s4。
[0042]
进一步,s6所述写出模拟结果具体为:将设备端计算出的标通量传输至cpu端,根据配置文件写出有效增殖系数和通量分布。
[0043]
本发明的技术效果为:
[0044]
本发明采用的三维特征线法可以有效求解数值堆原型系统的中子输运过程,实现高精细、高保真、高效率的输运求解。
[0045]
本发明在每个节点使用一个进程的情况下,一个进程调度多块dcu进行协同计算,面向异构混合集群设计了三维特征线多级并行算法,可以进一步对求解任务进行细分,充
分利用每个节点的计算能力,同时,在三维特征线输运扫描异构加速算法中,面向dcu加速卡的存储结构和访存特性,实现了基于共享内存lds的访存合并以及轨迹段预取优化,可以有效提高访存带宽的利用率。
[0046]
本发明设计了多级任务并行策略以及面向异构加速卡的优化方案,可以充分利用混合架构的计算优势,从而大幅提高三维中子输运模拟程序应用于大规模算例时的求解速度,使三维步特征线中子输运模拟程序在cpu+dcu异构集群环境下达到更快的求解速度和良好的可扩展性。
附图说明
[0047]
构成本技术的一部分的附图用来提供对本技术的进一步理解,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
[0048]
图1为面向异构集群的三维特征线程序并行方法的整体流程图;
[0049]
图2为现有技术中串行三维特征线程序模拟时间随特征线数量变化的测试结果的示意图;
[0050]
图3为3d轨迹和轨迹段数据封装方法以及向设备端连续拷贝的流程示意图;
[0051]
图4为面向异构集群的三维中子输运特征线法多级任务划分示意图;
[0052]
图5为面向dcu异构集群的三维中子输运特征线法输运扫描核函数的实现方法流程图;
[0053]
图6为面向dcu加速卡实现的角通量访存优化方案示意图;
[0054]
图7为三维几何区域块之间的边界轨迹角通量通信示意图;
[0055]
图8为面向dcu异构集群的三维中子输运特征线程序的强可扩展性测试结果图。
具体实施方式
[0056]
需要说明的是,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本技术。
[0057]
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0058]
三维特征线法可以有效求解数值堆原型系统的中子输运过程,实现高精细、高保真、高效率的输运求解是构建数值反应堆的关键问题之一。本发明的目的在于针对三维特征线中子输运程序的源迭代输运扫描过程,面向搭载深度计算器(deep computing unit,dcu)的异构集群,提供一种三维特征线输运扫描模块的异构加速算法。
[0059]
由于三维特征线法的轨迹索引方式更加复杂,在实现并行算法时需要重新按照轨迹编号和能群编号设计线程的任务划分方式。此外,与二维特征线法的异构加速算法相比,三维特征线法在预处理生成轨迹时,在生成2d轨迹的基础上,还需要按照极角和轴向轨迹间距生成3d轨迹和轨迹段,最终轨迹段的数量可能会比2d moc程序生成的多数千倍。将一条3d轨迹拷贝至设备端时,需要将其轨迹段数组拷贝到设备显存,再将3d轨迹对象拷贝至设备显存,最后将轨迹段数组的指针拷贝到设备显存的轨迹对象上,一共需要启动(3*3d轨迹数量)次设备端拷贝函数,在这种实现下数据传输时间甚至将超过源迭代求解时间。为
此,本发明设计了一种三维特征线封装方法,可以有效提高大量特征线数据的拷贝效率。
[0060]
三维特征线计算模型相对二维更加复杂,并且对算力和存储的需求更高。由于在超级计算机的一个计算节点内通常配有多块加速卡,为了充分利用每个节点的计算能力,本发明在每个节点使用一个进程的情况下,一个进程调度多块dcu进行协同计算,面向异构混合集群设计了三维特征线多级并行算法,可以进一步对求解任务进行细分。同时,在三维特征线输运扫描异构加速算法中,面向dcu加速卡的存储结构和访存特性,实现了基于共享内存lds的访存合并以及轨迹段预取优化,可以有效提高访存带宽的利用率。
[0061]
为了使三维步特征线中子输运模拟程序在cpu+dcu异构集群环境下达到更快的求解速度和良好的可扩展性,本发明提出了一种面向混合异构架构的三维特征线法并行计算方法。该方法设计了多级任务并行策略以及面向异构加速卡的优化方案,可以充分利用混合架构的计算优势,从而大幅提高三维中子输运模拟程序应用于大规模算例时的求解速度。
[0062]
实施例一
[0063]
如图1-8所示,为了提高三维特征线中子输运方程的求解效率,本发明提供了一种面向cpu+dcu异构集群的大规模三维特征线法并行模拟方法,在按照几何区域划分进行mpi并行化的基础上,进一步划分输运扫描遍历的3d轨迹和所属能群,使用dcu加速计算,从而有效提高程序的模拟效率,该方法实现程序的可扩展性测试结果如图8所示,图中,模拟算例使用takeda model2。如图1所示,本发明具体方法包括如下步骤:
[0064]
a.初始化参数,从配置文件和命令行中读取输入参数,具体为:
[0065]
(1)从xml配置文件中读取几何和特征线分布信息,包括求积组,方位角数n
azim
,极角数n
polar
,平面轨迹间距δ
xy
,轴向轨迹间距δz等;
[0066]
(2)从h5文件中读取材料截面数据,包括能群数group,中子总截面∑
t
,中子散射截面∑s,中子裂变截面∑f等;
[0067]
(3)从命令行读取运行时配置,包括进程数n
proc
,核心数c,节点dcu数n
dcu
,区域划分配置dom
x
×
domy×
domz,源迭代最大次数max
iter
,收敛误差限tol等;
[0068]
(4)根据区域划分配置dom
x
×
domy×
domz分配cpu端计算任务,将几何空间划分成若干区域domi,每个mpi进程ni与domi绑定,并且只计算穿过该区域的3d轨迹和轨迹段。
[0069]
b.每个进程分别生成3d轨迹,并进行轨迹分段,实现方法为:
[0070]
(1)创建2d轨迹数组track2d并分配内存,根据几何形状、方位角数量和轨迹间距等信息计算该区域上每个方位角对应的轨迹数量num
track2d
以及每条轨迹的起始点和终点。
[0071]
(2)根据极角数和轴向轨迹间距等信息初始化3d轨迹数组track3d,记录3d轨迹总数num
track3d

[0072]
(3)生成每条轨迹的轨迹段数组segm,具体为遍历所有3d轨迹,根据每条3d轨迹穿过的几何平源区进行截断,创建轨迹段对象并将它们添加到轨迹对象中,记录每条轨迹段的起始点、终点和长度和轨迹段总数num
segm

[0073]
c.封装设备端数据,每个mpi进程分配设备端计算任务,主机端和设备端计算任务分解示意图如图4所示,具体实现方法为:
[0074]
(1)每个进程ni根据可用dcu卡数n
dcu
为加速卡平均分配3d轨迹,记录每个dcu计算的起始轨迹索引并创建n
dcu
个stream。
[0075]
(2)创建输运扫描核函数读取角通量的起始索引angularfluxidx,计算公式为angularfluxidxi=2*trackidxi*group;创建长度为num
track3d
的设备端轨迹段索引hosttracksegmidx,记录每条轨迹轨迹段的起始地址。
[0076]
(3)在pinned memory上分配主机端的辅助拷贝数组hosttrackarr和轨迹段数组hostsegmarr,长度分别为num
track3d
和num
segm
;在设备端显存上分配计算角通量变化所需的3d轨迹数组devtrackarr、轨迹段数组devsegmarr和轨迹段索引数组devtracksegmidx,长度分别为num
track3d
、num
segm
和num
track3d

[0077]
(4)依次遍历方位角n
azim
、方位角对应的2d轨迹num
track2d
(a)、极角n
polar
和轴向轨迹堆trackstack,将按空间角度索引的3d轨迹拷贝至按trackid索引的连续hosttrackarr数组中,同时创建轨迹段读取所需的索引,将每条轨迹的轨迹段数量写入hosttracksegmidx数组中。再遍历一次3d轨迹,将轨迹类中的轨迹段对象拷贝至按tracksegmidx索引的连续hostsegmarr数组中,如图3所示,通过创建tracksegmidx索引数组,将所有3d轨迹和轨迹段分别封装为连续的数组,并存入pinned memory中,再使用异步传输接口拷贝数据,提高cpu端和设备端之间的数据传输速度。
[0078]
(5)cpu端根据tracksegmidx索引,分别将trackidxi~trackidx
i+1
编号内的3d轨迹及其轨迹段通过streami向di所在的设备端进行异步传输,调用hipmemcpyasync方法将hosttrackarr、hostsegmarr和hosttracksegmidx通过pcie总线拷贝至设备端全局内存的devtrackarr、devsegmarr和devtracksegmidx中,实现不同卡之间的异步数据传输。
[0079]
(6)cpu端向所有设备端传输其他全局数据,包括材料、平源区、求积组权重等。
[0080]
d.cpu+dcu协同进行源迭代计算,设备端计算角通量的变化,具体为:
[0081]
(1)cpu端根据标通量scalar_flux计算每个平源区各能群的源项q
reduced

[0082]
(2)cpu端异步调用输运扫描核函数,核函数实现流程如图5所示,设备端遍历所有轨迹段,节点内的所有加速卡共同计算在区域domi中每条轨迹上的角通量变化量δψ,计算公式为:
[0083]
其中,k为特征线,i为平源区,g为能群,具体方法为:
[0084]
1)在cpu端根据能群数分配设备端所需共享内存lds,计算公式为其中,t为dcu一个block中的线程数,fp percision为浮点精度,然后异步调用n
dcu
次设备端3d输运扫描核函数,为加速卡di分配流streami,根据角通量的起始索引angularfluxidxi设置di的角通量数组指针,并设置每个block内的线程数为t,每个grid内的block数为b。
[0085]
2)设备端根据轨迹和能群为dcu线程分配计算任务,每个线程ti计算一条3d轨迹在一个能群上的通量变化。计算全局线程编号gid=blockidx.x*blockdim.x+threadidx.x,本地线程编号lid=threadidx.x,每个线程的初始3d轨迹索引所属能群group
id
=gid%group。每个线程从devtrackarr中读取3d轨迹track
trackid

[0086]
3)每个block内的所有线程将本轮block内计算所需的角通量boundary_flux连续读入lds中的lds_flux,每个block计算的最大轨迹数需要读入的角通量长度为fluxlen,计算公式为fluxlen=2*num
local_track
*group,图6展示了读取一轮角通量的访存流程,图6中t=4,假设block内的线程数t为4,那么每一轮输运扫描计算之前,每个block内的4个线程会将本轮计算需要的全部角通量数据提前连续的从显存读入共享内存lds中,然后再从lds中读取各线程计算所需的数据,从而提高访存速度;本步骤具体为:
[0087]
a)计算角通量起始编号startindex=2*(gid-lid)
[0088]
b)根据lid将boundary_flux[startindex+lid]读入lds_flux[lid]中。
[0089]
c)lid+=t
[0090]
d)判断lid是否小于fluxlen,若是,则重复步骤(b)(c);若不是,则说明角通量已全部读入lds中,继续执行步骤e)。
[0091]
e)在block级别添加线程同步。
[0092]
f)各线程从lds_flux中读取角通量f)各线程从lds_flux中读取角通量和和
[0093]
4)各线程遍历所有轨迹段,沿轨迹运动方向计算各轨迹段对标通量的贡献,在循环中设计数据预取操作以加速计算,具体为:
[0094]
a)设置轨迹段遍历索引i=0,设置轨迹段预取数量pload
[0095]
b)判断i%pload是否为0,若不是,则跳到步骤(c);若是,则从devsegmarr[tracksegmidx[track
id
]]地址开始预取pload条轨迹段segmi,...,segm
i+pload
至寄存器中
[0096]
c)根据特征线输运公式计算沿segmi变化的ψ
k,i,g
(s

)
[0097]
d)若segmi是最后一条轨迹段,则跳到步骤(f)
[0098]
e)将ψ
k,i,g
(s

)乘以求积组权重后累加到segmi所属平源区的标通量scalar_flux[fsr
id
*group+group
id
]中,其中fsr
id
为平源区编号。
[0099]
f)i++
[0100]
g)若i<num_segm,则返回步骤(b),直到遍历所有轨迹段。
[0101]
5)将沿轨迹积累的通量变化写入当前轨迹的角通量boundary_flux[trackid*group+group
id
]
[0102]
6)根据区域边界条件将通量变化写入当前轨迹出射的邻接轨迹track
out
对应的角通量start_flux
out
中。
[0103]
7)更新下一轮要计算的轨迹和所属能群,group
id
=(gid+b*t)%group。重复步骤



,直到遍历完所有3d轨迹。
[0104]
(3)stream流同步,等待所有设备端完成输运计算。
[0105]
(4)每一次源迭代后,相邻进程交换边界角通量信息,具体为:
[0106]
1)将每个设备端计算出的角通量boundary_flux和start_flux传输至cpu端
[0107]
2)轨迹段被各区域边界截断,需要根据轨迹的出射和入射关系进行通信。cpu端在
相邻区域之间更新并交换轨迹的边界角通量boundary_flux,如图7所示,进程ni需要分别与邻居进程进行点对点通信,根据start_flux发送和接收角通量,图中,几何空间划分为2x2x2,计算任务分解到8个mpi进程中,虚线为各区域内的3d轨迹示意图,圆点为轨迹在该区域入射或出射的坐标点。在每一轮输运扫描计算后,需要根据轨迹的邻接关系进行点对点通信,比如图中0号进程与1号进程交换p12和p11坐标点的轨迹边界角通量,0号进程与3号进程交换p21和p22坐标点角通量,0号进程与4号进程交换p01、p02和p13、p14坐标点角通量。
[0108]
3)将更新后的角通量boundary_flux传输至设备端
[0109]
(5)cpu端用所有经过同一平源区的角通量来更新标通量
[0110]
(6)cpu端用标通量和散射截面更新keff,并计算残差residual。
[0111]
e.判断是否达到最大迭代次数max
iter
或residual是否小于收敛阈值tol,若是,则结束源迭代循环;否则,循环轮次加1,并返回步骤d。
[0112]
以上所述,仅为本技术较佳的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应该以权利要求的保护范围为准。

技术特征:
1.一种面向异构集群的三维中子输运特征线并行求解方法,其特征在于,包括以下步骤:s1.参数初始化;s2.生成轨迹段;s3.封装特征线数据并传输至设备端;s4.输运扫描异构计算;s5.源迭代终止判断;s6.写出模拟结果。2.根据权利要求1所述的面向异构集群的三维中子输运特征线并行求解方法,其特征在于,s1中所述参数为:几何参数、特征线参数以及并行化参数。3.根据权利要求1所述的面向异构集群的三维中子输运特征线并行求解方法,其特征在于,所述s2具体为:根据方位角和平面轨迹间距对每个mpi进程在几何区域内生成2d轨迹、2d轨迹链,再根据极角和轴向轨迹间距生成3d轨迹,并进行轨迹分段。4.根据权利要求1所述的面向异构集群的三维中子输运特征线并行求解方法,其特征在于,所述s3具体为:根据dcu卡数对每个mpi进程平均分配3d轨迹,在cpu端预处理特征线数据,创建设备端索引数组,将特征线数据和索引异步传输至各加速卡的设备端显存,并将材料、平源区、求积权重数据传输至设备端。5.根据权利要求1所述的面向异构集群的三维中子输运特征线并行求解方法,其特征在于,所述s4具体为:使用dcu加速源迭代计算,遍历所有3d轨迹及其轨迹段,按公式:计算沿特征线运动方向上的角通量变化量,其中,k为特征线,i为平源区,g为能群。6.根据权利要求5所述的面向异构集群的三维中子输运特征线并行求解方法,其特征在于,所述计算沿特征线运动方向上的角通量变化量的具体步骤为:s41.主机端异步调用输运扫描核函数,在核函数内部遍历所有3d轨迹,按照3d轨迹id和能群的组合索引划分dcu线程的计算任务,每个线程在一轮中只负责一条3d轨迹在一个能群上的输运扫描计算;s42.在每次计算任务开始之前,block内所有线程连续访存本轮所需的角通量,并写入共享内存lds中,各线程再从lds访存当前轨迹的角通量;s43.各线程遍历所有轨迹段,在循环中通过预取待计算的轨迹段来提高访存效率,并沿轨迹运动方向计算本轮轨迹段对标通量的贡献;s44.将沿轨迹积累的通量变化写入当前轨迹的角通量中,再根据边界条件将通量变化写入当前轨迹出射的邻接轨迹对应的临时通量数组中;s45.计算完毕后,各线程更新下一轮要计算的轨迹编号和能群编号;
s46.重复步骤s42-s45,直到计算完所有轨迹下的所有能群对应的特征线法输运扫描过程;s47.等待所有设备端完成输运计算;s48.每一次源迭代计算后,将设备端计算的角通量数组传输至cpu端,相邻进程交换边界角通量信息,再将更新后的角通量传输回设备端;s49.用所有经过同一平源区的角通量来更新标通量;s410用标通量和散射截面更新有效增殖系数keff,并计算残差。7.根据权利要求1所述的面向异构集群的三维中子输运特征线并行求解方法,其特征在于,所述s5具体为:判断当前是否达到最大迭代次数max
iter
或残差是否小于收敛阈值,若是,则结束源迭代循环,执行s6;否则,重复执行s4。8.根据权利要求1所述的面向异构集群的三维中子输运特征线并行求解方法,其特征在于,所述s6具体为:将设备端计算出的标通量传输至cpu端,根据配置文件写出有效增殖系数和通量分布。

技术总结
本发明公开了一种面向异构集群的三维中子输运特征线并行求解方法,包括:S1参数初始化;S2.生成轨迹段;S3.封装特征线数据并传输至设备端;S4.输运扫描异构计算;S5.源迭代终止判断;S6.写出模拟结果。本发明采用的三维特征线法可以有效求解数值堆原型系统的中子输运过程,实现高精细、高保真、高效率的输运求解。本发明设计了多级任务并行策略以及面向异构加速卡的优化方案,可以充分利用混合架构的计算优势,从而大幅提高三维中子输运模拟程序应用于大规模算例时的求解速度,使三维步特征线中子输运模拟程序在CPU+DCU异构集群环境下达到更快的求解速度和良好的可扩展性。达到更快的求解速度和良好的可扩展性。达到更快的求解速度和良好的可扩展性。


技术研发人员:胡长军 丁哲昭 汪岸 曹敏
受保护的技术使用者:北京科技大学
技术研发日:2023.02.21
技术公布日:2023/7/19
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐