一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于上下三角分解的稀疏矩阵并行求解方法及装置与流程

2022-04-13 16:48:47 来源:中国专利 TAG:


1.本发明涉及数据处理技术领域,尤其涉及一种基于上下三角分解的稀疏矩阵并行求解方法及装置。


背景技术:

2.随着计算机技术的发展,大规模科学计算的需求逐渐增大。科学计算的很多领域,如结构力学计算、流体力学计算等,都需要对大规模稀疏线性方程组进行求解。
3.线性方程组的直接解法是数值稳定性最高,也是最能有效利用处理器浮点计算能力的方法。该解法离不开对系数矩阵的上下三角分解(lu factorization,简称lu),进一步的,基于上下三角分解进行稀疏矩阵的并性求解。
4.在电力系统求解各支路电流和各节点电压的场景下,需要基于上下三角分解进行稀疏矩阵的并行求解。目前,寻找一种高效的基于上下三角分解进行稀疏矩阵的并性求解的方法是业界亟待解决的重要课题。


技术实现要素:

5.本发明提供一种基于上下三角分解的稀疏矩阵并行求解方法及装置,通过合理利用处理器之间的通信,可以快速有效地实现处理器间的同步操作和数据共享,提高了基于上下三角分解进行稀疏矩阵的并行求解过程的计算效率。
6.本发明提供一种基于上下三角分解的稀疏矩阵并行求解方法,所述方法应用于并行计算平台,所述并行计算平台包括多个处理器,所述方法包括:接收输入矩阵,并逐列存储所述输入矩阵的非零元;对所述输入矩阵进行重排序,得到重排序矩阵,其中,在所述重排序矩阵中,lu分解的填入小于第一数量,以及对角线位置的所述非零元的绝对值大于第一阈值;基于所述重排序矩阵,构造矩阵消去树,并基于所述矩阵消去树,构造子树和任务队列;基于多个所述处理器对多个所述子树和多个所述任务队列进行并行计算,并基于计算结果得到输出矩阵,其中,所述输出矩阵为关于所述输入矩阵的lu分解矩阵;基于所述输出矩阵,得到关于所述输入矩阵的求解结果。
7.根据本发明提供的一种于上下三角分解的稀疏矩阵并行求解方法,所述矩阵消去树包括多个节点,所述节点包括根节点和叶子节点,所述基于矩阵消去树,构造子树和任务队列,包括:以所述根节点为起点以及以所述叶子节点为终点,将所述矩阵消去树划分为多个所述子树,其中,所述子树的数量大于所述处理器的数量;确定独立节点,并基于所述独立节点,构造所述任务队列,其中,所述独立节点为所述矩阵消去树中未被划入所述子树中的节点。
8.根据本发明提供的一种于上下三角分解的稀疏矩阵并行求解方法,所述基于多个所述处理器对多个所述子树进行并行计算,包括:基于贪心算法,将多个所述子树分配给多个所述处理器;基于多个所述处理器对多个所述子树进行并行计算。
9.根据本发明提供的一种于上下三角分解的稀疏矩阵并行求解方法,所述处理器包
括高速缓冲存储器,所述子树的节点包括多个子节点,所述处理器采用以下方式对所述子树进行计算:基于所述高速缓冲存储器的容量,确定读取所述子节点的读取方式;基于所述处理器对读取到的所述子节点进行计算,得到关于所述节点的节点值;基于所述节点值,得到关于所述子树的计算结果。
10.根据本发明提供的一种于上下三角分解的稀疏矩阵并行求解方法,所述基于所述高速缓冲存储器的容量,确定读取所述子节点的读取方式,包括:按照与所述子树的节点的距离,将所述子节点进行降序排列,得到子节点队列;以所述子节点队列的始端为起点,在所述子节点队列中依次选取预设数量的子节点,并通过所述高速缓冲存储器对所述预设数量的子节点进行读取,其中,所述预设数量小于或等于所述高速缓冲存储器的容量;基于所述处理器,对所述子节点队列中除所述预设数量的子节点之外的其他子节点进行读取。
11.根据本发明提供的一种于上下三角分解的稀疏矩阵并行求解方法,所述基于多个所述处理器对多个所述任务队列进行并行计算,包括:在所述处理器中确定一个调度处理器以及多个执行处理器,其中,所述执行处理器为所述处理器中除所述调度处理器之外的其他处理器;基于通信传输,通过所述调度处理器将多个所述任务队列下发至多个所述执行处理器;基于多个所述执行处理器,对多个所述任务队列进行并行计算。
12.根据本发明提供的一种于上下三角分解的稀疏矩阵并行求解方法,所述执行处理器采用以下方式对所述任务队列进行计算,包括:基于所述调度处理器,实时确定所述任务队列的计算状态;响应于所述执行处理器请求获取所述任务队列进行计算,基于所述调度处理器判断所述执行处理器请求获取的任务队列的计算状态;基于所述任务队列的计算状态,通过所述执行处理器对所述任务队列进行计算。
13.根据本发明提供的一种于上下三角分解的稀疏矩阵并行求解方法,所述任务队列的计算状态包括用于确定所述任务队列的计算结果的节点的计算状态,所述基于所述任务队列的计算状态,通过所述执行处理器对所述任务队列进行计算,包括:若用于确定所述任务队列的计算结果的节点的计算状态为未完成计算,基于所述节点中已计算完毕的子节点,通过所述执行处理器对所述任务队列进行初始计算;若用于确定所述任务队列的计算结果的节点的计算状态为已完成计算,基于所述节点,通过所述执行处理器对所述任务队列进行计算。
14.根据本发明提供的一种于上下三角分解的稀疏矩阵并行求解方法,在基于所述节点中已计算完毕的子节点,通过所述执行处理器对所述任务队列进行初始计算之后,所述方法还包括:基于所述调度处理器,实时确定所述节点中未计算完毕的子节点的计算状态;响应于所述未计算完毕的子节点的当前时刻的计算状态为已计算完毕,基于所述未计算完毕的子节点,通过所述执行处理器对所述初始计算的结果进行更新。
15.根据本发明提供的一种于上下三角分解的稀疏矩阵并行求解方法,所述方法还包括:基于多个所述处理器,对同一第一子树和/或同一第一任务队列进行并行计算,其中,所述第一子树为与所述矩阵消去树的根部相连接的子树,所述第一任务队列为与所述矩阵消去树的根部相连接的任务队列。
16.本发明还提供一种于上下三角分解的稀疏矩阵并行求解装置,所述装置应用于并行计算平台,所述并行计算平台包括多个处理器,所述装置包括:接收模块,用于接收输入矩阵,并逐列存储所述输入矩阵的非零元;重排序模块,用于对所述输入矩阵进行重排序,
得到重排序矩阵,其中,在所述重排序矩阵中,lu分解的填入小于第一数量,以及对角线位置的所述非零元的绝对值大于第一阈值;构造模块,用于基于所述重排序矩阵,构造矩阵消去树,并基于所述矩阵消去树,构造子树和任务队列;处理模块,用于基于多个所述处理器对多个所述子树和多个所述任务队列进行并行计算,并基于计算结果得到输出矩阵,其中,所述输出矩阵为关于所述输入矩阵的lu分解矩阵;生成模块,用于基于所述输出矩阵,得到关于所述输入矩阵的求解结果。
17.根据本发明提供的一种于上下三角分解的稀疏矩阵并行求解装置,所述矩阵消去树包括多个节点,所述节点包括根节点和叶子节点,所述构造模块采用以下方式基于矩阵消去树,构造子树和任务队列:以所述根节点为起点以及以所述叶子节点为终点,将所述矩阵消去树划分为多个所述子树,其中,所述子树的数量大于所述处理器的数量;确定独立节点,并基于所述独立节点,构造所述任务队列,其中,所述独立节点为所述矩阵消去树中未被划入所述子树中的节点。
18.本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述基于上下三角分解的稀疏矩阵并行求解方法的步骤。
19.本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述基于上下三角分解的稀疏矩阵并行求解方法的步骤。
20.本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述基于上下三角分解的稀疏矩阵并行求解方法的步骤。
21.本发明提供的基于上下三角分解的稀疏矩阵并行求解方法及装置,构建关于输入矩阵的子树和任务队列,通过多个处理器对子树和任务队列进行并行计算,并基于计算结果得到输出矩阵。在本发明中通过处理器进行并行计算,可以提高稀疏矩阵并行求解的计算效率,并且,在通过多个处理器对子树和任务队列进行并行计算过程中,利用处理器间的通信机制传输每次运算的依赖数据,可以最小化访存开销,进而提高基于上下三角分解进行稀疏矩阵的并行求解过程的计算效率。
附图说明
22.为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
23.图1是本发明提供的基于上下三角分解的稀疏矩阵并行求解方法的流程示意图之一;
24.图2是本发明提供的对稀疏矩阵进行lu分解的示意图之一;
25.图3是本发明提供的基于矩阵消去树,构造子树和任务队列的流程示意图之一;
26.图4是本发明提供的对稀疏矩阵进行lu分解的矩阵消去树的结构示意图之一;
27.图5是本发明提供的基于多个处理器对多个子树进行并行计算的流程示意图之一;
28.图6是本发明提供的基于处理器对子树进行计算的流程示意图之一;
29.图7是本发明提供的基于高速缓冲存储器的容量,确定读取子节点的读取方式的流程示意图之一;
30.图8是本发明提供的基于多个处理器对多个任务队列进行并行计算的流程示意图之一;
31.图9是本发明提供的基于处理器对任务队列进行计算的流程示意图之一;
32.图10是本发明提供的基于上下三角分解的稀疏矩阵并行求解装置的结构示意图;
33.图11是本发明提供的电子设备的结构示意图。
具体实施方式
34.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
35.随着计算机技术的发展,大规模科学计算的需求逐渐增大。科学计算的很多领域,如结构力学计算、流体力学计算等,都需要对大规模稀疏线性方程组进行求解。
36.线性方程组的直接解法是数值稳定性最高,也是最能有效利用处理器浮点计算能力的方法。该解法离不开对系数矩阵的上下三角分解(lu factorization,简称lu),进一步的,基于上下三角分解进行稀疏矩阵的并性求解。
37.在电力系统求解各支路电流和各节点电压的场景下,需要基于上下三角分解进行稀疏矩阵的并行求解。目前,寻找一种高效的基于上下三角分解进行稀疏矩阵的并性求解的方法是业界亟待解决的重要课题。
38.在本发明中,对于任意的稀疏矩阵,其lu分解后的结果为:l矩阵和u矩阵的稀疏性与原矩阵相比会存在一些填入,通过一定的重排序,这些填入会使得输出矩阵呈现出局部稠密的特征。因此,稀疏矩阵的lu分解中,通常会将稀疏矩阵的一个稠密子块视为一个计算任务,并对这些稠密子块使用稠密线性代数的求解方法。若将一行或一列视为一个任务节点而构造矩阵消去树时,这些稠密子块便对应由多个相邻节点融合而成的超节点,因此这些稠密子块又称为超节点(supernode)。在本发明中,提到的矩阵消去树指经过节点融合后的消去树,矩阵消去树上的“节点”指一个稠密子块构成的超节点。
39.高性能技术的发展使得多处理器协同运行,以及高效利用并行单元进行计算和访存成为可能。与多处理器提供的强大计算能力相比,很多程序的性能被系统内存的访问速度所限制。为此,处理器自身的片上存储器可以存储一小部分数据并提供快速访问模式。如何有效利用片上存储器空间,减少主存访问次数,对程序开发设计者提出了挑战。高性能计算机系统的多个处理器之间往往存在高速的数据通信模式。以国产新一代申威众核处理器为例,单核组上的64个从核存在远程内存访问(remote memory access),可以直接访问其他从核的片上存储器,访问延迟和带宽远快于直接访问主存。
40.本发明提供的基于上下三角分解的稀疏矩阵并行求解方法,合理得利用处理器之间的通信机制,用以快速有效地实现处理器间的同步操作和数据共享。在基于多个处理器对子树和任务队列进行并行计算过程中,通过利用处理器间的通信机制传输每次运算的依
赖数据,最小化访存开销,进而提高基于上下三角分解进行稀疏矩阵的并性求解过程的计算效率。
41.需要说明的是,本发明提供的疏矩阵并行求解方法可以应用于电力系统求解各支路电流和各节点电压的场景下。通过对电力系统场景下的有关基于上下三角分解的稀疏矩阵并行求解,可以得到电路中的各支路电流和各节点电压。
42.本发明将结合下述实施例对基于上下三角分解的稀疏矩阵并行求解的过程进行说明。
43.图1是本发明提供的基于上下三角分解的稀疏矩阵并行求解方法的流程示意图之一。
44.在本发明一示例性实施例中,基于上下三角分解的稀疏矩阵并行求解可以应用于并行计算平台,其中,并行计算平台可以包括多个处理器。如图1所示,基于上下三角分解的稀疏矩阵并行求解方法可以包括步骤110至步骤150,下面将分别介绍各步骤。
45.在步骤110中,接收输入矩阵,并逐列存储输入矩阵的非零元。
46.在一种实施例中,输入矩阵可以理解为需要基于上下三角分解进行并行求解的矩阵。输入矩阵可以是稀疏矩阵。在一种实施例中,输入矩阵可以是在解决关于电力系统问题中的电路的阻抗。通过对电力系统场景下的有关基于上下三角分解的稀疏矩阵并行求解,可以得到电路中的各支路电流和各节点电压。
47.在一种实施例中,输入矩阵可以包括输入规模。在一示例中,输入矩阵可以是n*n的稀疏矩阵a。输入矩阵a在处理器的内存中以逐列顺序存放非零元。对于逐行存放非零元的情况,则可视为逐列存储顺序的转置矩阵a
t
,基于本发明提供的求解方法,还可以对a
t
进行lu分解,进而达到求解的目的。
48.在一种实施例中,输入矩阵a以压缩稀疏列(compressed sparse column)格式表示。在一种示例中,输入矩阵a可以包括:包含所有非零元值的数组va,包含所有非零元列下标的整数数组ia,每行第一个非零元的位置pa。在va和ia中,各非零元均为逐列顺序排列。其中,pa为非递减的非负整数,ia为非负整数,且在矩阵的同一行内没有重复下标。ia中的下标不超过n。
49.在步骤120中,对输入矩阵进行重排序,得到重排序矩阵,其中,在重排序矩阵中,lu分解的填入小于第一数量,以及对角线位置的非零元的绝对值大于第一阈值。
50.在一种实施例中,可以对输入矩阵a进行重排序,使得lu分解的填入尽可能少,并使得对角线元素的绝对值尽可能大。在一示例中,对输入矩阵进行重排序可以得到重排序矩阵。其中,在重排序矩阵中,lu分解的填入小于第一数量,以及对角线位置的非零元的绝对值大于第一阈值。可以理解的是,第一数量可以根据实际情况进行调整,在本实施例中不做具体限定。通过限定lu分解的填入小于第一数量,可以使得lu分解的填入尽可能少。相应的,第一阈值也可以根据实际情况进行调整,在本实施例中不做具体限定。通过限定对角线位置的非零元的绝对值大于第一阈值,可以使得对角线元素的绝对值尽可能大。
51.在又一种实施例中,可以首先对输入矩阵进行行重排,使得每列中绝对值较大的元素排列到对角线上;再对输入矩阵进行行列对称重排,使得lu分解的填入尽可能少。在应用过程中,可以根据对矩阵消去树的后序遍历顺序排序,使得lu分解结果更容易产生稠密的超节点,且子树的计算具有更好的数据局部性。
52.在又一种实施例中,对输入矩阵进行重排序得到重排序矩阵,可以通过suite sparse-amd,metis,hsl-mc64等开源软件完成。在一示例中,可以通过hsl-mc64进行行重排,使得对角线元素的绝对值尽可能大;再通过metis进行行列对称重排,使得lu分解的填入尽可能少。
53.在步骤130,基于重排序矩阵,构造矩阵消去树,并基于矩阵消去树,构造子树和任务队列。
54.在一种实施例中,可以分析重排序矩阵的矩阵结构,并基于重排序矩阵的矩阵结构构造矩阵消去树。进一步的,基于矩阵消去树,可以构造子树、任务队列,以及输出矩阵的稀疏结构。其中,矩阵消去树中每个节点可以视为一个计算任务,该任务依赖其子节点,因此,在计算每个节点的过程中,可以从叶子节点出发到根节点结束。可以说明的是,矩阵消去树中每个节点可以是对应稠密子块的超节点。
55.在步骤140,基于多个处理器对多个子树和多个任务队列进行并行计算,并基于计算结果得到输出矩阵。其中,输出矩阵为关于输入矩阵的lu分解矩阵。
56.在一种实施例中,可以启动多个处理器并行对多个子树和多个任务队列进行计算,并基于计算结果得到输出矩阵。其中,输出矩阵为关于输入矩阵的lu分解矩阵。可以理解的是,在解决电力系统问题的场景下,输出矩阵为关于电路的阻抗的lu分解矩阵,进一步的,基于关于电路的阻抗的lu分解矩阵,可以求解得到电路中的各支路电流和各节点电压。在一示例中,可以启动全部的处理器进行执行,每个线程绑定一个处理器。例如,可以启动p个处理器,并绑定p个线程。在应用过程中,在通过多个处理器对子树和任务队列进行并行计算过程中,可以利用处理器间的通信机制传输子树和任务队列中每次运算的依赖数据,用以最小化访存开销,进而提高基于上下三角分解进行稀疏矩阵的并性求解过程的计算效率。
57.结合图2可知,图中12
×
12的输入矩阵(左图)经过lu分解后(右图),被划分出5个超节点,即5个任务。其中,输入矩阵中的小方块代表各自的非零元,输入矩阵(左图)中的非零元与经过lu分解后(右图)中的非零元不同。可以理解的是,图2中的右图是经过重排序后再进行分解得到的lu分解矩阵。在本实施例中,l矩阵和u矩阵一共由10个数组表示,分别为每个超节点的起始列s,每列所属的超节点号c,l的非零元值v
l
,每个超节点在v
l
中的起始位置p
vl
,l中每个超节点的非零行下标i
l
,每个超节点在i
l
中的起始位置p
il
,u的非零元值vu,每个片段在vu的起始位置g,每个片段的行下标iu,每列的起始片段位置pu。为表示方便,对角块不分离上三角部分和下三角部分,而是都存放在v
l
中,而vu只存放u中的非对角块部分,该部分中每一列包含若干个非零片段,每个片段对应一个对角块。
58.在步骤150,基于输出矩阵,得到关于输入矩阵的求解结果。
59.在一种实施例中,可以基于输出矩阵,即关于输入矩阵的lu分解矩阵,得到关于输入矩阵的求解结果。在一示例中,在解决电力系统问题的场景下,输出矩阵为关于电路的阻抗的lu分解矩阵,进一步的,基于关于电路的阻抗的lu分解矩阵,可以求解得到电路中与阻抗对应的各支路电流和各节点电压。
60.本发明提供的基于上下三角分解的稀疏矩阵并行求解方法及装置,构建关于输入矩阵的子树和任务队列,通过多个处理器对子树和任务队列进行并行计算,并基于计算结果得到输出矩阵。在本发明中通过处理器进行并行计算,可以提高稀疏矩阵并行求解的计
算效率,并且,在通过多个处理器对子树和任务队列进行并行计算过程中,利用处理器间的通信机制传输每次运算的依赖数据,可以最小化访存开销,进而提高了基于上下三角分解进行稀疏矩阵的并行求解过程的计算效率。
61.本发明将结合下述实施例对基于矩阵消去树,构造子树和任务队列的过程进行说明。
62.图3是本发明提供的基于矩阵消去树,构造子树和任务队列的流程示意图之一。
63.在本发明一示例性实施例中,矩阵消去树可以包括多个节点,其中,每个节点视为一个计算任务。进一步的,节点可以包括子节点,子节点至少包括根节点和叶子节点。可以理解的是,节点对应的计算任务可以根据其依赖的子节点而得到。
64.如图3所示,基于矩阵消去树,构造子树和任务队列可以包括步骤310和步骤320,下面将分别介绍各步骤。
65.在步骤310中,以根节点为起点以及以叶子节点为终点,将矩阵消去树划分为多个子树,其中,子树的数量大于处理器的数量。
66.在一种实施例中,可以从矩阵消去树的根节点为起点,寻找分叉点,直至到叶子节点,用以将矩阵消去树划分为多个子树。其中,子树的数量可以大于处理器的数量。通过此种方式,可以确保每个处理器都可以有子树进行计算处理,实现对处理器的合理利用,从而提高求解效率。
67.可以理解的是,矩阵消去树中每个节点可以视为一个计算任务,该计算任务依赖其子节点。因此,计算过程是从叶子节点出发到根节点结束。在一种实施例中,在划分子树之前,可以先根据子树的计算量确定子树的权重,可以理解的是,子树的计算量越大,其对应的权重也越大。在划分的初始状态下,整个矩阵消去树可以视为一棵子树。从矩阵消去树的根节点出发寻找分岔点,生成新的子树,并从当前最大权重子树的根节点出发继续寻找分岔点,直到生成s*p棵子树(s为大于1的常数,p为处理器的数量)。
68.在步骤320中,确定独立节点,并基于独立节点,构造任务队列。其中,独立节点为矩阵消去树中未被划入子树中的节点。
69.在一种实施例中,在划分出子树后,可以将没有被划分到任何一棵子树的部分作为任务队列,并加入全局任务队列,以供动态调度,队列顺序可以按照自底向上的层序。结合图4可知,对于图4中的矩阵消去树,可以被划分为18个计算任务,其中,这18个计算任务被划分到4棵子树和4个任务队列中。其中,计算任务1至计算任务3构成子树1;计算任务4至计算任务7构成子树2;计算任务9至计算任务11构成子树3;计算任务13至计算任务16构成子树4。计算任务8、计算任务12、计算任务17和计算任务18分别各自构成任务队列。
70.本发明将结合下述实施例对于多个处理器对多个子树进行并行计算的过程进行说明。
71.图5是本发明提供的基于多个处理器对多个子树进行并行计算的流程示意图之一。
72.在本发明一示例性实施例中,如图5所示,基于多个处理器对子树进行并行计算可以包括步骤510和步骤520,下面将分别介绍各步骤。
73.在步骤510中,基于贪心算法,将多个子树分配给多个处理器。
74.在步骤520中,基于多个处理器对多个子树进行并行计算。
75.在一种实施例中,继续以前文所述的生成s*p棵子树为例进行说明。在应用过程中,可以使用贪心算法将s*p棵子树分配给p个处理器进行并行处理,即不断将余下的子树中权重最大者分配给当前任务最轻的处理器核。通过此种方式,可以确保每个处理器都有子树进行计算处理,实现对处理器的合理利用,从而提高求解效率。
76.本发明将结合下述实施例对基于处理器对子树进行计算的过程进行说明。
77.图6是本发明提供的基于处理器对子树进行计算的流程示意图之一。
78.在本发明一示例性实施例中,处理器可以包括高速缓冲存储器,子树的节点可以包括多个子节点。基于处理器对子树进行计算可以包括步骤610至步骤630,下面将分别介绍各步骤。
79.在步骤610中,基于高速缓冲存储器的容量,确定读取子节点的读取方式。
80.在步骤620中,基于处理器对读取到的子节点进行计算,得到关于节点的节点值。
81.在步骤630中,基于节点值,得到关于子树的计算结果。
82.在一种实施例中,可以根据高速缓冲存储器的容量,确定读取子节点的读取方式,并基于处理器对读取到的子节点进行计算,得到关于节点的节点值。进一步的,基于节点值,可以得到关于子树的计算结果,进而得到关于输入矩阵的求解结果。需要说明的是,根据高速缓冲存储器的容量,确定读取子节点的读取方式,可以确保子节点以合理有效的方式被读取到,以提升数据读取的效率,进而提升求解效率。
83.为了进一步介绍本发明,下面将对基于高速缓冲存储器的容量,确定读取子节点的读取方式的过程进行说明。
84.图7是本发明提供的基于高速缓冲存储器的容量,确定读取子节点的读取方式的流程示意图之一。
85.在本发明一示例性实施例中,如图7所示,基于高速缓冲存储器的容量,确定读取子节点的读取方式可以包括步骤710至步骤730,下面将分别介绍各步骤。
86.在步骤710中,按照与子树的节点的距离,将子节点进行降序排列,得到子节点队列。
87.在一种实施例中,可以按照与子树的节点的距离,将子节点进行降序排列,得到子节点队列。可以理解的是,子树的节点是子节点的根节点。在一示例中,距离节点更近的子节点,可以根据距离节点更远的子节点而得到。
88.在步骤720中,以子节点队列的始端为起点,在子节点队列中依次选取预设数量的子节点,并通过高速缓冲存储器对预设数量的子节点进行读取。其中,预设数量小于或等于高速缓冲存储器的容量。
89.在步骤730中,基于处理器,对子节点队列中除预设数量的子节点之外的其他子节点进行读取。
90.在一种实施例中,每个处理器在计算子树中的某个节点时,可以记录之前计算过的节点的数据量。进一步的,可以根据高速缓冲存储器的容量,在读取最近计算出的节点时,通过缓存读取。可以理解的是,最近计算出的节点可以对应以子节点队列的始端为起点,在子节点队列中依次选取预设数量的子节点。在读取较远的节点时,可以根据处理器的访存机制,选择尽可能不破坏缓存中现有数据的访存方式进行读取,其中,较远的节点可以对应子节点队列中除预设数量的子节点之外的其他子节点。通过此种方式,可以充分利用
高速缓冲存储器进行数据读取,降低了访存开销,提高了计算资源利用率。
91.本发明将结合下述实施例对基于多个处理器对多个任务队列进行并行计算的过程进行说明。
92.图8是本发明提供的基于多个处理器对多个任务队列进行并行计算的流程示意图之一。
93.在本发明一示例性实施例中,如图8所示,基于多个处理器对多个任务队列进行并行计算可以包括步骤810至步骤830,下面将分别介绍各步骤。
94.在步骤810中,在处理器中确定一个调度处理器以及多个执行处理器,其中,执行处理器为处理器中除调度处理器之外的其他处理器。
95.在步骤820中,基于通信传输,通过调度处理器将多个任务队列下发至多个执行处理器。
96.在步骤830中,基于多个执行处理器,对多个任务队列进行并行计算。
97.在一种实施例中,在进行任务队列计算时,可以由一个处理器充当调度者,其它处理器充当执行者。在一示例中,可以在处理器中确定一个调度处理器以及多个执行处理器,其中,执行处理器为处理器中除调度处理器之外的其他处理器。进一步的,调度处理器可以通过处理器间的通信传输机制,接收执行处理器的调度请求,将全局任务队列中任务队列分配给执行处理器,并通过处理器间通信发送响应,直到全局任务队列中的任务队列全部分配出去。在一示例中,可以基于多个执行处理器,对多个任务队列进行并行计算。在本实施例中,通过处理器之间的快速通信传输,可以将任务队列下发至多个执行处理器,实现对任务队列的并行处理。由于处理器之间的通信传输具有高效性,因此可以提高任务队列下发的效率,进而提高了求解效率。
98.本发明将结合下述实施例对基于处理器对任务队列进行计算过程进行说明。
99.图9是本发明提供的基于处理器对任务队列进行计算的流程示意图之一。
100.在本发明一示例性实施例中,如图9所示,基于处理器对任务队列进行计算可以包括步骤910至步骤930,下面将分别介绍各步骤。
101.在步骤910中,基于调度处理器,实时确定任务队列的计算状态。
102.在一种实施例中,可以通过调度处理器,实时确定子树的计算状态以及任务队列的计算状态。其中,子树的计算状态可以包括子树所依赖的各节点的计算状态。任务队列的计算状态可以包括任务队列所依赖的各子树的计算状态。
103.在又一种实施例中,每个执行处理器在计算子树时,可以维护对应子树的计算状态。该计算状态可以表示当前正在计算的节点编号fb_tree。在此编号之前的节点可以理解为对应的节点已计算完毕,可供其它执行处理器读取,用于作为计算其他节点的计算依赖数据。
104.在又一种实施例中,调度处理器可以维护一系列状态,包括任务队列中第一个尚未完成的任务编号fb_queue,每个节点的子节点中尚未完成的个数nb_child。
105.在步骤920中,响应于执行处理器请求获取任务队列进行计算,基于调度处理器判断执行处理器请求获取的任务队列的计算状态。
106.在步骤930中,基于任务队列的计算状态,通过执行处理器对任务队列进行计算。
107.在一种实施例中,可以响应于执行处理器向调度处理器请求获取任务队列进行计
算,调度处理器可以判断执行处理器请求获取的任务队列的计算状态,并根据计算状态,通过执行处理器对任务队列进行计算。在一示例中,调度处理器在收到关于执行处理器请求获取任务队列的计算请求时,可以将该执行处理器所执行的上一个任务队列视为已完成。此时,调度处理器还需要更新其维护的计算状态信息。在调度处理器维护任务队列的计算状态信息时,可能有的执行处理器还在进行关于子树计算。由于子树可以是任务队列进行计算的依赖数据,因此,在处理一些关于执行处理器的对于进行任务队列计算的请求,调度处理器还需要查看子树的计算状态,并及时更新子树的计算状态,以方便调度处理器对相应的任务队列进行计算。
108.本发明将结合下述实施例对基于任务队列的计算状态,通过执行处理器对任务队列进行计算的过程进行说明。
109.在本发明一示例性实施例中,任务队列的计算状态可以包括用于确定任务队列的计算结果的节点的计算状态。可以理解的是,任务队列的计算依赖于节点,其中,任务队列的计算状态可以包括关于该节点的计算状态,其中,节点的计算又可以依赖于与该节点对应的子节点,因此,节点的计算状态又与对应的子节点的计算状态相关。基于任务队列的计算状态,通过执行处理器对任务队列进行计算可以通过以下方式实现:若用于确定任务队列的计算结果的节点的计算状态为未完成计算,基于节点中已计算完毕的子节点,通过执行处理器对任务队列进行初始计算;若用于确定任务队列的计算结果的节点的计算状态为已完成计算,基于节点,通过执行处理器对任务队列进行计算。
110.在一种实施例中,执行处理器在收到调度处理器的响应时,即将某一任务队列下发至该执行处理器进行计算。执行处理器在计算与该任务队列相关的一个节点时,需要先用当前节点的子节点来更新当前节点。若nb_child非零,则子节点有部分尚未完成计算。此时首先根据各执行处理器的fb_tree值和调度处理器的fb_queue值,判断所依赖的各节点是否已完成计算,并用其中已完成的节点对任务队列的计算结果进行更新,即对任务队列进行了初始计算。随后等待nb_child归零,再用之前未更新的节点继续完成对任务队列的计算结果更新,即对任务队列的初始计算进行更新,得到最终的计算结果。待所有更新完成后,再进行节点内部分解,以得到关于lu分解矩阵的非零元,从而确定了lu分解矩阵。进一步的,基于lu分解矩阵,得到关于输入矩阵的求解结果。
111.需要说明的是,在每个节点的内部分解的过程中,可以在节点内部进行列选主元。由于节点在u矩阵中对应的块已经视为稠密,行交换不会改变其非零结构。而这种节点内的选主元不能保证数值稳定,但是通过主元扰动的手段,通过将绝对值小于阈值(其中,ε表示机器精度带来的浮点误差,||a||1表示矩阵a的1-范数)的主元替换为τ,可以在一定的误差内避免除零等恶性终止的情况发生,主元扰动带来的误差可以通过迭代精校来消除。
112.在又一实施例中,若用于确定任务队列的计算结果的节点的计算状态为已完成计算,则可以直接基于节点,通过执行处理器对任务队列进行计算,得到关于任务队列的最终的计算结果。进一步的,再进行节点内部分解,得到关于lu分解矩阵的非零元,从而确定lu分解矩阵。基于lu分解矩阵,得到关于输入矩阵的求解结果。
113.在本发明一示例性实施例中,在基于节点中已计算完毕的子节点,通过执行处理
器对任务队列进行初始计算之后,所述方法还包括:基于调度处理器,实时确定节点中未计算完毕的子节点的计算状态;响应于未计算完毕的子节点的当前时刻的计算状态为已计算完毕,基于未计算完毕的子节点,通过执行处理器对初始计算的结果进行更新。
114.在一种实施例中,可以基于调度处理器,实时确定节点中未计算完毕的子节点的计算状态,可以理解的是,若调度处理器确定nb_child归零,表示未计算完毕的子节点的当前时刻的计算状态为已计算完毕。此时,可以用之前未完成计算的子节点继续完成对任务队列的计算结果更新,即对任务队列的初始计算进行更新,得到最终的计算结果。在本实施例中,基于执行处理器,通过已完成计算的节点对任务队列的计算结果进行初步更新,再根据任务队列依赖的节点的计算状态,对任务队列的计算结果进一步更新,得到最终的计算结果。通过此种方式,可以合理分配执行处理器的计算任务,优化执行处理器的计算负载与计算时长。
115.为了进一步介绍本发明提供的基于上下三角分解的稀疏矩阵并行求解方法,下面将结合下述实施例进行说明。
116.在本发明一示例性实施例中,基于上下三角分解的稀疏矩阵并行求解方法除了包括前文所述的步骤110至步骤150之外,还可以包括以下步骤:基于多个处理器,对同一第一子树和/或同一第一任务队列进行并行计算,其中,第一子树为与矩阵消去树的根部相连接的子树,第一任务队列为与矩阵消去树的根部相连接的任务队列。
117.在一种实施例中,在矩阵消去树的根部附近的子树或任务队列的并行度较低,例如第一子树或第一任务队列。调度处理器可以根据第一子树或第一任务队列包括的子节点数据量,将同一个第一子树或第一任务队列分配给多个执行处理器进行并行计算。多个执行处理器可以按列划分数据,每个执行处理器各自更新各自的部分,并在节点(对应第一子树或第一任务队列)内部分解阶段通过处理器通信完成并行分解。可以理解的是,该组的执行处理器在此阶段可以同时用于计算同一子树或任务队列的计算结果。该组的执行处理器在下次发出调度请求时,调度处理器只会将该组最后一个执行处理器的请求视为之前任务已完成,即只会根据收到该组最后一个执行处理器的下次请求时更新关于该阶段的计算状态。
118.在本发明中,基于处理器间的快速通信传输,对每次运算的依赖数据进行传输,可以最小化同步和访存开销,最大化资源利用率。
119.根据上述描述可知,本发明提供的基于上下三角分解的稀疏矩阵并行求解方法及装置,构建关于输入矩阵的子树和任务队列,通过多个处理器对子树和任务队列进行并行计算,并基于计算结果得到输出矩阵。在本发明中通过处理器进行并行计算,可以提高稀疏矩阵并行求解的计算效率,并且,在通过多个处理器对子树和任务队列进行并行计算过程中,利用处理器间的通信机制传输每次运算的依赖数据,可以最小化访存开销,进而提高了基于上下三角分解进行稀疏矩阵的并行求解过程的计算效率。
120.基于相同的构思,本发明还提供一种基于上下三角分解的稀疏矩阵并行求解装置。
121.下面对本发明提供的基于上下三角分解的稀疏矩阵并行求解装置进行描述,下文描述的基于上下三角分解的稀疏矩阵并行求解装置与上文描述的基于上下三角分解的稀疏矩阵并行求解方法可相互对应参照。
122.图10是本发明提供的基于上下三角分解的稀疏矩阵并行求解装置的结构示意图。
123.在本发明一示例性实施例中,基于上下三角分解的稀疏矩阵并行求解装置可以应用于并行计算平台,其中,并行计算平台可以包括多个处理器。基于上下三角分解的稀疏矩阵并行求解装置可以包括接收模块1010、重排序模块1020、构造模块1030、处理模块1040,以及生成模块1050。下面将分别介绍各模块。
124.接收模块1010可以被配置为用于接收输入矩阵,并逐列存储输入矩阵的非零元。
125.重排序模块1020可以被配置为用于对输入矩阵进行重排序,得到重排序矩阵,其中,在重排序矩阵中,lu分解的填入小于第一数量,以及对角线位置的非零元的绝对值大于第一阈值。
126.构造模块1030可以被配置为用于基于重排序矩阵,构造矩阵消去树,并基于矩阵消去树,构造子树和任务队列。
127.处理模块1040可以被配置为用于基于多个处理器对多个子树和多个任务队列进行并行计算,并基于计算结果得到输出矩阵,其中,输出矩阵为关于输入矩阵的lu分解矩阵。
128.生成模块1050可以被配置为用于基于输出矩阵,得到关于输入矩阵的求解结果。
129.在本发明一示例性实施例中,矩阵消去树可以包括多个节点,节点可以包括根节点和叶子节点,构造模块1030可以采用以下方式基于矩阵消去树,构造子树和任务队列:以根节点为起点以及以叶子节点为终点,将矩阵消去树划分为多个子树,其中,子树的数量大于处理器的数量;确定独立节点,并基于独立节点,构造任务队列,其中,独立节点为矩阵消去树中未被划入子树中的节点。
130.在本发明一示例性实施例中,处理模块1040可以采用以下方式基于多个处理器对多个子树进行并行计算:基于贪心算法,将多个子树分配给多个处理器;基于多个处理器对多个子树进行并行计算。
131.在本发明一示例性实施例中,处理器可以包括高速缓冲存储器,子树的节点可以包括多个子节点,处理模块1040可以采用以下方式通过处理器对子树进行计算:
132.基于高速缓冲存储器的容量,确定读取子节点的读取方式;基于处理器对读取到的子节点进行计算,得到关于节点的节点值;基于节点值,得到关于子树的计算结果。
133.在本发明一示例性实施例中,处理模块1040可以采用以下方式基于高速缓冲存储器的容量,确定读取子节点的读取方式:
134.按照与子树的节点的距离,将子节点进行降序排列,得到子节点队列;以子节点队列的始端为起点,在子节点队列中依次选取预设数量的子节点,并通过高速缓冲存储器对预设数量的子节点进行读取,其中,预设数量小于或等于高速缓冲存储器的容量;基于处理器,对子节点队列中除预设数量的子节点之外的其他子节点进行读取。
135.在本发明一示例性实施例中,处理模块1040可以采用以下方式基于多个处理器对多个任务队列进行并行计算:
136.在处理器中确定一个调度处理器以及多个执行处理器,其中,执行处理器为处理器中除调度处理器之外的其他处理器;基于通信传输,通过调度处理器将多个任务队列下发至多个执行处理器;基于多个执行处理器,对多个任务队列进行并行计算。
137.在本发明一示例性实施例中,处理模块1040可以采用以下方式通过执行处理器对
任务队列进行计算:基于调度处理器,实时确定任务队列的计算状态;响应于执行处理器请求获取任务队列进行计算,基于调度处理器判断执行处理器请求获取的任务队列的计算状态;基于任务队列的计算状态,通过执行处理器对任务队列进行计算。
138.在本发明一示例性实施例中,任务队列的计算状态可以包括用于确定任务队列的计算结果的节点的计算状态,处理模块1040可以采用以下方式基于任务队列的计算状态,通过执行处理器对任务队列进行计算:
139.若用于确定任务队列的计算结果的节点的计算状态为未完成计算,基于节点中已计算完毕的子节点,通过执行处理器对任务队列进行初始计算;若用于确定任务队列的计算结果的节点的计算状态为已完成计算,基于节点,通过执行处理器对任务队列进行计算。
140.在本发明一示例性实施例中,处理模块1040还可以被配置为用于基于调度处理器,实时确定节点中未计算完毕的子节点的计算状态;响应于未计算完毕的子节点的当前时刻的计算状态为已计算完毕,基于未计算完毕的子节点,通过执行处理器对初始计算的结果进行更新。
141.在本发明一示例性实施例中,处理模块1040还可以被配置为用于基于多个处理器,对同一第一子树和/或同一第一任务队列进行并行计算,其中,第一子树为与矩阵消去树的根部相连接的子树,第一任务队列为与矩阵消去树的根部相连接的任务队列。
142.图11示例了一种电子设备的实体结构示意图,如图11所示,该电子设备可以包括:处理器(processor)1110、通信接口(communications interface)1120、存储器(memory)1130和通信总线1140,其中,处理器1110,通信接口1120,存储器1130通过通信总线1140完成相互间的通信。处理器1110可以调用存储器1130中的逻辑指令,以执行基于上下三角分解的稀疏矩阵并行求解方法,其中,基于上下三角分解的稀疏矩阵并行求解方法应用于并行计算平台,并行计算平台包括多个处理器,该方法包括:接收输入矩阵,并逐列存储所述输入矩阵的非零元;对输入矩阵进行重排序,得到重排序矩阵,其中,在重排序矩阵中,lu分解的填入小于第一数量,以及对角线位置的非零元的绝对值大于第一阈值;基于重排序矩阵,构造矩阵消去树,并基于矩阵消去树,构造子树和任务队列;基于多个处理器对子树和任务队列进行并行计算,并基于计算结果得到输出矩阵,其中,输出矩阵为关于输入矩阵的lu分解矩阵;基于输出矩阵,得到关于输入矩阵的求解结果。
143.此外,上述的存储器1130中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
144.另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的基于上下三角分解的稀疏矩阵并行求解方法,其中,该方法应用于并行计算平台,并行计算平台包括多个处理器,该方法包括:接收输入矩
阵,并逐列存储输入矩阵的非零元;对输入矩阵进行重排序,得到重排序矩阵,其中,在重排序矩阵中,lu分解的填入小于第一数量,以及对角线位置的非零元的绝对值大于第一阈值;基于重排序矩阵,构造矩阵消去树,并基于矩阵消去树,构造子树和任务队列;基于多个处理器对子树和任务队列进行并行计算,并基于计算结果得到输出矩阵,其中,输出矩阵为关于输入矩阵的lu分解矩阵;基于输出矩阵,得到关于输入矩阵的求解结果。
145.又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的基于上下三角分解的稀疏矩阵并行求解方法,其中,该方法应用于并行计算平台,并行计算平台包括多个处理器,该方法包括:接收输入矩阵,并逐列存储输入矩阵的非零元;对输入矩阵进行重排序,得到重排序矩阵,其中,在重排序矩阵中,lu分解的填入小于第一数量,以及对角线位置的非零元的绝对值大于第一阈值;基于重排序矩阵,构造矩阵消去树,并基于矩阵消去树,构造子树和任务队列;基于多个处理器对子树和任务队列进行并行计算,并基于计算结果得到输出矩阵,其中,输出矩阵为关于输入矩阵的lu分解矩阵;基于输出矩阵,得到关于输入矩阵的求解结果。
146.以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
147.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
148.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献