一种对角矩阵SPMV在GPU上的实现方法、电子设备及介质技术

技术编号:38505177 阅读:19 留言:0更新日期:2023-08-19 16:52
本发明专利技术属于船舶海上航行模拟领域,具体涉及一种对角矩阵SPMV在GPU上的实现方法、电子设备及介质。输入船舶海上航行模拟矩阵的数据文件,读取其数据并转化为COO存储方法;基于固定阈值的矩阵划分策略,将矩阵划分为若干不相交的行段,对行段信息进行有效存储;利用矩阵重构策略,对划分的行段进行重新排序归并,将归并结果进行压缩存储;将压缩存储的相关数据数组从主机端传递到设备端,按照一个线程块处理一个子块,一个线程处理一行的方式进行GPU并行SPMV运算;最后将线程运算结果从设备端传输到主机端,在主机端创建结果数组对运算结果进行整合存储。本发明专利技术用以缩短船舶海上航行模拟中GPU并行SPMV运算的时间,提高运算的效率和性能。和性能。和性能。

【技术实现步骤摘要】
一种对角矩阵SPMV在GPU上的实现方法、电子设备及介质


[0001]本专利技术属于船舶海上航行模拟领域,具体涉及一种对角矩阵SPMV在GPU上的实现方法、电子设备及介质。

技术介绍

[0002]稀疏矩阵向量乘法(Sparse matrix

vector multiplication,SPMV)是科学计算和工程实践中的核心问题之一,被广泛应用于工程应用领域中,构成了许多领域的重要组成部分,包括流体力学,生物信息学,结构力学、空气动力学和天体物理学等。它代表了解决大型线性系统和特征值问题的许多迭代方法中的主要成本,在利用迭代法求解线性系统的过程中,SPMV往往占据了高达60%~70%的计算量。因此,高效计算SPMV是提升科学计算的核心重要环节,其工作方式的优化对于科学计算的发展至关重要。
[0003]由于船舶海上航行模拟领域中数据网格的复杂性和计算域边界的不规则性,得到的稀疏对角矩阵具有多样性和高稀疏性。这种情况下,传统的存储和计算方法会浪费大量的存储空间和计算资源,影响算法的计算效率和性能。因此,针对这种情况,设计高效的稀疏矩阵存储格式和计算方法是非常重要的。可以有效提高并行SPMV运算的效率和性能。
[0004]稀疏对角矩阵是一类特殊的稀疏矩阵,其非零元素按照对角线的形式密集排列。针对其特殊的结构,Bell和Garland首次将DIA(Diagonal)方法应用到了GPU平台上,并通过实验证明了DIA更适合于稀疏对角矩阵。DIA按照矩阵中的对角线来进行存储,一个对角线利用一个偏移量进行索引,相比于其他格式,不仅能够减少列索引的存储,同时具有良好的时间空间局部性和访问向量的连续性。但是当矩阵中存在散点和长断行时,DIA存储方法会出现零填充现象,在运算时会造成空间和计算资源的浪费,最终导致空间和时间性能的下降。此外,一些基于DIA改进的分块存储方法还可能存在块间负载不平衡的问题。负载不平衡会影响并行SPMV的性能,可能会导致部分计算资源空闲,降低GPU的利用率。因此,负载均衡策略的研究也是船舶海上航行模拟和高性能计算领域的一个重要方向。
[0005]近年来,针对稀疏对角矩阵的存储和并行SPMV运算出现了很多优化方法。HDIA方法通过将原始矩阵分成大小相等的行组,并将行组作为独立矩阵以DIA方法存储,减少了零元素的填充和缓存未命中问题。但是,可能出现块间元素数量差异过大的现象,导致GPU并行时线程块间计算量的不平衡。混合存储方法HDC(Hybrid of DIA and CSR)通过设定分割阈值,将矩阵分为对角区域和离散区域,并分别采用DIA方法和CSR方法进行存储,有效的减少了矩阵存储时的零填充。但是,并行SPMV运算性能受分割阈值影响较大,难以确定最佳阈值。DIA

Adaptive方法通过将矩阵分为三种类型,并针对每种类型自适应的选择DIA、BRCSD_Ⅰ(Diagonal Comp

ressed Storage based on Row

Blocks_Ⅰ)、BRCSD_Ⅱ中的一种对矩阵进行存储。其中BRCSD_Ⅰ方法通过片点对矩阵进行分块,BRCSD_Ⅱ方法将矩阵分为大小相等的块,解决了稀疏对角矩阵存在长偏移、散点和长断行时的零填充问题。然而,由于块大小和块间元素个数的差异性,会出现负载不平衡的问题。因此,针对稀疏对角矩阵的主流存储方法虽然能够在一定程度上提升并行SPMV效率,但仍然会出现零填充过度和GPU线
程块间负载不平衡的问题。

技术实现思路

