当前位置: 首页 > 专利查询>吉林大学专利>正文

一种面向复杂系统仿真的小型稠密矩阵的并行LU分解方法技术方案

技术编号:38765343 阅读:10 留言:0更新日期:2023-09-10 10:38
本发明专利技术适用于建模仿真与并行计算交叉技术领域,提供了一种面向复杂系统仿真的小型稠密矩阵的并行LU分解方法,包括以下步骤:将所有子矩阵中索引相同的元素在大矩阵中重新进行排列组合,对于任意两个顺序邻接的子矩阵A

【技术实现步骤摘要】
一种面向复杂系统仿真的小型稠密矩阵的并行LU分解方法


[0001]本专利技术属于建模仿真与并行计算交叉
,尤其涉及一种面向复杂系统仿真的小型稠密矩阵的并行LU分解方法。

技术介绍

[0002]并行计算(Parallel Computing),又称高性能计算(High Performance Computing,HPC),是指使用并行处理来高效、可靠、快速地运行高级应用程序,在短时间内处理大量数据,通常用于需要大量数学计算的科学、工程和商业应用。例如在与病毒相关的新药和疫苗的研制中涉及复杂的数学模型,必须借助数值方法应用并行计算快速求解。在复杂系统仿真领域,多实例、异构线性方程组并行求解是高性能计算领域的一个重要问题,该问题的核心是如何将一个大规模线性方程组分解为多个小规模线性方程组,并将计算任务分配给不同的计算实例和硬件设备,以实现高效的并行计算。
[0003]在多实例、异构线性方程组并行求解问题中,存在许多挑战和难点。其中之一是如何在不同的计算实例和硬件设备之间有效地分配计算任务,以实现最佳的并行计算性能。另一个难点是如何处理不同硬件设备的异构性,包括不同的处理器类型、内存大小和计算速度等因素。此外,算法的并行化程度和并行计算策略也对计算性能产生重要影响。为了解决这些问题,研究人员提出了大量多实例、异构线性方程组并行求解算法和优化方法,包括基于线程、基于任务和基于数据流的并行计算策略等。这些算法和优化方法在不同的计算实例和硬件设备上都有较好的适应性和性能表现。当前,多实例、异构线性方程组并行求解问题在科学计算、工程计算和大数据分析等领域都有广泛应用。
[0004]现有方法大多数是致力于解决大型矩阵求解问题,当前的任务处理方法并不适用于雅可比矩阵较小的中小型模型。对于小型矩阵来说,处理与转置相关的内存延迟和数据移动的开销非常昂贵。现有的线性处理软件包或库主要有BLAS、LAPACK、MAGMA及MKL等。其中基本线性代数子程序(Basic Linear Algebra Subprograms,BLAS)和线性代数库(Linear Algebra Package,LAPACK)(如GPU上的NVIDIA CUBLAS库),由于过度依赖体系结构,在求解大批量小型线性方程组时存在着严重的性能瓶颈。GPU与多核架构的矩阵代数项目(Matrix Algebra for GPU and Multip

coreArchitecture,MAGMA)中的线性代数库继承了LAPACK接口,其计算性能远远超过了通用多核处理器的性能。在2016年举行的NVIDIA GPU技术会议上正式讨论了对数千个小矩阵计算的高效库的需求。在CUBLAS 6.5中强调了对分批GEMM例程的需求,并开始提供一些包括BLAS和LAPACK的批处理实现,例如GEMM、三角形解算器矩阵(TRSM)、LU、QR等。同样地,Intel的MKL团队也发布了批处理的GEMM,为固定大小矩阵提供了批处理GEMM和批处理TRSM。因为CPU的内存层次结构支持自然数据重用(足够小的问题可以放入小而快速的内存中)。除了内存重用之外,还可以通过显式或隐式添加向量化的方法来使用补充的单指令多数据处理器指令,从而进一步加快计算速度。但是NVIDIA和INTEL开发的批处理内核仅适用于批处理中具有相同维度的矩阵问题,在实际应用中可能需要求解批量不同维度的小矩阵。Anderson等人通过将全局通信和局部通信分离
的方法,在GPU上实现了小规模的LU分解,但程序中大量的线程间通信仍耗时严重。Cupertino等人对列选主元LU分解算法进行了优化,并在GPU上通过实验证明非连续访存在并行运算中造成了很大的资源浪费。Villa等人通过采用单个CUDA线程或线程块对应解决一个线性方程组系统的方式,在GPU上实现了128*128大小的矩阵批量LU分解。Wainwright研究使用CUDA中的Warp进行最大长度为32的矩阵全旋转LU分解。然而,以上提到的解决方案并不比NVIDIACUBLAS库提供的批处理LU分解API的实现快。
[0005]综上所述,对于中小型线性方程组模型,隐式求解时的LU分解代价很大,决定了整个方程组的求解效率很低,而目前已知的批量算法效率较低,尤其在面对多实例的异构仿真模型时,传统的求解方法严重制约了仿真推进速度。由于雅可比矩阵非常小,全局内存访问延迟成为主要的性能瓶颈,而且矩阵越小,问题就越严重。因此,有必要针对小型矩阵的LU分解算法进行优化。

