CN111125950B - 一种核反应堆热工水力模拟软件cfd并行处理方法 - Google Patents

一种核反应堆热工水力模拟软件cfd并行处理方法 Download PDF

Info

Publication number
CN111125950B
CN111125950B CN201911282894.7A CN201911282894A CN111125950B CN 111125950 B CN111125950 B CN 111125950B CN 201911282894 A CN201911282894 A CN 201911282894A CN 111125950 B CN111125950 B CN 111125950B
Authority
CN
China
Prior art keywords
matrix
slave
data
core
space
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
CN201911282894.7A
Other languages
English (en)
Other versions
CN111125950A (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.)
University of Science and Technology Beijing USTB
Original Assignee
University of Science and Technology Beijing USTB
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 University of Science and Technology Beijing USTB filed Critical University of Science and Technology Beijing USTB
Priority to CN201911282894.7A priority Critical patent/CN111125950B/zh
Publication of CN111125950A publication Critical patent/CN111125950A/zh
Application granted granted Critical
Publication of CN111125950B publication Critical patent/CN111125950B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明提供一种核反应堆热工水力模拟软件CFD并行处理方法,借助申威众核架构,能够大大降低CFD模拟时间,提高程序运行的性能。所述方法包括:判断热工水力模拟软件CFD中矩阵乘中n2的取值,其中,所述矩阵乘表示为:
Figure DDA0002317246170000011
A、B、C都表示双精度浮点矩阵,n1、n2、n3都表示矩阵维度的大小,N=n2,N表示谱单元阶数;若12≤n2≤24,则判断n1是否等于N2,若n1=N2,则对矩阵A按照从核数M进行数据切分,将切分后的数据分配到M个从核的局存中,将矩阵B完整读入到M个从核的局存中,每个从核根据局存中的数据执行矩阵乘计算任务,任务完成后,将计算结果分配回矩阵C对应主存的地址中。本发明适用于核反应堆热工水力模拟领域。

Description

