CN118069315A - 基于分布式平台的稀疏三角矩阵的求解方法及装置 - Google Patents
基于分布式平台的稀疏三角矩阵的求解方法及装置 Download PDFInfo
- Publication number
- CN118069315A CN118069315A CN202410138270.2A CN202410138270A CN118069315A CN 118069315 A CN118069315 A CN 118069315A CN 202410138270 A CN202410138270 A CN 202410138270A CN 118069315 A CN118069315 A CN 118069315A
- Authority
- CN
- China
- Prior art keywords
- sub
- matrix
- sparse
- blocks
- block
- 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.)
- Pending
Links
- 239000011159 matrix material Substances 0.000 title claims abstract description 567
- 238000000034 method Methods 0.000 title claims abstract description 304
- 230000008569 process Effects 0.000 claims abstract description 251
- 239000013598 vector Substances 0.000 claims abstract description 134
- 238000004364 calculation method Methods 0.000 claims abstract description 60
- 238000000638 solvent extraction Methods 0.000 claims abstract description 16
- 238000003860 storage Methods 0.000 claims description 55
- 238000012545 processing Methods 0.000 claims description 30
- 230000000903 blocking effect Effects 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 15
- 230000006870 function Effects 0.000 claims description 15
- 238000009826 distribution Methods 0.000 claims description 11
- 238000004422 calculation algorithm Methods 0.000 description 26
- 238000004891 communication Methods 0.000 description 21
- 238000010586 diagram Methods 0.000 description 14
- 238000013461 design Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 230000011218 segmentation Effects 0.000 description 4
- 238000004088 simulation Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 238000009776 industrial production Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000009827 uniform distribution Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation 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/5038—Allocation 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 execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/484—Precedence
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computational Mathematics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Complex Calculations (AREA)
Abstract
本发明提供一种基于分布式平台的稀疏三角矩阵的求解方法及装置,该方法包括:对输入的稀疏三角矩阵进行均匀分块处理,并相应地对输入的稠密向量进行均分处理;将对稀疏三角矩阵进行均匀分块处理后得到的稀疏三角矩阵的非空三角矩阵对应的多个子矩阵块按照预设的多个进程的排列方式分布于进程网格上,并将对稠密向量进行均分处理得到的第一子向量部署于第一子矩阵块所分布的进程上;基于多个进程,使用稀疏基本线性代数子程序BLAS对多个子矩阵块进行并行计算,得到多个子矩阵块的结果子向量;基于多个子矩阵块的结果子向量,确定待求解向量的解。从而占用内存小,减少了对可求解矩阵规模的限制,还可以提高计算效率。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种基于分布式平台的稀疏三角矩阵的求解方法及装置。
背景技术
对于芯片设计行业来说,电路仿真技术必不可少,它可以测试芯片设计的可行性,找出设计中可能存在的问题,而对电路进行仿真时,需要求解大量大型电路矩阵。
对于这种超大规模矩阵的稀疏三角解(Sparse Triangular Solver,SpTRSV)问题,传统的三角解算法在性能上存在很多不足之处。现有技术中为了提升算法性能,在分布式平台上的部署三角解算法,将稀疏矩阵处理成为稠密小块,进而使用稠密计算函数进行计算,这样虽然取得了良好的性能,但可能会导致占用大量内存、限制可求解矩阵的规模,或者会引入一些零元,使得存储空间增大、计算时间增加。
发明内容
针对现有技术存在的问题,本发明提供一种基于分布式平台的稀疏三角矩阵的求解方法及装置。
第一方面,本发明提供一种基于分布式平台的稀疏三角矩阵的求解方法,包括:
对输入的稀疏三角矩阵进行均匀分块处理,并相应地对输入的稠密向量进行均分处理;
将对所述稀疏三角矩阵进行均匀分块处理后得到的所述稀疏三角矩阵的非空三角矩阵对应的多个子矩阵块按照预设的多个进程的排列方式分布于进程网格上,并将对所述稠密向量进行均分处理得到的第一子向量部署于第一子矩阵块所分布的进程上;所述第一子矩阵块为与所述第一子向量位于同一行的对角线的子矩阵块;
基于所述多个进程,使用稀疏基本线性代数子程序BLAS对所述多个子矩阵块进行并行计算,得到所述多个子矩阵块的结果子向量;
基于所述多个子矩阵块的结果子向量,确定待求解向量的解。
可选地,所述将对所述稀疏三角矩阵进行均匀分块处理后得到的所述稀疏三角矩阵的非空三角矩阵对应的多个子矩阵块按照预设的多个进程的排列方式分布于进程网格上之后,所述方法还包括:
将所述进程网格上不包括第一进程上分布的子矩阵块的行和列去除,并压缩重组得到第一子稀疏矩阵,将所述第一子稀疏矩阵中的非空子矩阵块存储于所述第一进程上;和/或,
对第一进程上分布的子矩阵块中的非零元素采用稀疏格式进行存储。
可选地,所述对第一进程上分布的子矩阵块中的非零元素采用稀疏格式进行存储,包括:
对第一进程上分布的非对角线的子矩阵块采用压缩稀疏行CSR存储格式进行存储;以及,
对第一进程上分布的对角线的子矩阵块,在中央处理器CPU上进行计算的情况下,采用CSR存储格式进行存储;在图形处理器GPU上进行计算的情况下,采用压缩稀疏列CSC存储格式进行存储。
可选地,使用稀疏BLAS对子矩阵块进行计算,包括:
确定所述多个子矩阵块的数据依赖关系;
对解除数据依赖的第二子矩阵块进行稀疏三角解SpTRSV计算,并将所述解除数据依赖的第二子矩阵块的结果子向量传输至所述进程网格上与所述解除数据依赖的第二子矩阵块所分布的进程位于同一列的进程;以及,
对解除数据依赖的第三子矩阵块进行稀疏矩阵向量乘SpMV计算,并将所述解除数据依赖的第三子矩阵块的结果子向量传输至所述进程网格中与所述解除数据依赖的第三子矩阵块位于同一行的对角线的子矩阵块所分布的进程;
其中,所述第二子矩阵块为对角线的子矩阵块;所述第三子矩阵块为非对角线的子矩阵块;第二子矩阵块在所述第二子矩阵块所分布的进程接收到所述进程网格上与所述第二子矩阵块所在行的除所述第二子矩阵块以外的所有子矩阵块的结果子向量的情况下解除数据依赖;第三子矩阵块在所述第三子矩阵块所分布的进程接收到所述进程网格上与所述第三子矩阵块位于同一列的对角线的子矩阵块的结果子向量的情况下解除数据依赖。
可选地,所述确定所述多个子矩阵块的数据依赖关系之后,所述方法还包括:
将解除数据依赖的子矩阵块加入所述解除数据依赖的子矩阵块所分布的进程的计算队列,并对每个进程的计算队列中的子矩阵块按照优先级从高到低的顺序依次进行计算;
其中,所述每个进程的计算队列中的对角线的子矩阵块优先级高于非对角线的子矩阵块;在所述稀疏三角矩阵为下三角矩阵的情况下,所述每个进程的计算队列中的任意两个子矩阵块中,在所述进程网格上位于另一个子矩阵块的左边或上边的子矩阵块优先级高;在所述稀疏三角矩阵为上三角矩阵的情况下,所述每个进程的计算队列中的任意两个子矩阵块中,在所述进程网格上位于另一个子矩阵块的右边或下边的子矩阵块优先级高。
可选地,所述第二子矩阵块的结果子向量和/或所述第三子矩阵块的结果子向量是通过MPI_Isend与MPI_Recv函数传输的。
第二方面,本发明还提供一种基于分布式平台的稀疏三角矩阵的求解装置,包括:
均分模块,用于对输入的稀疏三角矩阵进行均匀分块处理,并相应地对输入的稠密向量进行均分处理;
分布部署模块,用于将对所述稀疏三角矩阵进行均匀分块处理后得到的所述稀疏三角矩阵的非空三角矩阵对应的多个子矩阵块按照预设的多个进程的排列方式分布于进程网格上,并将对所述稠密向量进行均分处理得到的第一子向量部署于第一子矩阵块所分布的进程上;所述第一子矩阵块为与所述第一子向量位于同一行的对角线的子矩阵块;
计算模块,用于基于所述多个进程,使用稀疏基本线性代数子程序BLAS对所述多个子矩阵块进行并行计算,得到所述多个子矩阵块的结果子向量;
确定模块,用于基于所述多个子矩阵块的结果子向量,确定待求解向量的解。
第三方面,本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上所述第一方面所述的基于分布式平台的稀疏三角矩阵的求解方法。
第四方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上所述第一方面所述的基于分布式平台的稀疏三角矩阵的求解方法。
第五方面,本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述基于分布式平台的稀疏三角矩阵的求解方法。
本发明提供的基于分布式平台的稀疏三角矩阵的求解方法及装置,通过对输入的稀疏三角矩阵进行均匀分块处理,并相应地对输入的稠密向量进行均分处理,将对稀疏三角矩阵进行均匀分块处理后得到的稀疏三角矩阵的非空三角矩阵对应的多个子矩阵块按照预设的多个进程的排列方式分布于进程网格上,将对稠密向量进行均分处理得到的子向量部署于与其位于同一行的对角线的子矩阵块所分布的进程上,然后基于多个进程,用稀疏BLAS对所述多个子矩阵块进行并行计算,得到多个子矩阵块的结果子向量,从而确定待求解向量的解,整个求解过程中占用的内存小,减少了对可求解矩阵规模的限制,还可以提高计算效率。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的基于分布式平台的稀疏三角矩阵的求解方法的流程示意图;
图2为本发明提供的子矩阵块在进程网格中的分布情况的示意图;
图3为本发明提供的块级别的SpTRSV算法的示意图;
图4为本发明提供的矩阵压缩存储的示意图;
图5为本发明提供的多个进程的协同计算的示意图;
图6为本发明提供的基于分布式平台的稀疏三角矩阵的求解装置的结构示意图;
图7为本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
稀疏矩阵产生于许多的大型科学工程计算领域,包括计算流体力学、统计物理、电路模拟、图像处理、机器学习等。对于稀疏矩阵计算的优化研究十分重要,同时求解线性方程组是自动化技术、信号处理、电路仿真和电子通信等领域中常出现的问题。
对于芯片设计行业来说,电路仿真技术必不可少,它可以测试芯片设计的可行性,找出设计中可能存在的问题,而对电路进行仿真时,需要求解大量大型电路矩阵。随着芯片的发展,工业生产所需要处理的矩阵求解规模与日俱增,对于求解器的要求也日益增高。
对于这种超大规模矩阵的SpTRSV问题,传统的三角解算法在性能上存在很多不足之处。现有技术中为了提升算法性能,在分布式平台上的部署三角解算法,将稀疏矩阵处理成为稠密小块,进而使用稠密计算函数进行计算,这样虽然取得了良好的性能,但可能会导致占用大量内存、限制可求解矩阵的规模,或者会引入一些零元,使得存储空间增大、计算时间增加。
本发明目的在于思考前人算法的不足之处,提出一个更为有效的分布式分块稀疏三角解算法。本发明将使用均匀分块的方式在分布式平台上进行稀疏三角解搭建,并使用稀疏基本线性代数子程序(Basic Linear Algebra Subroutine,BLAS)进行计算。该算法可以将一个大规模的稀疏矩阵在分布式系统下进行求解,以此使用机群的超强算力来对稀疏矩阵进行三角解。
图1为本发明提供的基于分布式平台的稀疏三角矩阵的求解方法的流程示意图,如图1所示,该方法包括以下步骤:
步骤100、对输入的稀疏三角矩阵进行均匀分块处理,并相应地对输入的稠密向量进行均分处理。
步骤101、将对稀疏三角矩阵进行均匀分块处理后得到的稀疏三角矩阵的非空三角矩阵对应的多个子矩阵块按照预设的多个进程的排列方式分布于进程网格上,并将对稠密向量进行均分处理得到的第一子向量部署于第一子矩阵块所分布的进程上;第一子矩阵块为与第一子向量位于同一行的对角线的子矩阵块。
步骤102、基于多个进程,使用稀疏基本线性代数子程序BLAS对多个子矩阵块进行并行计算,得到多个子矩阵块的结果子向量。
步骤103、基于多个子矩阵块的结果子向量,确定待求解向量的解。
具体地,该方法应用于分布式平台以进行并行计算,分布式平台包括多个处理器,这些处理器可以是中央处理器(Central Processing Unit,CPU),也可以是图形处理器(Graphics Processing Unit,GPU),还可以是部分处理器为CPU,部分处理器为GPU。
在本方案中,将稀疏三角矩阵(L)和稠密向量(b)作为输入,需要输出满足等式Lx=b的待求解向量(x)。
首先,对输入的稀疏三角矩阵进行均匀分块处理,并相应地对输入的稠密向量进行均分处理。在将稀疏三角矩阵分成多个n×n(n为大于或等于1的整数)的子矩阵块的情况下,相应地,将稠密向量分成多个n×1的子向量。
例如,设置对输入的稀疏三角矩阵均匀分成2×2的子矩阵块,若稀疏三角矩阵为12×12的矩阵,则可以将稀疏三角矩阵均匀分成6×6个2×2的子矩阵块。相应地,输入的稠密向量为12×1的向量,则可以将输入的稠密向量均分处理得到6个2×1的子向量。
然后,可以将稀疏三角矩阵的非空三角矩阵对应的多个子矩阵块按照预设的多个进程的排列方式分布于进程网格上。
其中,进程的数目和排列方式可以是由用户预先设定的,例如排列方式为2×3的6个进程、2×4的8个进程等。每个进程用于对分布于该进程上的多个子矩阵块进行计算。
以6×6的子矩阵块和2×3的进程排列方式为例,可以将6×6的子矩阵块划分为3×2个区域,每个区域中有2×3个子矩阵块,每个区域中的子矩阵块可以按照进程排列的方式确定相对应的进程。按照这种方式,就可以确定非空三角矩阵对应的多个子矩阵块在进程网格上的分布情况。
图2为本发明提供的子矩阵块在进程网格中的分布情况的示意图,如图2所示,6个进程分别是P0、P1、P2、P3、P4和P5,其进程排列方式为2×3,P0为第一行第一列的进程,那么可以确定在6×6的子矩阵块中,P0对应的子矩阵块为第1行、第3行和第5行中的第1列和第4列的子矩阵块,而对于非空三角矩阵对应的多个子矩阵块,则第1行第1列的子矩阵块、第3行第1列的子矩阵块、第5行第1列的子矩阵块和第5行的第4列的子矩阵块对应于进程P0。
对于对稠密向量进行均分处理得到的多个子向量与进程的对应关系,可以将第一子向量部署于第一子矩阵块所分布的进程上,其中,第一子矩阵块为与第一子向量位于同一行的对角线的子矩阵块,第一子向量可以是对稠密向量进行均分处理得到的多个子向量中的任意一个子向量。如图2所示,输入的稠密向量b被均分为六个子向量,分别是b0、b1、b2、b3、b4和b5,与b0、b1、b2、b3、b4和b5位于同一行的对角线的子矩阵块所分布的进程分别为P0、P4、P2、P3、P1和P5,则将b0、b1、b2、b3、b4和b5分别部署于P0、P4、P2、P3、P1和P5上。
一种实施方式中,可以基于子矩阵块的行数和列数对每个子矩阵块进行标号,从而可以在计算的时候更加快速地索引子矩阵块中的元素在原先输入的稀疏三角矩阵中的位置,并且可以根据子矩阵块的标号确定该子矩阵块所分布的进程。
在确定每个进程分布的子矩阵块和子向量之后,就可以基于多个进程,使用稀疏BLAS对多个子矩阵块进行并行计算,得到多个子矩阵块的结果子向量,并基于多个子矩阵块的结果子向量,确定待求解向量的解。
需要说明的是,分块的SpTRSV算法是在求解前对稀疏矩阵进行分块处理,通过矩阵块之间的相互关系进行求解向量,即从普通算法的元素级别运算上升到块级别的运算。从逻辑上看,对于分块SpTRSV算法的最小运算单元为块级别,即每次操作的输入输出均为子矩阵块或子向量。
图3为本发明提供的块级别的SpTRSV算法的示意图。如图3所示,对应于普通的SpTRSV算法,元素相除,即对角线的子矩阵块的处理对应正常的SpTRSV;元素相乘,即非对角线的子矩阵块的处理对应稀疏矩阵向量乘(Sparse Matrix-Vector Multiplication,SpMV)操作。使用稀疏BLAS对多个子矩阵块进行并行计算的过程可以是用SpTRSV对对角线的子矩阵块进行处理,用SpMV对非对角线的子矩阵块进行处理。
本发明提供的基于分布式平台的稀疏三角矩阵的求解方法,通过对输入的稀疏三角矩阵进行均匀分块处理,并相应地对输入的稠密向量进行均分处理,将对稀疏三角矩阵进行均匀分块处理后得到的稀疏三角矩阵的非空三角矩阵对应的多个子矩阵块按照预设的多个进程的排列方式分布于进程网格上,将对稠密向量进行均分处理得到的子向量部署于与其位于同一行的对角线的子矩阵块所分布的进程上,然后基于多个进程,用稀疏BLAS对所述多个子矩阵块进行并行计算,得到多个子矩阵块的结果子向量,从而确定待求解向量的解,整个求解过程中占用的内存小,减少了对可求解矩阵规模的限制,还可以提高计算效率。
可选地,将对稀疏三角矩阵进行均匀分块处理后得到的稀疏三角矩阵的非空三角矩阵对应的多个子矩阵块按照预设的多个进程的排列方式分布于进程网格上之后,该方法还包括:
将进程网格上不包括第一进程上分布的子矩阵块的行和列去除,并压缩重组得到第一子稀疏矩阵,将第一子稀疏矩阵中的非空子矩阵块存储于第一进程上;和/或,
对第一进程上分布的子矩阵块中的非零元素采用稀疏格式进行存储。
具体地,在将多个子矩阵块按照预设的多个进程的排列方式分布于进程网格上之后,可以对子矩阵块进行压缩存储;或者对子矩阵块中的元素进行压缩存储;或者既对子矩阵块进行压缩存储,也对子矩阵块中的元素进行压缩存储。
图4为本发明提供的矩阵压缩存储的示意图,如图4所示,给出了既对子矩阵块进行压缩存储,也对子矩阵块中的元素进行压缩存储的实施例。
要对子矩阵块进行压缩存储,可以将进程网格上不包括第一进程上分布的子矩阵块的行和列去除,并压缩重组得到第一子稀疏矩阵,将第一子稀疏矩阵存储于第一进程上,第一进程可以是任意一个进程。
如图4(a)所示,进程3(即P3)的子矩阵块分布位置分别是进程网格中的第2行第1列、第4行第1列、第4行第4列、第6行第1列和第6行第4列。在没有对子矩阵块进行压缩存储的情况下,需要存储的子矩阵块的规模为6×6;而将不包括P3上分布的子矩阵块的行和列去除后,即只剩下第2行第1列、第4行第1列、第4行第4列、第6行第1列和第6行第4列的子矩阵块,如图4(b)所示,将这些子矩阵块进行压缩存储得到的子稀疏矩阵的规模仅为3×2,然后将子稀疏矩阵中的非空子矩阵块(即除该子稀疏矩阵中的第2行第1列的子矩阵块)存储到进程3上。其中,对非空子矩阵块的存储格式可以是压缩稀疏行(Compressed SparseRow,CSR)格式。
按照这种方式对子矩阵块进行压缩存储,存储的数组长度减小,且可以正确存储每一个拥有的子矩阵块,这对于在分块后行列数大的情况下的存储十分友好,可以减少一部分存储空间,且只需对压缩存储后的子矩阵块进行计算,不影响计算过程,且提升运算速度。
要对子矩阵块中的元素进行压缩存储,可以对第一进程上分布的子矩阵块中的非零元素采用稀疏格式进行存储,例如CSR、压缩稀疏列(Compressed Sparse Column,CSC)。对子矩阵块中的元素进行压缩存储,可以尽可能地减少内存消耗。
可选地,对第一进程上分布的子矩阵块中的非零元素采用稀疏格式进行存储,包括:
对第一进程上分布的非对角线的子矩阵块采用压缩稀疏行CSR存储格式进行存储;以及,
对第一进程上分布的对角线的子矩阵块,在中央处理器CPU上进行计算的情况下,采用CSR存储格式进行存储;在图形处理器GPU上进行计算的情况下,采用压缩稀疏列CSC存储格式进行存储。
具体地,如图4(c)所示,对第一进程上分布的子矩阵块中的非零元素采用稀疏格式进行存储,可以是对其中的非对角线的子矩阵块采用CSR存储格式进行存储;以及,对其中的对角线的子矩阵块,在CPU上进行计算的情况下,采用CSR存储格式进行存储;在GPU上进行计算的情况下,采用CSC存储格式进行存储。
例如,如图4(a)所示,进程3(即P3)的子矩阵块分布位置分别是进程网格中的第2行第1列、第4行第1列、第4行第4列、第6行第1列和第6行第4列。其中非对角线的子矩阵块有第2行第1列、第4行第1列、第6行第1列和第6行第4列的子矩阵块,对于这些矩阵块,采用CSR存储格式进行存储;对角线的子矩阵块有第4行第4列的子矩阵块,若其是在CPU上进行计算,则采用CSR存储格式对其进行存储;若其是GPU上进行计算,则采用CSC存储格式对其进行存储。
不同的运算函数使用不同的矩阵存储格式性能会有差异,选择特定的CSC和CSR存储格式进行存储,可以提高运算函数对子矩阵块进行运算时的性能。
可选地,使用稀疏BLAS对子矩阵块进行计算,包括:
确定多个子矩阵块的数据依赖关系;
对解除数据依赖的第二子矩阵块进行稀疏三角解SpTRSV计算,并将解除数据依赖的第二子矩阵块的结果子向量传输至进程网格上与解除数据依赖的第二子矩阵块所分布的进程位于同一列的进程;以及,
对解除数据依赖的第三子矩阵块进行稀疏矩阵向量乘SpMV计算,并将解除数据依赖的第三子矩阵块的结果子向量传输至进程网格中与解除数据依赖的第三子矩阵块位于同一行的对角线的子矩阵块所分布的进程;
其中,第二子矩阵块为对角线的子矩阵块;第三子矩阵块为非对角线的子矩阵块;第二子矩阵块在第二子矩阵块所分布的进程接收到进程网格上与第二子矩阵块所在行的除第二子矩阵块以外的所有子矩阵块的结果子向量的情况下解除数据依赖;第三子矩阵块在第三子矩阵块所分布的进程接收到进程网格上与第三子矩阵块位于同一列的对角线的子矩阵块的结果子向量的情况下解除数据依赖。
具体地,在使用稀疏BLAS对子矩阵块进行计算时,可以先确定多个子矩阵块的数据依赖关系。子矩阵块的数据依赖关系可以包括:对角线的子矩阵块在该子矩阵块所分布的进程接收到进程网格上与该子矩阵块所在行的其他所有子矩阵块的结果子向量的情况下解除数据依赖;非对角线的子矩阵块在该子矩阵块所分布的进程接收到进程网格上与该子矩阵块位于同一列的对角线的子矩阵块的结果子向量的情况下解除数据依赖。
例如,6×6的子矩阵块,位于第3行第3列的子矩阵块所分布的进程为P2,该子矩阵块为对角线的子矩阵块,在P2接收到第3行第1列和第3行第2列的子矩阵块的结果子向量后,该子矩阵块可以解除数据依赖;位于第4行第1列的子矩阵块所分布的进程为P3,该子矩阵块为非对角线的子矩阵块,在P3接收到第1行第1列的子矩阵块的结果子向量后,该子矩阵块可以解除数据依赖。
可以理解的是,如果输入的稀疏三角矩阵为下三角矩阵,则第一行第一列的子矩阵块没有数据依赖;如果输入的稀疏三角矩阵为上三角矩阵,则最后一行最后一列的子矩阵块没有数据依赖。如果某一对角线的子矩阵块所在行的其他所有子矩阵块为空,则该对角线的子矩阵块没有数据依赖;如果某一对角线的子矩阵块为空,则与该对角线的子矩阵块位于同一列的其他所有子矩阵块没有数据依赖。
图5为本发明提供的多个进程的协同计算的示意图,如图5所示,确定多个子矩阵块的数据依赖关系后,多个进程可以对解除数据依赖的子矩阵块进行协同计算。
如果解除数据依赖的子矩阵块为对角线的子矩阵块,如第二子矩阵块,可以对第二子矩阵块进行SpTRSV计算,并将第二子矩阵块的结果子向量传输至进程网格上与第二子矩阵块所分布的进程位于同一列的进程。
例如,如图5(b)所示,进程P0对第1行第1列的子矩阵块进行SpTRSV计算,然后将该子矩阵块的结果子向量传输至进程网格上第2行第1列的子矩阵块所分布的进程P3。
如果解除数据依赖的子矩阵块为非对角线的子矩阵块,如第三子矩阵块,可以对第三子矩阵块进行SpMV计算,并将第三子矩阵块的结果子向量传输至进程网格中与第三子矩阵块位于同一行的对角线的子矩阵块所分布的进程。
例如,如图5(c)所示,进程P3对第2行第1列的子矩阵块进行SpMV操作,然后将该子矩阵块的结果子向量传输至进程网格上第2行第2列的子矩阵块所分布的进程P4。
需要说明的是,对于某一进程上分布的多个子矩阵块位于同一列且包括该列的对角线的子矩阵块的情况,当该进程计算完该列的对角线的子矩阵块的结果子向量,无需向自己传输结果子向量,该进程上的该列的其他子矩阵块即可解除数据依赖。
可以理解的是,随着某一进程对分布于该进程上的子矩阵块进行计算并将结果子向量传输给其他进程,接收到结果子向量的进程上分布的子矩阵块会随之解除数据依赖,例如进程P0将第1行第1列的子矩阵块的结果子向量传输至P3,P3上分布的第2行第1列的子矩阵块解除数据依赖,P3对第2行第1列的子矩阵块进行计算……从而所有的子矩阵块都可以解除数据依赖并被计算,进而可以根据这些子矩阵块的结果子向量来确定待求解向量的解。
可选地,确定多个子矩阵块的数据依赖关系之后,该方法还包括:
将解除数据依赖的子矩阵块加入解除数据依赖的子矩阵块所分布的进程的计算队列,并对每个进程的计算队列中的子矩阵块按照优先级从高到低的顺序依次进行计算;
其中,每个进程的计算队列中的对角线的子矩阵块优先级高于非对角线的子矩阵块;在稀疏三角矩阵为下三角矩阵的情况下,每个进程的计算队列中的任意两个子矩阵块中,在进程网格上位于另一个子矩阵块的左边或上边的子矩阵块优先级高;在稀疏三角矩阵为上三角矩阵的情况下,每个进程的计算队列中的任意两个子矩阵块中,在进程网格上位于另一个子矩阵块的右边或下边的子矩阵块优先级高。
具体地,可以在每个进程中设置一个计算队列,在确定多个子矩阵块的数据依赖关系之后,可以将已经解除数据依赖的子矩阵块加入各自分布的进程的计算队列,并对每个进程的计算队列中的子矩阵块按照优先级从高到低的顺序依次进行计算。
例如,进程P3的子矩阵块分布位置分别是进程网格中的第2行第1列、第4行第1列、第4行第4列、第6行第1列和第6行第4列,其中,第4行第4列的子矩阵块没有数据依赖,首先加入进程P3的计算队列,在进程P0将第1行第1列的子矩阵块的结果子向量发送给P3之后,第2行第1列、第4行第1列和第6行第1列的子矩阵块均解除了数据依赖,则需要将这些子矩阵块加入进程P3的计算队列,按照优先级从高到低的顺序进行计算。
本发明中,设定每个进程的计算队列中的对角线的子矩阵块优先级高于非对角线的子矩阵块;并且根据三角解的特性,上三角矩阵应当从左上角到右下角开始计算,而下三角矩阵应当从右下角到左上角开始计算,因此设定在稀疏三角矩阵为下三角矩阵的情况下,每个进程的计算队列中的任意两个子矩阵块中,在进程网格上位于另一个子矩阵块的左边或上边的子矩阵块优先级高;在稀疏三角矩阵为上三角矩阵的情况下,每个进程的计算队列中的任意两个子矩阵块中,在进程网格上位于另一个子矩阵块的右边或下边的子矩阵块优先级高。
本发明使用了无同步思想来对稀疏三角矩阵进行求解,只需要一个轻量级的预处理阶段,而没有设置层级,并完全消除了集合之间的运行时障碍同步,进一步提高了算法性能。
可选地,第二子矩阵块的结果子向量和/或第三子矩阵块的结果子向量是通过MPI_Isend与MPI_Recv函数传输的。
具体地,消息的传递分为阻塞方式和非阻塞方式,在信息传递接口(MPI)编程中用MPI_Send、MPI_Recv和MPI_Isend、MPI_Irecv函数实现。
对于阻塞式通信而言,当发送方提前发送而接收方没有及时接收数据时,发送方会变为等待状态,等待接收方接收信息时才可以对消息进行发送。而对于非阻塞通信,发送方和接收方可以在调用通信函数后马上返回,不论对方是否发送或接收消息,然后将消息交给特定硬件去做,而此时原来的进程则可以进行计算,对于接收方来说也一样,这样就可以实现计算与通信的重叠,减少一部分等待时间。但是非阻塞通信的计算需要提前查询是否已经完全接收到需要进行计算的这部分数据,此操作会使算法变得更加复杂。
而使用MPI_Isend与MPI_Recv函数进行数据的传输,发送方发送后马上返回继续计算进程,接收方会等到接受完此次消息后,才会返回继续计算,从而既保障了接收方访问数据时的正确性,又使得发送方可以将计算与通信重叠,减少等待时间。
以下通过具体应用场景中的实施例来对本发明提供的方法进行进一步阐述。
本实施例首先要对原矩阵进行均匀分块,将分块后的子矩阵按二维进程网格的规律分发到各个进程上,之后进行三角解的求解,使用MPI接口进行进程间消息的接收与发送,本实施例还对算法进行了一定改进,包括在计算和通信方面,另外本实施例对算法进行测试,通过测试的结果分析算法的性能及扩展性。
首先需要对矩阵进行均匀分块,对稀疏矩阵均匀分块不仅可以使矩阵的非零元素情况保持原状,还可以在计算时更加快速的索引到块中元素在原矩阵的位置以及可以计算到拥有指定矩阵块的进程号。传统的SpTRSV算法只是将一个上三角(或下三角)矩阵与已知的向量进行运算求解,自上而下求得要求解密集向量的元素。而分块的SpTRSV算法则是在求解前对稀疏矩阵进行分块处理,通过矩阵块之间的相互关系进行求解向量,即从普通算法的元素级别运算上升到块级别的运算。从逻辑上看,对于分块SpTRSV算法的最小运算单元为块级别,即每次操作的输入输出均为子矩阵块或子向量。对应于普通的SpTRSV算法,元素相除,即对角块的处理对应正常的SpTRSV;元素相乘,即非对角线块的处理对应SpMV操作。
在分布式平台上实现SpTRSV算法需要将进行均匀分块后的子矩阵块部署在各个进程上,按照二维进程网格的顺序对子矩阵块进行部署,图2展示了矩阵块在2×3的进程网格中分布的情况。需要注意的是,需要对子向量也进行一个部署,子向量的分布依赖于同一行的对角线子矩阵块的存在进程,而不是按照子向量的顺序依次进行部署。
本次工作使用二层稀疏模式对原矩阵进行存储。二层稀疏模式指的是对分块后的非零子矩阵块位置进行压缩存储,并在对块内的非零元素也采用稀疏格式进行存储,尽可能的减小内存消耗,以便能够求解更大规模的矩阵。图4为矩阵的压缩及存储格式示意图。如图4(a)中展示了在2×3的进程网格下,进程号为3的进程拥有的子矩阵块情况。对于二层稀疏格式的表现如图4(b)(c)(d)(e),图4(c)、(d)两个区域代表了第一层稀疏存储结构,可以存储为CSR存储格式或CSC存储格式,另外可以观察到,进程拥有的子矩阵块有规律的分布在某些行和某些列,故我们可以对其进行压缩,除去不包含子矩阵块的行和列重新组成一个稀疏矩阵,即得到图4(b)区域显示的稀疏矩阵。此时可以观察到该稀疏矩阵的规模从6×6减小到3×2,存储的数组长度减小,且可以正确存储每一个拥有的子矩阵块,这对于在分块后行列数大的情况下的存储十分友好,可以减小一部分存储空间,且不影响计算过程。
图4(c)区域表示了对子矩阵块中的非零元素进行稀疏存储,本次工作将对矩阵块内部元素采取混合存储格式进行存储,对非对角线矩阵块采取CSR存储格式,而对对角线矩阵块在CPU上进行计算时将采用CSR格式,在GPU上计算时采用CSC存储格式。
由主进程对原稀疏矩阵进行分块,并将分块后的子矩阵块传送给各个进程,各个进程接收各自需要计算的数据部分的信息,并将这些数据其还原成上述的二层稀疏格式,之后各个进程同时进行计算。各个进程并行求解稀疏三角解时需要以消息作为驱动,各个进程之间的消息传输通过MPI接口函数实现。
在各进程进行计算时,对角线块必须收到此行所有进程的数据,才可以解除所有数据依赖,进行SpTRSV计算,并且将得到的结果进行列广播操作。非对角线块在接收到所在列的对角线块计算结果后,解除数据依赖,进行SpMV操作,并且将结果进行行广播操作。列广播操作为发送SpTRSV操作得到的结果子向量到进程网格中与对角线进程处于同一列的进程,行广播操作为发送SpMV操作得到的结果向量到该非对角线块所在行的对角线块所在的进程。
为更好说明各个进程的数据通信情况,图5的(b)、(c)、(d)为假设可能存在的求解图5(a)矩阵中前三行的计算时刻。图5(a)中有最外层的方框的矩阵(即第1行第1列、第2行第1列、第2行第2列、第3行第2列和第3行第3列的矩阵)为各进程第一个拥有的子矩阵块,图5(b)为开始计算时刻,此时进程0计算第一行的对角线块,其余进程均存在数据依赖没有解除,故只能进行等待(图5(b)中的Wait)。此刻对角线进程进行SpTRSV操作(图5(b)中的SpTRSV),对SpTRSV操作得到的解向量x0,①代表该进程将x0发送给进程网格中同列的进程(图5(b)第2行第1列的进程),将该操作称为列广播,需要注意的是本进程中也包含需要该解向量数据的矩阵块,由于它们处于同一进程,所以不需要进行数据传输,即图5(b)中用虚线代表的②。
另外本实施例在此基础上,使用了无同步思想进行求解,只需要一个轻量级的预处理阶段,而没有设置层级。更重要的是,该方法完全消除了集合之间的运行时障碍同步。该方法需要对每个矩阵块进行预处理,得到其依赖关系,通过不断查询可接收的消息来解除某些矩阵的依赖,当某矩阵块解除所有依赖时,则将其加入计算队列,进程将从计算队列中取出最优先的任务进行计算,得到计算结果后进行消息的发送或继续进行下一个任务的计算。由于三角解的特性,我们设定三角块优先级高于矩形块,对于下三角矩阵,越靠近左上角的块优先级越高。
最后,该实施例对算法的通信方式进行了优化,消息的传递分为阻塞方式和非阻塞方式,在MPI编程中用MPI_Send、MPI_Recv和MPI_Isend、MPI_Irecv函数实现,对于阻塞式通信而言,当发送方提前发送而接收方没有及时接收数据时,发送方会变为等待状态,等待接收方接收信息时才可以对消息进行发送。而对于非阻塞通信,发送方和接收方可以在调用通信函数后马上返回,不论对方是否发送或接收消息,然后将消息交给特定硬件去做,而此时原进程则可以进行计算,对于接收方来说也一样,这样就可以实现计算与通信的重叠,减少一部分等待时间。但是非阻塞通信的计算需要提前查询是否已经完全接收到需要进行计算的这部分数据,此操作会使算法变得更加复杂,故此发明使用了MPI_Isend与MPI_Recv函数进行数据的传输,使得即保障了接收方访问数据时的正确性,又使得发送方可以将计算与通信重叠,减少等待时间。
下面对本发明提供的基于分布式平台的稀疏三角矩阵的求解装置进行描述,下文描述的基于分布式平台的稀疏三角矩阵的求解装置与上文描述的基于分布式平台的稀疏三角矩阵的求解方法可相互对应参照。
图6为本发明提供的基于分布式平台的稀疏三角矩阵的求解装置的结构示意图,如图6所示,该装置包括:
均分模块600,用于对输入的稀疏三角矩阵进行均匀分块处理,并相应地对输入的稠密向量进行均分处理;
分布部署模块610,用于将对稀疏三角矩阵进行均匀分块处理后得到的稀疏三角矩阵的非空三角矩阵对应的多个子矩阵块按照预设的多个进程的排列方式分布于进程网格上,并将对稠密向量进行均分处理得到的第一子向量部署于第一子矩阵块所分布的进程上;第一子矩阵块为与第一子向量位于同一行的对角线的子矩阵块;
计算模块620,用于基于多个进程,使用稀疏基本线性代数子程序BLAS对多个子矩阵块进行并行计算,得到多个子矩阵块的结果子向量;
确定模块630,用于基于多个子矩阵块的结果子向量,确定待求解向量的解。
可选地,该装置还包括压缩存储模块,用于:
将进程网格上不包括第一进程上分布的子矩阵块的行和列去除,并压缩重组得到第一子稀疏矩阵,将第一子稀疏矩阵中的非空子矩阵块存储于第一进程上;和/或,
对第一进程上分布的子矩阵块中的非零元素采用稀疏格式进行存储。
可选地,对第一进程上分布的子矩阵块中的非零元素采用稀疏格式进行存储,包括:
对第一进程上分布的非对角线的子矩阵块采用压缩稀疏行CSR存储格式进行存储;以及,
对第一进程上分布的对角线的子矩阵块,在中央处理器CPU上进行计算的情况下,采用CSR存储格式进行存储;在图形处理器GPU上进行计算的情况下,采用压缩稀疏列CSC存储格式进行存储。
可选地,使用稀疏BLAS对子矩阵块进行计算,包括:
确定多个子矩阵块的数据依赖关系;
对解除数据依赖的第二子矩阵块进行稀疏三角解SpTRSV计算,并将解除数据依赖的第二子矩阵块的结果子向量传输至进程网格上与解除数据依赖的第二子矩阵块所分布的进程位于同一列的进程;以及,
对解除数据依赖的第三子矩阵块进行稀疏矩阵向量乘SpMV计算,并将解除数据依赖的第三子矩阵块的结果子向量传输至进程网格中与解除数据依赖的第三子矩阵块位于同一行的对角线的子矩阵块所分布的进程;
其中,第二子矩阵块为对角线的子矩阵块;第三子矩阵块为非对角线的子矩阵块;第二子矩阵块在第二子矩阵块所分布的进程接收到进程网格上与第二子矩阵块所在行的除第二子矩阵块以外的所有子矩阵块的结果子向量的情况下解除数据依赖;第三子矩阵块在第三子矩阵块所分布的进程接收到进程网格上与第三子矩阵块位于同一列的对角线的子矩阵块的结果子向量的情况下解除数据依赖。
可选地,计算模块620还用于:
将解除数据依赖的子矩阵块加入解除数据依赖的子矩阵块所分布的进程的计算队列,并对每个进程的计算队列中的子矩阵块按照优先级从高到低的顺序依次进行计算;
其中,每个进程的计算队列中的对角线的子矩阵块优先级高于非对角线的子矩阵块;在稀疏三角矩阵为下三角矩阵的情况下,每个进程的计算队列中的任意两个子矩阵块中,在进程网格上位于另一个子矩阵块的左边或上边的子矩阵块优先级高;在稀疏三角矩阵为上三角矩阵的情况下,每个进程的计算队列中的任意两个子矩阵块中,在进程网格上位于另一个子矩阵块的右边或下边的子矩阵块优先级高。
可选地,第二子矩阵块的结果子向量和/或第三子矩阵块的结果子向量是通过MPI_Isend与MPI_Recv函数传输的。
在此需要说明的是,本发明提供的上述装置,能够实现上述方法实施例所实现的所有方法步骤,且能够达到相同的技术效果,在此不再对本实施例中与方法实施例相同的部分及有益效果进行具体赘述。
图7为本发明提供的电子设备的结构示意图,如图7所示,该电子设备可以包括:处理器(processor)710、通信接口(Communications Interface)720、存储器(memory)730和通信总线740,其中,处理器710,通信接口720,存储器730通过通信总线740完成相互间的通信。处理器710可以调用存储器730中的逻辑指令,以执行上述各实施例提供的任一所述基于分布式平台的稀疏三角矩阵的求解方法。
此外,上述的存储器730中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
在此需要说明的是,本发明提供的电子设备,能够实现上述方法实施例所实现的所有方法步骤,且能够达到相同的技术效果,在此不再对本实施例中与方法实施例相同的部分及有益效果进行具体赘述。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各实施例提供的任一所述基于分布式平台的稀疏三角矩阵的求解方法。
在此需要说明的是,本发明提供的计算机程序产品,能够实现上述方法实施例所实现的所有方法步骤,且能够达到相同的技术效果,在此不再对本实施例中与方法实施例相同的部分及有益效果进行具体赘述。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的任一所述基于分布式平台的稀疏三角矩阵的求解方法。
在此需要说明的是,本发明提供的非暂态计算机可读存储介质,能够实现上述方法实施例所实现的所有方法步骤,且能够达到相同的技术效果,在此不再对本实施例中与方法实施例相同的部分及有益效果进行具体赘述。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种基于分布式平台的稀疏三角矩阵的求解方法,其特征在于,包括:
对输入的稀疏三角矩阵进行均匀分块处理,并相应地对输入的稠密向量进行均分处理;
将对所述稀疏三角矩阵进行均匀分块处理后得到的所述稀疏三角矩阵的非空三角矩阵对应的多个子矩阵块按照预设的多个进程的排列方式分布于进程网格上,并将对所述稠密向量进行均分处理得到的第一子向量部署于第一子矩阵块所分布的进程上;所述第一子矩阵块为与所述第一子向量位于同一行的对角线的子矩阵块;
基于所述多个进程,使用稀疏基本线性代数子程序BLAS对所述多个子矩阵块进行并行计算,得到所述多个子矩阵块的结果子向量;
基于所述多个子矩阵块的结果子向量,确定待求解向量的解。
2.根据权利要求1所述的基于分布式平台的稀疏三角矩阵的求解方法,其特征在于,所述将对所述稀疏三角矩阵进行均匀分块处理后得到的所述稀疏三角矩阵的非空三角矩阵对应的多个子矩阵块按照预设的多个进程的排列方式分布于进程网格上之后,所述方法还包括:
将所述进程网格上不包括第一进程上分布的子矩阵块的行和列去除,并压缩重组得到第一子稀疏矩阵,将所述第一子稀疏矩阵中的非空子矩阵块存储于所述第一进程上;和/或,
对第一进程上分布的子矩阵块中的非零元素采用稀疏格式进行存储。
3.根据权利要求2所述的基于分布式平台的稀疏三角矩阵的求解方法,其特征在于,所述对第一进程上分布的子矩阵块中的非零元素采用稀疏格式进行存储,包括:
对第一进程上分布的非对角线的子矩阵块采用压缩稀疏行CSR存储格式进行存储;以及,
对第一进程上分布的对角线的子矩阵块,在中央处理器CPU上进行计算的情况下,采用CSR存储格式进行存储;在图形处理器GPU上进行计算的情况下,采用压缩稀疏列CSC存储格式进行存储。
4.根据权利要求1所述的基于分布式平台的稀疏三角矩阵的求解方法,其特征在于,使用稀疏BLAS对子矩阵块进行计算,包括:
确定所述多个子矩阵块的数据依赖关系;
对解除数据依赖的第二子矩阵块进行稀疏三角解SpTRSV计算,并将所述解除数据依赖的第二子矩阵块的结果子向量传输至所述进程网格上与所述解除数据依赖的第二子矩阵块所分布的进程位于同一列的进程;以及,
对解除数据依赖的第三子矩阵块进行稀疏矩阵向量乘SpMV计算,并将所述解除数据依赖的第三子矩阵块的结果子向量传输至所述进程网格中与所述解除数据依赖的第三子矩阵块位于同一行的对角线的子矩阵块所分布的进程;
其中,所述第二子矩阵块为对角线的子矩阵块;所述第三子矩阵块为非对角线的子矩阵块;第二子矩阵块在所述第二子矩阵块所分布的进程接收到所述进程网格上与所述第二子矩阵块所在行的除所述第二子矩阵块以外的所有子矩阵块的结果子向量的情况下解除数据依赖;第三子矩阵块在所述第三子矩阵块所分布的进程接收到所述进程网格上与所述第三子矩阵块位于同一列的对角线的子矩阵块的结果子向量的情况下解除数据依赖。
5.根据权利要求4所述的基于分布式平台的稀疏三角矩阵的求解方法,其特征在于,所述确定所述多个子矩阵块的数据依赖关系之后,所述方法还包括:
将解除数据依赖的子矩阵块加入所述解除数据依赖的子矩阵块所分布的进程的计算队列,并对每个进程的计算队列中的子矩阵块按照优先级从高到低的顺序依次进行计算;
其中,所述每个进程的计算队列中的对角线的子矩阵块优先级高于非对角线的子矩阵块;在所述稀疏三角矩阵为下三角矩阵的情况下,所述每个进程的计算队列中的任意两个子矩阵块中,在所述进程网格上位于另一个子矩阵块的左边或上边的子矩阵块优先级高;在所述稀疏三角矩阵为上三角矩阵的情况下,所述每个进程的计算队列中的任意两个子矩阵块中,在所述进程网格上位于另一个子矩阵块的右边或下边的子矩阵块优先级高。
6.根据权利要求4或5所述的基于分布式平台的稀疏三角矩阵的求解方法,其特征在于,所述第二子矩阵块的结果子向量和/或所述第三子矩阵块的结果子向量是通过MPI_Isend与MPI_Recv函数传输的。
7.一种基于分布式平台的稀疏三角矩阵的求解装置,其特征在于,包括:
均分模块,用于对输入的稀疏三角矩阵进行均匀分块处理,并相应地对输入的稠密向量进行均分处理;
分布部署模块,用于将对所述稀疏三角矩阵进行均匀分块处理后得到的所述稀疏三角矩阵的非空三角矩阵对应的多个子矩阵块按照预设的多个进程的排列方式分布于进程网格上,并将对所述稠密向量进行均分处理得到的第一子向量部署于第一子矩阵块所分布的进程上;所述第一子矩阵块为与所述第一子向量位于同一行的对角线的子矩阵块;
计算模块,用于基于所述多个进程,使用稀疏基本线性代数子程序BLAS对所述多个子矩阵块进行并行计算,得到所述多个子矩阵块的结果子向量;
确定模块,用于基于所述多个子矩阵块的结果子向量,确定待求解向量的解。
8.一种电子设备,包括存储器、处理器及存储在所述存储器上并在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至6任一项所述基于分布式平台的稀疏三角矩阵的求解方法。
9.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述基于分布式平台的稀疏三角矩阵的求解方法。
10.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述基于分布式平台的稀疏三角矩阵的求解方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410138270.2A CN118069315A (zh) | 2024-01-31 | 2024-01-31 | 基于分布式平台的稀疏三角矩阵的求解方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410138270.2A CN118069315A (zh) | 2024-01-31 | 2024-01-31 | 基于分布式平台的稀疏三角矩阵的求解方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118069315A true CN118069315A (zh) | 2024-05-24 |
Family
ID=91106795
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410138270.2A Pending CN118069315A (zh) | 2024-01-31 | 2024-01-31 | 基于分布式平台的稀疏三角矩阵的求解方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118069315A (zh) |
-
2024
- 2024-01-31 CN CN202410138270.2A patent/CN118069315A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110998570B (zh) | 具有带有块浮点处理的矩阵矢量单元的硬件节点 | |
CN110245751B (zh) | 一种gemm运算方法及装置 | |
US20230026006A1 (en) | Convolution computation engine, artificial intelligence chip, and data processing method | |
US9529590B2 (en) | Processor for large graph algorithm computations and matrix operations | |
CN108170639B (zh) | 基于分布式环境的张量cp分解实现方法 | |
CN114995782B (zh) | 数据处理方法、装置、设备和可读存储介质 | |
WO2021036729A1 (zh) | 一种矩阵运算方法、运算装置以及处理器 | |
CN112686379A (zh) | 集成电路装置、电子设备、板卡和计算方法 | |
CN114003198A (zh) | 内积处理部件、任意精度计算设备、方法及可读存储介质 | |
CN118193914A (zh) | 面向分布式平台的lu分解方法、装置、设备及存储介质 | |
CN110909872A (zh) | 集成电路芯片装置及相关产品 | |
CN114329329A (zh) | 硬件中的稀疏矩阵乘法 | |
Li | Fast and highly scalable parallel computations for fundamental matrix problems on distributed memory systems | |
CN118069315A (zh) | 基于分布式平台的稀疏三角矩阵的求解方法及装置 | |
Lin et al. | Train where the data is: A case for bandwidth efficient coded training | |
CN113836481B (zh) | 矩阵计算电路、方法、电子设备及计算机可读存储介质 | |
CN220983883U (zh) | 矩阵计算装置、小芯片设备及人工智能加速器装置 | |
CN111507178B (zh) | 数据处理的优化方法及装置、存储介质、计算机设备 | |
Maeda et al. | Performance evaluation of sparse matrix-vector multiplication using GPU/MIC cluster | |
Chen et al. | A TSQR Based Krylov Basis Computation Method on Hybrid GPU Cluster | |
CN109615062B (zh) | 一种卷积运算方法及装置 | |
CN118193915A (zh) | 基于无同步调度的分布式稀疏lu分解方法及装置 | |
Verma et al. | A Study on Optimization of Sparse and Dense Linear System Solver Over GF (2) on GPUs | |
CN116955906A (zh) | 一种哈密顿矩阵正交归一化方法及装置 | |
Tomii et al. | A Hardware Solver for Simultaneous Linear Equations with Multistage Interconnection Network |
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 |