一种稀疏矩阵向量乘法的异构并行计算方法

文档序号:9349725阅读:1320来源:国知局
一种稀疏矩阵向量乘法的异构并行计算方法
【技术领域】
[0001] 本发明涉及一种数据存储方法,特别涉及一种稀疏矩阵向量乘法的异构并行计算 方法。 技术背景
[0002] 疏矩阵向量乘法(Sparse Matrix-Vector Multiplication,简称 SpMV)是科学计 算和工程应用中最常用的计算之一。在很多数据挖掘应用中,经常会遇到数据极度稀疏的 情况,这种类型的数据通常表示为稀疏矩阵。在数据规模非常大的时候,利用目前流行的 CPU-GPU异构计算平台来实现SpMV异构并行计算是非常必要的。
[0003] -般而言,在异构平台上进行SpMV计算,有以下两种计算模式:
[0004] 第一种模式是CPU/GPU协同计算,CPU把数据处理好,让后把数据发送给GPU计算, GHJ计算完成之后把数据传输回CPU。整个过程虽然说是并行,实际上CPU和GPU的工作却 是串行的,在GPU进行计算时,CPU空置,把CPU的计算能力浪费掉了。
[0005] 第二种模式是CPU/GPU共同计算,CPU把数据处理好后,进行任务划分,把一部分 数据传输到GPU上,之后与GPU共同完成所有的计算任务。这种模式相比前一种模式,在 GHJ计算的同时利用到了 CPU的计算能力。即便如此,这种模式仍然有所不足,它把CPU和 GPU作为对等的计算节点,分配相似的计算任务,这忽视了 CPU和GPU体系结构上的差异,将 导致CPU和GPU都不能达到最高性能。
[0006] 在稀疏矩阵向量乘法中,稀疏矩阵存储是一个关键问题,直接影响计算性能。目 前来看,主流的稀疏矩阵存储形式有:坐标格式(Coordinate Format,简称C00),稀疏行压 缩格式(Compressed Sparse Row Format,简称 CSR),对角线格式(Diagonal Format,简称 DIA),ellpack格式(ELLPACK format,简称ELL)等存储形式,每种存储形式各有特色,各 有自己最适合的应用场景。文章 "Efficient Sparse Matrix-Vector Multiplication on CUDA"Technical Report by Nathan Bell, Michael Garland 的研究显不:在 SpMV任务中, 使用DIA和ELL稀疏矩阵存储方式能够更好地利用GPU的带宽,不过ELL存储方式的性能 受具体数据分布影响较大;在SpMV任务中C00和ELL的混合模式最在GPU上性能最好,因 为它利用到GPU处理ELL时展现出的优势,又通过结合C00来规避ELL的缺陷。而CSR是 一种最常见的系数矩阵存储形式,它是C00的进一步压缩形式,相对于别的数据存储方式 更加适合使用CPU处理。但目前所有这些存储方式,都不适合在CPU-GPU异构计算平台上 进行处理。

【发明内容】

[0007] 本发明的目的在于克服现有技术的缺点与不足,提供一种稀疏矩阵向量乘法的异 构并行计算方法。
[0008] 本发明的目的通过如下技术方案实现:一种稀疏矩阵向量乘法的异构并行计算方 法,包括以下步骤:
[0009] S1、确定稀疏矩阵的可调参数K的取值;
[0010] S2、CPU读取存储于硬盘上的稀疏矩阵数据,并根据稀疏矩阵的可调参数K申请内 存存储空间,所述内存存储空间包括ELL存储结构和CSR存储结构需要的存储空间;同时也 申请ELL存储结构需要的GPU存储空间;
[0011] S3、将稀疏矩阵数据进行压缩后存储在CPU所申请的内存存储空间中生成混合存 储结构;
[0012] S4、把ELL存储结构中存储的数据复制到GPU存储空间中进行存储;
[0013] S5、使用处理完成的存储结构进行稀疏矩阵向量乘法,CPU计算CSR存储结构对应 运算,GPU计算ELL存储结构对应运算,CPU和GPU处理结果相加得到最终结果。
[0014] 步骤S3中,在将所述稀疏矩阵压缩后存储时,首先将所有能够存储于ELL的数据 填充在ELL结构中,然后将剩余的数据按照CSR存储结构通常的存储方式,存储到CSR存储 结构中。
[0015] 步骤S3中,在对所述稀疏矩阵进行压缩时,对于针对列进行压缩的情况,所述矩 阵数据依列填充到数组上;对于针对行进行压缩的情况,所述矩阵数据依行填充到数组上。
[0016] 步骤S4中,把所述ELL存储结构中的数据复制到GPU存储空间的具体做法是将内 存中混合存储结构中ELL存储结构中的数据内容复制并传输到GPU存储空间上ELL存储结 构的对应位置上,同时,CPU释放内存中对应的数据空间。
[0017] 本发明与现有技术相比,具有如下优点和有益效果:
[0018] 1、本发明的计算方法可以使计算机在进行SpMV计算任务时,同时利用CPU和GPU 的计算能力,使CPU和GPU可以各自发挥最优的计算特性。
[0019] 2、本发明生成方法简单,可以很容易地扩展到集群环境。
【附图说明】
[0020] 图1为本发明所述的一种稀疏矩阵向量乘法的异构并行计算方法的流程图。
【具体实施方式】
[0021] 下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限 于此。
[0022] -种稀疏矩阵向量乘法的异构并行计算方法,具体包括以下步骤:
[0023] S1、确定稀疏矩阵的可调参数K的取值。
[0024] K值用于标识可以把ELL矩阵压缩到最小的数量。在Hybrid (ELL+C00/CSR)时K 值用于决定多少数据存于ELL,多少存于C00/CSR在本存储结构中,可以认为K值决定GPU 和CPU的计算量。K值越大,会使GPU计算量越大,CPU计算量越小。K值取最优的时候可 以使CPU和GPU完成计算的时间相等。K值可以简单使用平均值来确定。即对于数据依列 压缩,则用每行平均数据量作为K值;对于数据依行压缩,则用每列平均数据作为K值。
[0025] S2、CPU读取存储于硬盘上的稀疏矩阵,并根据所述可调参数K申请内存存储空 间,包括ELL存储结构和CSR存储结构需要的存储空间;同时GPU也申请ELL存储结构需要 的GPU存储空间。
[0026] S3、将矩阵数据填充在CPU所申请的内存存储空间中生成混合存储结构。
[0027] S4、把ELL存储结构中存储的数据复制到GPU所申请的GPU存储空间中进行存储。
[0028] S5、使用处理完成的存储结构进行稀疏矩阵向量乘法,CPU计算CSR存储结构对应 运算,GPU计算ELL存储结构对应运算,CPU和GPU处理结果相加得到最终结果。
[0029] 所述步
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1