技术实现思路

[0006]本专利技术实施例的目的在于提供一种面向复杂系统仿真的小型稠密矩阵的并行LU分解方法,旨在解决上述
技术介绍
中提出的问题。
[0007]本专利技术实施例是这样实现的,一种面向复杂系统仿真的小型稠密矩阵的并行LU分解方法,包括以下步骤:
[0008]步骤1、将所有子矩阵中索引相同的元素在大矩阵中重新进行排列组合,对于任意两个顺序邻接的子矩阵A
(g)
,A
(g+1)
,重排后它们的元素在存储位置上也构成邻接关系;
[0009]步骤2、寄存器缓存:使用模板类型声明寄存器二维数组regA,该数组用于将各个子矩阵中的所有数据元素全部加载到寄存器缓存中;
[0010]步骤3、数据读取:将数据全部从各个子矩阵A
(g)
读取加载到寄存器数组中;
[0011]步骤4、基于寄存器regA对矩阵做LU分解;
[0012]步骤5、数据写回主存:LU分解完成后,将寄存器regA中处理完成的数据写回主存。
[0013]进一步的技术方案,在所述步骤1中,对于同一子矩阵A
(g)
的任意两个元素,它们在大矩阵中的存储位置有如下关系:
[0014]与之间的列元素跨度为n;
[0015]和之间的行元素跨度为m
×
N。
[0016]进一步的技术方案,方法结束时,输出大矩阵H,此时其中的每个子矩阵H
i
都由L
i
和U
i
两部分组成,分别是单位下三角矩阵和上三角矩阵,用于后续的批量线性方程组快速求解,进而通过牛顿迭代法计算出所有仿真单元的状态变量值,保证仿真过程快速推进。
[0017]本专利技术实施例提供的一种面向复杂系统仿真的小型稠密矩阵的并行LU分解方法,该方法面向复杂系统仿真领域,针对维度4或8的小型稠密矩阵提出的一种并行LU分解方法,通过利用内存合并访问和数据重组,使用寄存器缓存技术有效地减少全局内存访问次数,提高有效计算时间占比,大幅提升分解效率,填补了对小型稠密矩阵并行LU分解效率低的空白。
附图说明
[0018]图1为本专利技术实施例提供的一种面向复杂系统仿真的小型稠密矩阵的并行LU分解方法中的数据的基本内存布局图;
[0019]图2为本专利技术实施例提供的一种面向复杂系统仿真的小型稠密矩阵的并行LU分解方法中的全局元素组合布局图。
具体实施方式
[00本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种面向复杂系统仿真的小型稠密矩阵的并行LU分解方法,其特征在于,包括以下步骤:步骤1、将所有子矩阵中索引相同的元素在大矩阵中重新进行排列组合,对于任意两个顺序邻接的子矩阵A
(g)
,A
(g+1)
,重排后它们的元素在存储位置上也构成邻接关系;步骤2、寄存器缓存:使用模板类型声明寄存器二维数组regA将各个子矩阵中的所有数据元素全部加载到寄存器缓存中;步骤3、数据读取:将数据全部从各个子矩阵A
(g)
读取加载到寄存器数组中;步骤4、基于寄存器regA对矩阵做LU分解;步骤5、数据写回主存:LU分解完成后,将寄存器regA中处理完成的数据写回主存。2.根据权利要求1所述的...

【专利技术属性】
技术研发人员:包铁彭涛雷新丽张雪松刘露
申请(专利权)人:吉林大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1