一种核反应堆热工水力模拟软件CFD并行处理方法
技术领域
本发明涉及高性能计算和核科学技术与工程领域,特别是指一种核反应堆热工水力模拟软件CFD并行处理方法。
背景技术
当前,以通用CPU加专用加速核心构成的异构新型处理器已成为超级计算机的发展趋势。神威·太湖之光是典型的基于异构新型处理器的超级计算机,它由40960块自主研发的申威26010众核处理器组成,每个处理器包含4个核组(Code Group,CG),260个异构核心。如图1所示,单个核组由1个控制核心/主核(Manage Processing Element,MPE)和运算核心/从核(Computing Processing Element,CPE)阵列(8×8网格结构)组成,每个从核有16KB的一级指令缓存和64KB的局存,MPE和CPE共享8GB主存。也就是说:主存是主核和从核共享的8G内存,局存是从核独享的内存,只有64KB。
核反应堆热工水力学是研究核反应堆及其回路系统中冷却液的流动和热量传输特性的工程性学科,其内容涉及反应堆实际和假设的稳态和瞬态、事故出现的复杂热工水力现象。由于全尺度实验的限制,需要利用数值计算方法来分析所发生的复杂情况。计算流体力学(Computational Fluid Dynamics,CFD)数值模拟方法克服了传统实验测量方法的条件限制,被广泛用于核反应堆热工水力分析中,比如堆芯棒束通道内的流动换热过程研究和蒸汽发生器关键部件的流动传热研究。采用CFD进行热工水力分析,计算和存储需求大,比如采用直接数值模拟,计算量为雷诺数的三次方量级因此需要超级计算机的支撑。
采用CFD进行热工水力模拟要处理的基础是纳维斯托克斯(Naiver-Stokes,N-S)方程,对于非定常不可压缩N-S方程,可以采用谱元法进行空间离散化,谱元法是一种结合有限元法通用性与谱方法的高精度的高阶加权残差技术,基本思想将计算区域划分成若干谱单元,在每个求解单元中利用拉格朗日-洛巴托-勒让德配置点(Gauss-Legendre-Lobatto,GLL)点进行展开,利用投影算子技术和高斯数值积分得到离散方程。接着,将离散后的N-S方程拆分为对流项、压力项、速度项,对流项可以用显式外推法求解,而压力项和速度项需要隐式迭代求解,压力项和速度项都可以直接归结为公式(1):
Hu=(h1K+h2M)u=f (1)
其中,h1、h2为系数,H为亥姆霍兹算子,K是刚度矩阵,M是质量矩阵,u为待求解的变量域,f是拆解后压力泊松方程或速度亥姆霍兹方程的总合的右边项,当h1=1,h2=0即为压力的泊松方程形式,其他h1、h2系数为速度的亥姆霍兹方程形式。
基于谱元法离散后的CFD模拟软件以小矩阵乘为主要计算核心,但数学库和编译器不可能提供最好内核性能,使用通用的优化技术(如openACC、OpenMPI等)或优化库(如BLAS、GEMM等)也会导致系统性能大幅度下降,所以要针对超算体系结构提供专门优化方案。
发明内容
本发明要解决的技术问题是提供一种核反应堆热工水力模拟软件CFD并行处理方法,以解决现有技术所存在的系统性能下降的问题。
为解决上述技术问题,本发明实施例提供一种核反应堆热工水力模拟软件CFD并行处理方法,包括:
判断热工水力模拟软件CFD中矩阵乘中n2的取值,其中,所述矩阵乘表示为:
Figure BDA0002317246150000021
A、B、C都表示双精度浮点矩阵,n1、n2、n3都表示矩阵维度的大小,N=n2,N表示谱单元阶数;
若12≤n2≤24,则判断n1是否等于N2,若n1=N2,则对矩阵A按照从核数M进行数据切分,将切分后的数据分配到M个从核的局存中,将矩阵B完整读入到M个从核的局存中,每个从核根据局存中的数据执行矩阵乘计算任务,任务完成后,将计算结果分配回矩阵C对应主存的地址中。
进一步地,所述对矩阵A按照从核数M进行数据切分,将切分后的数据分配到M个从核的局存中,将矩阵B完整读入到M个从核的局存中,每个从核根据局存中的数据执行矩阵乘计算任务,任务完成后,将计算结果分配回矩阵C对应主存的地址中包括:
将矩阵A矩阵转置为AT
确定用于执行矩阵乘计算的M个从核;
调用从核线程组,每个从核按照步骤A1-A5执行矩阵乘计算任务;其中,步骤A1-A5为:
A1,获取当前从核的编号id;
A2,根据公式
Figure BDA0002317246150000031
确定平均每个从核分配的行数,其中,M表示从核的数目,RA为矩阵A的行数;
A3,判断当前从核id是否满足:id<(leave=RA%M),若满足,则
Figure BDA0002317246150000032
当前从核需要获取矩阵A的数据量为
Figure BDA0002317246150000033
偏移量为
Figure BDA0002317246150000034
当前从核申请
Figure BDA0002317246150000035
大小的局存空间
Figure BDA0002317246150000036
Figure BDA0002317246150000037
为基址取
Figure BDA0002317246150000038
数据放入局存空间
Figure BDA0002317246150000039
中,其中,leave表示剩余量,LA为矩阵A的列数;
A4,当前从核申请SlabB大小的局存空间SpaceB,以B+OffsetB为基址取SlabB大小数据放入局存空间SpaceB中,其中,SlabB表示每个从核需要获取的矩阵B的数据量,SlabB=8RBLB Byte,RB表示矩阵B的行数,LB表示矩阵B的列数;OffsetB表示矩阵B的偏移量,OffsetB=0Byte;
A5,当前从核申请大小为
Figure BDA00023172461500000310
的局存空间SpaceC,当前从核根据局存空间
Figure BDA00023172461500000311
SpaceB中的数据进行矩阵乘计算,将计算结果存入局存空间SpaceC中。
进一步地,在当前从核根据局存空间
Figure BDA00023172461500000312
SpaceB中的数据进行矩阵乘计算时,若n2=12,16,20,24,则利用从核的单指令多数据流扩展部件,采用对界单指令多数据流方式将访问连续的局存空间数据装入向量寄存器进行矩阵乘计算,将计算结果存入局存空间SpaceC中。
进一步地,所述任务完成后,将计算结果分配回矩阵C对应主存的地址中包括:
任务完成后,根据id将局存空间SpaceC中的结果以直接内存存取方式向矩阵C对应的主存的基地址C+OffsetC跨StrideC步存入数据块bsize,直到SpaceC回传完毕,释放所有局存;其中,OffsetC表示矩阵C的偏移量,
Figure BDA0002317246150000041
Figure BDA0002317246150000042
StrideC表示回传跨步大小,
Figure BDA0002317246150000043
bsize表示跨步向量块大小,
Figure BDA0002317246150000044
进一步地,所述方法还包括:
若12≤n2≤24且n1≠N2,则判断n3是否等于N2,若n3=N2,则将矩阵A完整读入到M个从核的局存中,对矩阵B按照从核数M进行数据切分,将切分后的数据分配到M个从核的局存中,每个从核根据局存中的数据执行矩阵乘计算任务,任务完成后,将计算结果分配回矩阵C对应主存的地址中。
进一步地,所述方法还包括:
当12≤n2≤15时,n1≠N2且n3≠N2,则采用循环展开方式进行矩阵乘计算,得到矩阵乘计算结果。
进一步地,所述方法还包括:
当16≤n2≤24时,n1≠N2且n3≠N2,则采用非对界单指令多数据流方式在主核中进行向量化计算,得到矩阵乘计算结果。
进一步地,所述方法还包括:
若1≤n2≤11,则采用循环展开方式进行矩阵乘计算。
本发明的上述技术方案的有益效果如下:
上述方案中,基于申威众核架构,提供一种以矩阵乘为计算核心的CFD软件的并行优化处理技术,以充分利用申威众核处理器强大的计算能力,对模拟软件CFD进行并行优化处理,能够大大降低CFD模拟时间,提高程序运行的性能,从而提高热工水力模拟效率。
附图说明
图1为本发明实施例提供的申威众核处理器架构的结构示意图;
图2为本发明实施例提供的向量化的工作原理示意图;
图3为本发明实施例提供的核反应堆热工水力模拟软件CFD并行处理方法的流程示意图;
图4为本发明实施例提供的循环展开矩阵乘的工作原理示意图;
图5为本发明实施例提供的第一种从核优化方案的工作原理示意图;
图6为本发明实施例提供的第二种从核优化方案的工作原理示意图;
图7为本发明实施例提供的核反应堆热工水力模拟软件CFD并行处理方法的详细流程示意图;
图8为本发明实施例提供的性能效果对比示意图。
具体实施方式
为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
本发明针对现有的系统性能下降的问题,提供一种核反应堆热工水力模拟软件CFD并行处理方法。
为了更好地理解本发明实施例提供的核反应堆热工水力模拟软件CFD并行处理方法,对术语:循环展开、向量化、列优先、Athread库、字节对齐、数据切分和消息传递接口库进行简要说明:
1)循环展开
由于矩阵乘中的n2的值是可以确定的,传统的矩阵乘法采用三层循环计算,将确定值的一层展开为连续的乘加操作,就是循环展开(见Algorithm 1):
Figure BDA0002317246150000051
该操作能充分使用MPE的流水线性能。
2)向量化
如图2所示,向量化计算是一种特殊的并行计算,可以在同一时间对不同数据执行同样的一个指令,或者说指令应用于一个数组中,在MPE或CPE提供有256位的单指令多数据流(Single Instruction Multiple Data,SIMD)扩展部件,所以在MPE或CPE中可同时计算8个整型(32位)或4个双精度浮点数(64位)。
3)列优先
矩阵(或数组)是按列在内存中连续存储的,如一个二维数组T(10,10),若按列优先就是按照T(1,j)、T(2,j)、T(3,j)…T(10,j)连续在内存中存储,而行优先则按照T(i,1)、T(i,2)、T(i,3)…T(i,10)连续在内存中存储。
4)Athread库
Athread库是调用从核操作相关的函数库,Athread库中的函数以athread_开头。
5)字节对齐
现代计算机中,内存空间按照字节划分,在访问特定类型变量时经常在特定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序一个接一个地存放,这就是对齐。一般双精度浮点数按照32字节地址对齐(变量所在地址可以整除32),整型按照4字节地址对齐(变量所在地址可以整除4)等。
6)数据切分
数据切分是将一个矩阵分成多个数据片段(SLAB),每一个SLAB有一定的数据量大小。
7)MPI(Message Passing Interface,消息传递接口)库
MPI库是一种消息传递编程模型函数库,函数以mpi_开头。
如图3所示,本发明实施例提供的核反应堆热工水力模拟软件CFD并行处理方法,包括:
判断热工水力模拟软件CFD中矩阵乘中n2的取值,其中,所述矩阵乘表示为:
Figure BDA0002317246150000061
A、B、C都表示双精度浮点矩阵,n1、n2、n3都表示矩阵维度的大小,N=n2,N表示谱单元阶数;
若12≤n2≤24,则判断n1是否等于N2,若n1=N2,则对矩阵A按照从核数M进行数据切分,将切分后的数据分配到M个从核的局存中,将矩阵B完整读入到M个从核的局存中,每个从核根据局存中的数据执行矩阵乘计算任务,任务完成后,将计算结果分配回矩阵C对应主存的地址中。
本发明实施例所述的核反应堆热工水力模拟软件CFD并行处理方法,基于申威众核架构,提供一种以矩阵乘为计算核心的CFD软件的并行优化处理技术,以充分利用申威众核处理器强大的计算能力,对模拟软件CFD进行并行优化处理,能够大大降低CFD模拟时间,提高程序运行的性能,从而提高热工水力模拟效率。
本实施例中,以基于谱元法的CFD模拟软件Nek5000为例,在申威26010众核处理器上进行优化处理。本实施例中,谱元法离散求解N-S方程,主要是迭代计算隐式项(即式(1)),在Nek5000中,每次迭代都需要通过下面例程构造Hu算子:
Figure BDA0002317246150000071
该例程主要由矩阵乘组成,矩阵乘大小对应上面例程的matrix-multiply size(行维度,列维度,内部维度),p为谱单元阶数,p的范围为[1,24],其中H、K、h1、h2、M、u的意义同公式(1),G是由空间方向的几何项和下标导出的常数对角矩阵。
采用Algorithm 1得到的Nek5000的各子例程的运行时间如表1所示,其中64.98%的时间花费在计算矩阵乘的例程mxfN,N的范围为[1,24],矩阵乘具有以下形式:
Cn1×n3=An1×n2Bn2×n3 (2)
其中,A、B、C都表示双精度浮点矩阵,n1、n2、n3都表示矩阵维度的大小,一般情况下:n1、n2、n3的大小不超过524,而且最主要出现下面三种的矩阵大小情况:
1)n1=N,n2=N,n3=N
2)n1=N2,n2=N,n3=N
3)n1=N,n2=N,n3=N2
表1例程的运行时间表
Figure BDA0002317246150000081
表1中,name表示例程名称,time(%)表示例程占用总运行时间的百分比;cumulative seconds表示累积时间,即表1中,self seconds累积和;self seconds表示运行相应例程时的耗时;calls表示例程调用次数;self s/call调用例程一次的平均耗时;total s/call表示调用例程一次的平均耗时,包括例程中的子函数。
本实施例中,判断热工水力模拟软件CFD中矩阵乘中n2的取值具体可以包括以下步骤:
首先调用mpi_init函数启动后,调用athread_init函数完成加速线程库初始化;
读入矩阵乘的矩阵维度大小n1、n2、n3,双精度浮点矩阵A、B、C;
判断n2的大小,根据n2的值,选择优化后的mxfN例程(mxfN中的N=n2)。
本实施例中,若1≤n2≤11,直接采用图4所示的循环展开方式进行矩阵乘计算,提高计算速度,无需采用辅助优化技术。
在前述核反应堆热工水力模拟软件CFD并行处理方法的具体实施方式中,进一步地,所述对矩阵A按照从核数M进行数据切分,将切分后的数据分配到M个从核的局存中,将矩阵B完整读入到M个从核的局存中,每个从核根据局存中的数据执行矩阵乘计算任务,任务完成后,将计算结果分配回矩阵C对应主存的地址中包括:
将矩阵A矩阵转置为AT
确定用于执行矩阵乘计算的M个从核;
调用从核线程组,每个从核按照步骤A1-A5执行矩阵乘计算任务;其中,步骤A1-A5为:
A1,获取当前从核的编号id;
A2,根据公式
Figure BDA0002317246150000091
确定平均每个从核分配的行数,其中,M表示从核的数目,RA为矩阵A的行数;
A3,判断当前从核id是否满足:id<(leave=RA%M),若满足,则
Figure BDA0002317246150000092
当前从核需要获取矩阵A的数据量为
Figure BDA0002317246150000093
偏移量为
Figure BDA0002317246150000094
当前从核申请
Figure BDA0002317246150000095
大小的局存空间
Figure BDA0002317246150000096
Figure BDA0002317246150000097
为基址取
Figure BDA0002317246150000098
数据放入局存空间
Figure BDA0002317246150000099
中,其中,leave表示剩余量,LA为矩阵A的列数;
A4,当前从核申请SlabB大小的局存空间SpaceB,以B+OffsetB为基址取SlabB大小数据放入局存空间SpaceB中,其中,SlabB表示每个从核需要获取的矩阵B的数据量,SlabB=8RBLB Byte,RB表示矩阵B的行数,LB表示矩阵B的列数;OffsetB表示矩阵B的偏移量,OffsetB=0Byte;
A5,当前从核申请大小为
Figure BDA00023172461500000910
的局存空间SpaceC,当前从核根据局存空间
Figure BDA00023172461500000911
SpaceB中的数据进行矩阵乘计算,将计算结果存入局存空间SpaceC中。
本实施例中,对于n1=N2,12≤n2≤24的矩阵乘,假设从核数为M,采用图5所示的从核优化方案进行优化,具体包括以下步骤:
首先,由于模拟软件CFD所采用的语言是按列优先存储,先将矩阵A矩阵转置为AT
然后,调用athread_spawn函数指定用于执行矩阵乘计算的M个从核;
最后,调用athread_join函数显式阻塞调用从核线程组,执行矩阵乘计算任务,具体的:
调用athread_get_id函数获取当前从核的编号,假设编号为id;
假设矩阵A的行为RA,列为LA
Figure BDA0002317246150000101
为平均每个从核分配的行数,若当前从核id<(leave=RA%M),leave表示剩余量,那么
Figure BDA0002317246150000102
则当前从核需要获取矩阵A的数据量为
Figure BDA0002317246150000103
偏移量为
Figure BDA0002317246150000104
首先需要通过调用ldm_malloc函数申请
Figure BDA0002317246150000105
大小的局存空间
Figure BDA0002317246150000106
然后调用athread_get函数使用单运算核心模式,运算核心私有连续段以
Figure BDA0002317246150000107
为基址取
Figure BDA0002317246150000108
数据放入局存空间
Figure BDA0002317246150000109
中;
假设矩阵B的行为RB,列为LB,获取的矩阵B的数据量为SlabB=8RBLB Byte,偏移量为OffsetB=0Byte,当前从核需要完整读入矩阵B,通过调用ldm_malloc函数申请SlabB大小的局存空间SpaceB,调用athread_get函数以B+OffsetB为基址取SlabB大小数据放入局存空间SpaceB中;
假设矩阵C的行为RC,列为LC,同样当前从核需要申请大小为
Figure BDA00023172461500001010
Figure BDA00023172461500001011
的局存空间SpaceC,当前从核根据局存空间
Figure BDA00023172461500001012
SpaceB中的数据进行矩阵乘计算,将计算结果存入局存空间SpaceC中,具体的:
在当前从核根据局存空间
Figure BDA00023172461500001013
SpaceB中的数据进行矩阵乘计算时,可以按照图4所示进行循环展开计算(n2≠12,16,20,24),并将计算结果存入SpaceC中;但是,若n2=12,16,20,24,由于在从核申请内存后,局存空间以32字节对齐,则可以利用从核提供的256位单指令多数据流(SIMD)扩展部件,采用对界单指令多数据流方式将访问连续的内存区域装入向量寄存器进行矩阵乘计算,提高计算效率,并将计算结果存入SpaceC中;
任务完成后,调用athread_put函数使用单运算核心模式,根据id将局存空间SpaceC中的结果以直接内存存取(Direct Memory Access,DMA)方式向矩阵C对应的主存的基地址C+OffsetC跨StrideC步存入数据块bsize,直到SpaceC回传完毕,调用ldm_free函数释放所有局存;其中,OffsetC表示矩阵C的偏移量,
Figure BDA00023172461500001014
StrideC表示回传跨步大小,
Figure BDA00023172461500001015
Figure BDA00023172461500001016
bsize表示跨步向量块大小,
Figure BDA00023172461500001017
在前述核反应堆热工水力模拟软件CFD并行处理方法的具体实施方式中,进一步地,所述方法还包括:
若12≤n2≤24且n1≠N2,则判断n3是否等于N2,若n3=N2,则将矩阵A完整读入到M个从核的局存中,对矩阵B按照从核数M进行数据切分,将切分后的数据分配到M个从核的局存中,每个从核根据局存中的数据执行矩阵乘计算任务,任务完成后,将计算结果分配回矩阵C对应主存的地址中。
本实施例中,对于12≤n2≤24,n3=N2的矩阵乘,假设从核数为M,采用图6所示的从核优化方案进行优化,具体包括以下步骤:
首先,由于模拟软件CFD所采用的语言是按列优先存储,先将矩阵A矩阵转置为AT
然后,调用athread_spawn函数指定用于执行矩阵乘计算的M个从核;
最后,调用athread_join函数显式阻塞调用从核线程组,执行矩阵乘计算任务,具体的:
调用athread_get_id函数获取当前从核的编号,假设编号为id;
假设矩阵B的行为RB,列为LB
Figure BDA0002317246150000111
为平均每个从核分配的列数,若当前从核id<(leave=LB%M),leave表示剩余量,那么
Figure BDA0002317246150000112
则当前从核需要获取B的数据量为
Figure BDA0002317246150000113
偏移量为
Figure BDA0002317246150000114
Figure BDA0002317246150000115
首先需要通过调用ldm_malloc函数申请
Figure BDA0002317246150000116
大小的局存空间SpaceB,然后通过调用athread_get函数以
Figure BDA0002317246150000117
为基址取
Figure BDA0002317246150000118
数据放入局存空间SpaceB中;
假设矩阵A的行为RA,列为LA,获取的矩阵A的数据量为SlabA=8RALA Byte,偏移量为OffsetA=0Byte,当前从核需要完整读入矩阵A,通过调用ldm_malloc函数申请SlabA大小的局存空间SpaceA,通过调用athread_get函数以AT+OffsetB为基址取SlabA数据放入SpaceA中;
假设矩阵C的行为RC,列为LC,需要当前从核申请
Figure BDA0002317246150000119
的局存空间SpaceC;当前从核根据局存空间
Figure BDA00023172461500001110
SpaceB中的数据进行矩阵乘计算,将计算结果存入局存空间SpaceC中,具体的:
在当前从核根据局存空间
Figure BDA00023172461500001111
SpaceB中的数据进行矩阵乘计算时,可以按照图4所示进行循环展开计算,并将计算结果存入SpaceC中;但是,若n2=12,16,20,24,同样使用从核的SIMD扩展部件优化加速计算,提高计算效率,并将计算结果存入SpaceC
任务完成后,需要将SpaceC发送回矩阵C对应主存的地址中,这次就不需要跨步回传,假设矩阵C的偏移量为
Figure BDA0002317246150000121
因为回传数据和对应位置是连续的,这时直接以DMA方式往主存的基址C+OffsetC回传SpaceC的所有数据,SpaceC回传完毕,调用ldm_free函数释放所有局存。
本实施例中,每个从核仅有64KB的局存,所以SpaceA+SpaceB+SpaceC<64KB为宜。
在前述核反应堆热工水力模拟软件CFD并行处理方法的具体实施方式中,进一步地,所述方法还包括:
当12≤n2≤15时,n1≠N2且n3≠N2,则采用循环展开方式进行矩阵乘计算,得到矩阵乘计算结果。
本实施例中,若12≤n2≤15,n1≠N2且n3≠N2,则不采取任何优化措施,直接使用图4所示的循环展开方式进行矩阵乘计算。
在前述核反应堆热工水力模拟软件CFD并行处理方法的具体实施方式中,进一步地,所述方法还包括:
当16≤n2≤24时,n1≠N2且n3≠N2,则采用非对界单指令多数据流方式在主核中进行向量化计算,得到矩阵乘计算结果。
本实施例中,当16≤n2≤24时,n1≠N2且n3≠N2,由于涉及的双精度浮点数并不是按照32位字节对齐,无法采用对界SIMD方法,所以只能使用非对界SIMD方式在主核(MPE)中进行向量化计算,得到矩阵乘计算结果。
为了更好地理解本发明实施例提供的核反应堆热工水力模拟软件CFD并行处理方法,结合图7对所述方法的工作流程进行整体说明:
读入矩阵乘的矩阵维度大小n1、n2、n3,双精度浮点矩阵A、B、C;判断矩阵乘中n2的取值;若1≤n2≤11,则不进行优化,直接采用循环展开方式进行矩阵乘计算;若12≤n2≤24,则判断n1是否等于N2,若n1=N2,则执行图5所示的第一种从核(CPE)优化方案;若n1≠N2,则继续判断n3是否等于N2,若n3=N2,则执行图6所示的第二种从核(CPE)优化方案;否则,即:当16≤n2≤24时,n1≠N2且n3≠N2,使用主核(MPE)向量化的方法进行优化。
本实施例提供的面向申威众核架构的核反应堆热工水力模拟软件CFD并行处理方法,对于12≤n2≤24的矩阵乘按照相应情况,可以采取CPE上的从核优化方案,或MPE上的向量化优化技术,如图8所示,本实施例提供的核反应堆热工水力模拟软件CFD并行处理方法在申威众核架构上有近30%的性能提升(如图8),大大缩减了运行时间。另需要说明的是:本实施例提供的面向申威众核架构的核反应堆热工水力模拟软件CFD并行处理方法,比采用纯MPE上的向量化优化技术相比,约有20%性能提升。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (7)