[0006]本专利技术提供一种对角矩阵SPMV在GPU上的实现方法,用以提高船舶海上航行模拟的SPMV并行计算效率和性能,平衡GPU线程块间的计算负载。
[0007]本专利技术提供一种电子设备。
[0008]本专利技术提供一种非临时性计算机可读存储介质。
[0009]本专利技术通过以下技术方案实现:
[0010]一种对角矩阵SPMV在GPU上的实现方法,所述实现方法包括以下步骤:
[0011]步骤1:输入船舶海上航行模拟矩阵数据文件,读取其数据并按照COO方法进行存储;
[0012]步骤2:基于固定阈值的矩阵划分策略,将步骤1存储的矩阵划分为若干行段,并分别将其进行存储;
[0013]步骤3:利用步骤2划分后的行段,结合基于迭代归并策略的矩阵重构策略,对矩阵行段进行重新排序组合,并将重构结果进行存储;
[0014]步骤4:将步骤3获得的重构结果相关数据分别从主机端传递到设备端,并按照每个线程处理一行的方式进行GPU并行SPMV操作;
[0015]步骤5:将步骤4中的计算结果从设备端传递到主机端,并在主机端进行结果整合,提高船舶海上航行的模拟效率。
[0016]一种基于迭代归并策略的对角矩阵SPMV在GPU上的实现方法,所述步骤1具体包括以下步骤:
[0017]步骤1.1:在船舶海上航行模拟的稀疏矩阵数据集中获取矩阵文件,并将其作为输入矩阵;
[0018]步骤1.2:读取步骤1.1矩阵文件中的行、列以及非零元的参数值;
[0019]步骤1.3:设置COO格式中行、列、非零元对应的的动态vector数组row、col、data,将阵数据读入到数组当中。
[0020]一种基于迭代归并策略的对角矩阵SPMV在GPU上的实现方法,所述步骤2具体包括以下步骤:
[0021]步骤2.1:结合步骤1中基于固定阈值矩阵划分策略,根据阈值和矩阵的维数,获得矩阵划分的行段总数;
[0022]步骤2.2:基于步骤1中转化存储的矩阵相关数组,获得行段中每个非零元所属的对角线偏移量offset
i
,如公式(1)所示;
[0023]offset
i
=col
i

row
i
ꢀꢀꢀ
(1)
[0024]步骤2.3:将每个非零元对角线偏移量offset
i
存入数组off,对数组进行排序并删除其中重复元素,获得每个行段的偏移量数组;
[0025]步骤2.4:根据偏移量数组,获取每个行段中对角线的个数,进而获得每个行段参与运算的操作数个数;
[0026]步骤2.5:基于步骤1中转化存储的矩阵相关数组,将每个行段中的非零元按照对角线进行存储。
[0027]一种基于迭代归并策略的对角矩阵SPMV在GPU上的实现方法,所述步骤3具体包括以下步骤:
[0028]步骤3.1:根据步骤2获得的每个行段操作数个数,按照从大到小的顺序对行段进行排序,排序后存入数组P,并重复执行步骤3.2和步骤3.3;
[0029]步骤3.2:根据步骤3.1获得的数组P,取出P的最小值和最大值,判断最大值是否大于最小值的二倍,若大于,则执行步骤3.3。否则,结束循环,执行步骤3.4;
[0030]步骤3.3:取出P的次小值,判断最大值是否大于次小值的二倍,若大于,则将最小值本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种对角矩阵SPMV在GPU上的实现方法,其特征在于,所述实现方法包括以下步骤:步骤1:输入船舶海上航行模拟矩阵数据文件,读取其数据并按照COO方法进行存储;步骤2:基于固定阈值的矩阵划分策略,将步骤1存储的矩阵划分为若干行段,并分别将其进行存储;步骤3:利用步骤2划分后的行段,结合基于迭代归并策略的矩阵重构策略,对矩阵行段进行重新排序组合,并将重构结果进行存储;步骤4:将步骤3获得的重构结果相关数据分别从主机端传递到设备端,并按照每个线程处理一行的方式进行GPU并行SPMV操作;步骤5:将步骤4中的计算结果从设备端传递到主机端,并在主机端进行结果整合,提高船舶海上航行的模拟效率。2.根据权利要求1所述一种对角矩阵SPMV在GPU上的实现方法,其特征在于,所述步骤1具体包括以下步骤:步骤1.1:在船舶海上航行模拟的稀疏矩阵数据集中获取矩阵文件,并将其作为输入矩阵;步骤1.2:读取步骤1.1矩阵文件中的行、列以及非零元的参数值;步骤1.3:设置COO格式中行、列、非零元对应的的动态vector数组row、col、data,将阵数据读入到数组当中。3.根据权利要求1所述一种对角矩阵SPMV在GPU上的实现方法,其特征在于,所述步骤2具体包括以下步骤:步骤2.1:结合步骤1中基于固定阈值矩阵划分策略,根据阈值和矩阵的维数,获得矩阵划分的行段总数;步骤2.2:基于步骤1中转化存储的矩阵相关数组,获得行段中每个非零元所属的对角线偏移量offset
i
,如公式(1)所示;offset
i
=col
i

row
i
ꢀꢀ
(1)步骤2.3:将每个非零元对角线偏移量offset
i
存入数组off,对数组进行排序并删除其中重复元素,获得每个行段的偏移量数组;步骤2.4:根据偏移量数组,获取每个行段中对角线的个数,进而获得每个行段参与运算的操作数个数;步骤2.5:基于步骤1中转化存储的矩阵相关数组,将每个行段中的非零元按照对角线进行存储。4.根据权利要求1所述一种对角矩阵SPMV在GPU上的实现方法,其特征在于,所述步骤3具体包括以下步骤:步骤3.1:根据步骤2获得的每个行段操作数个数,按照从大到小的顺序对行段进行排序,排序后存入数组P,并重复执行步骤3.2和步骤3.3;步骤3.2:根据步骤3.1获得的数组P,取出P的最小值和最大值,判断最大值是否大于最小值的二倍,若大于,则执行步骤3.3。否则,结束循环,执行步骤3.4;步骤3.3:取出P的次小值...

【专利技术属性】
技术研发人员:王宇华何俊飞徐悦竹张宇琪黄建兴刘世友
申请(专利权)人:哈尔滨工程大学
类型:发明
国别省市:

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

1