1.一种核反应堆热工水力模拟软件CFD并行处理方法,其特征在于,包括:
判断热工水力模拟软件CFD中矩阵乘中n2的取值,其中,所述矩阵乘表示为:
Figure FDA0003184066640000011
A、B、C都表示双精度浮点矩阵,n1、n2、n3都表示矩阵维度的大小,N=n2,N表示谱单元阶数;
若12≤n2≤24,则判断n1是否等于N2,若n1=N2,则对矩阵A按照从核数M进行数据切分,将切分后的数据分配到M个从核的局存中,将矩阵B完整读入到M个从核的局存中,每个从核根据局存中的数据执行矩阵乘计算任务,任务完成后,将计算结果分配回矩阵C对应主存的地址中;
其中,所述对矩阵A按照从核数M进行数据切分,将切分后的数据分配到M个从核的局存中,将矩阵B完整读入到M个从核的局存中,每个从核根据局存中的数据执行矩阵乘计算任务,任务完成后,将计算结果分配回矩阵C对应主存的地址中包括:
将矩阵A矩阵转置为AT
确定用于执行矩阵乘计算的M个从核;
调用从核线程组,每个从核按照步骤A1-A5执行矩阵乘计算任务;其中,步骤A1-A5为:
A1,获取当前从核的编号id;
A2,根据公式
Figure FDA0003184066640000012
确定平均每个从核分配的行数,其中,M表示从核的数目,RA为矩阵A的行数;
A3,判断当前从核id是否小于矩阵A未分配的行数leave,若小于,则
Figure FDA0003184066640000013
当前从核需要获取矩阵A的数据量为
Figure FDA0003184066640000014
偏移量分两种情况,当当前从核id小于矩阵A未分配的行数leave时,偏移量为
Figure FDA0003184066640000015
当当前从核id不小于矩阵A未分配的行数leave时,偏移量为
Figure FDA0003184066640000016
当前从核申请
Figure FDA0003184066640000017
大小的局存空间
Figure FDA0003184066640000018
Figure FDA0003184066640000019
为基址取
Figure FDA00031840666400000110
数据放入局存空间
Figure FDA00031840666400000111
中,其中,LA为矩阵A的列数;
A4,当前从核申请SlabB大小的局存空间SpaceB,以B+OffsetB为基址取SlabB大小数据放入局存空间SpaceB中,其中,SlabB表示每个从核需要获取的矩阵B的数据量,SlabB=8RBLBByte,RB表示矩阵B的行数,LB表示矩阵B的列数;OffsetB表示矩阵B的偏移量,OffsetB=0Byte;
A5,当前从核申请大小为
Figure FDA0003184066640000021
的局存空间SpaceC,当前从核根据局存空间SpaceAid、SpaceB中的数据进行矩阵乘计算,将计算结果存入局存空间SpaceC中。
2.根据权利要求1所述的核反应堆热工水力模拟软件CFD并行处理方法,其特征在于,在当前从核根据局存空间
Figure FDA0003184066640000022
SpaceB中的数据进行矩阵乘计算时,若n2=12,16,20,24,则利用从核的单指令多数据流扩展部件,采用对界单指令多数据流方式将访问连续的局存空间数据装入向量寄存器进行矩阵乘计算,将计算结果存入局存空间SpaceC中。
3.根据权利要求1所述的核反应堆热工水力模拟软件CFD并行处理方法,其特征在于,所述任务完成后,将计算结果分配回矩阵C对应主存的地址中包括:
任务完成后,根据id将局存空间SpaceC中的结果以直接内存存取方式向矩阵C对应的主存的基地址C+OffsetC跨StrideC步存入数据块bsize,直到SpaceC回传完毕,释放所有局存;其中,OffsetC表示矩阵C的偏移量,
Figure FDA0003184066640000023
Figure FDA0003184066640000024
StrideC表示回传跨步大小,
Figure FDA0003184066640000025
bsize表示跨步向量块大小,
Figure FDA0003184066640000026
4.根据权利要求1所述的核反应堆热工水力模拟软件CFD并行处理方法,其特征在于,所述方法还包括:
若12≤n2≤24且n1≠N2,则判断n3是否等于N2,若n3=N2,则将矩阵A完整读入到M个从核的局存中,对矩阵B按照从核数M进行数据切分,将切分后的数据分配到M个从核的局存中,每个从核根据局存中的数据执行矩阵乘计算任务,任务完成后,将计算结果分配回矩阵C对应主存的地址中。
5.根据权利要求1所述的核反应堆热工水力模拟软件CFD并行处理方法,其特征在于,所述方法还包括:
当12≤n2≤15时,n1≠N2且n3≠N2,则采用循环展开方式进行矩阵乘计算,得到矩阵乘计算结果。
6.根据权利要求1所述的核反应堆热工水力模拟软件CFD并行处理方法,其特征在于,所述方法还包括:
当16≤n2≤24时,n1≠N2且n3≠N2,则采用非对界单指令多数据流方式在主核中进行向量化计算,得到矩阵乘计算结果。
7.根据权利要求1所述的核反应堆热工水力模拟软件CFD并行处理方法,其特征在于,所述方法还包括:
若1≤n2≤11,则采用循环展开方式进行矩阵乘计算。
CN201911282894.7A 2019-12-13 2019-12-13 一种核反应堆热工水力模拟软件cfd并行处理方法 Active CN111125950B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911282894.7A CN111125950B (zh) 2019-12-13 2019-12-13 一种核反应堆热工水力模拟软件cfd并行处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911282894.7A CN111125950B (zh) 2019-12-13 2019-12-13 一种核反应堆热工水力模拟软件cfd并行处理方法

Publications (2)

Publication Number Publication Date
CN111125950A CN111125950A (zh) 2020-05-08
CN111125950B true CN111125950B (zh) 2021-11-12

Family

ID=70498676

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911282894.7A Active CN111125950B (zh) 2019-12-13 2019-12-13 一种核反应堆热工水力模拟软件cfd并行处理方法

Country Status (1)

Country Link
CN (1) CN111125950B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112306678B (zh) * 2020-10-22 2022-10-04 中国海洋大学 一种基于异构众核处理器的算法并行处理方法及系统
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
JP2017097664A (ja) * 2015-11-25 2017-06-01 ファナック株式会社 複数のcpuコアで最適な負荷配分を行う数値制御装置
CN107168683A (zh) * 2017-05-05 2017-09-15 中国科学院软件研究所 国产申威26010众核cpu上gemm稠密矩阵乘高性能实现方法
CN108446253A (zh) * 2018-03-28 2018-08-24 北京航空航天大学 一种针对神威体系架构的稀疏矩阵向量乘的并行计算方法
CN109145255A (zh) * 2018-06-11 2019-01-04 山东省计算中心(国家超级计算济南中心) 一种稀疏矩阵lu分解行更新的异构并行计算方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160177674A1 (en) * 2013-08-27 2016-06-23 Halliburton Energy Services, Inc. Simulating Fluid Leak-Off and Flow-Back in a Fractured Subterranean Region

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017097664A (ja) * 2015-11-25 2017-06-01 ファナック株式会社 複数のcpuコアで最適な負荷配分を行う数値制御装置
CN107168683A (zh) * 2017-05-05 2017-09-15 中国科学院软件研究所 国产申威26010众核cpu上gemm稠密矩阵乘高性能实现方法
CN108446253A (zh) * 2018-03-28 2018-08-24 北京航空航天大学 一种针对神威体系架构的稀疏矩阵向量乘的并行计算方法
CN109145255A (zh) * 2018-06-11 2019-01-04 山东省计算中心(国家超级计算济南中心) 一种稀疏矩阵lu分解行更新的异构并行计算方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Accelerating and tuning small matrix multiplications on Sunway TaihuLight A case study of spectral element CFD Code Nek5000;Xianmeng Wang 等;《https://doi.org/10.1177/1094342019882246》;20191009;第1-10页 *
Parallel research on matrix chain multiplication problem based on multi-core;Hongyi Li 等;《2011 International Conference on Consumer Electronics, Communications and Networks (CECNet)》;20110516;第3324-3327页 *
高精度湍流直接数值模拟程序的异构并行优化分析;张天文 等;《科研信息化技术与应用》;20150920;第3-11页 *

Also Published As

Publication number Publication date
CN111125950A (zh) 2020-05-08

Similar Documents

Publication Publication Date Title
Peng et al. Capuchin: Tensor-based gpu memory management for deep learning
Chen et al. FlinkCL: An OpenCL-based in-memory computing architecture on heterogeneous CPU-GPU clusters for big data
CN109002659B (zh) 一种基于超级计算机的流体机械仿真程序优化方法
Schumacher et al. parSC: Synchronous parallel SystemC simulation on multi-core host architectures
Verschoor et al. Analysis and performance estimation of the conjugate gradient method on multiple GPUs
US20130226535A1 (en) Concurrent simulation system using graphic processing units (gpu) and method thereof
CN111125950B (zh) 一种核反应堆热工水力模拟软件cfd并行处理方法
JP2011118743A (ja) ベクトル型計算機及びベクトル型計算機の命令制御方法
Li et al. Automatic generation of high-performance fft kernels on arm and x86 cpus
CN109408867B (zh) 一种基于mic协处理器的显式r-k时间推进加速方法
Cai et al. Parallelized implementation of an explicit finite element method in many integrated core (MIC) architecture
Gao et al. Millimeter-scale and billion-atom reactive force field simulation on Sunway Taihulight
Aji et al. Cell-swat: modeling and scheduling wavefront computations on the cell broadband engine
CN106933777B (zh) 基于国产申威26010处理器的基2一维fft的高性能实现方法
Tolmachev VkFFT-a performant, cross-platform and open-source GPU FFT library
Atoofian Approximate cache in GPGPUs
Wang Solving incompressible Navier-Stokes equations on heterogeneous parallel architectures
Ma et al. GPU parallelization of unstructured/hybrid grid ALE multigrid unsteady solver for moving body problems
US20230289398A1 (en) Efficient Matrix Multiply and Add with a Group of Warps
Zhao et al. MFFT: A GPU Accelerated Highly Efficient Mixed-Precision Large-Scale FFT Framework
Glossner et al. HSA-enabled DSPs and accelerators
Ibrahim et al. Implementing Wilson-Dirac operator on the cell broadband engine
Zhang et al. Cpu-gpu hybrid parallel binomial american option pricing
Endo et al. Software technology that deals with deeper memory hierarchy in post-petascale era
Cole et al. Efficient resource oblivious algorithms for multicores

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