CN106775598A - 一种基于gpu的压缩稀疏矩阵的对称矩阵构造方法 - Google Patents

一种基于gpu的压缩稀疏矩阵的对称矩阵构造方法 Download PDF

Info

Publication number
CN106775598A
CN106775598A CN201611140177.7A CN201611140177A CN106775598A CN 106775598 A CN106775598 A CN 106775598A CN 201611140177 A CN201611140177 A CN 201611140177A CN 106775598 A CN106775598 A CN 106775598A
Authority
CN
China
Prior art keywords
triple
array
matrix
sparse matrix
concurrently
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.)
Granted
Application number
CN201611140177.7A
Other languages
English (en)
Other versions
CN106775598B (zh
Inventor
赵汉理
季智坚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wenzhou University
Original Assignee
Wenzhou University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wenzhou University filed Critical Wenzhou University
Priority to CN201611140177.7A priority Critical patent/CN106775598B/zh
Publication of CN106775598A publication Critical patent/CN106775598A/zh
Application granted granted Critical
Publication of CN106775598B publication Critical patent/CN106775598B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Multimedia (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

本发明实施例公开了一种基于GPU的压缩稀疏矩阵的对称矩阵构造方法,包括给定基于CSR存储格式的压缩稀疏矩阵M作为输入矩阵;根据压缩稀疏矩阵M,并行地将CSR存储格式转换为三元组数组T1;并行地将三元组数组T1中每一个三元组及其对称的三元组保存到三元组数组T2并进行并行排序得到三元组数组T3;查找T3中重复数据,构造数组F标记重复存储的元素,并行地删除T3中F标记为1的重复存储的元素,得到无重复项的三元组数组T4;根据三元组数组T4,并行地将其转换成CSR存储格式作为输出矩阵。实施本发明,能有效地改善求解稀疏矩阵的对称矩阵的处理性能,使每一个步骤都具有可并行性,发挥GPU中高效并行处理能力。

Description

一种基于GPU的压缩稀疏矩阵的对称矩阵构造方法
技术领域
本发明涉及矩阵图形处理技术领域,尤其涉及一种基于GPU的压缩稀疏矩阵的对称矩阵构造方法。
背景技术
矩阵是科学计算中常用的一种工具,被广泛的应用与求解线性方程组,而稀疏矩阵是指矩阵中仅含有少量的非0元素的矩阵,是矩阵的一种特例。由于稀疏矩阵中存在大量的值为0的元素,采用常规的矩阵存储方式会在矩阵求解运算时带来大量不必要的运算。因此,为了提高稀疏矩阵的运算效率,往往会采取更有效的存储方式,比如CSR(CompressedRow Storage,压缩行存储)存储格式(参见Dongarra J.Sparse matrix storage formats[J].Templates for the Solution of Algebraic Eigenvalue Problems:A practicalguide.SIAM,2000,11:445-448等)。基于CSR存储格式的压缩稀疏矩阵包含三个数组,即采用行偏移数组、元素列号数组和元素值数组存储稀疏矩阵中的非0元素。行偏移数组的元素个数为n+1,其中n表示矩阵的阶,前n个元素存储稀疏矩阵中每一行的第一个非0元素在元素值数组中的起始偏移地址,最后一个元素存储元素值数组的元素个数;元素列号数组和元素值数组分别存储每一个非0元素的列号和元素数值。显然,基于CSR存储格式的压缩稀疏矩阵与稠密表示的矩阵一一对应。采取CSR存储格式可以有效地改善稀疏矩阵的运算并且降低所需的存储空间,但是传统的基于CPU处理的运算方式在面对几十万甚至上千万阶的稀疏线性方程组时,即使采用CSR存储格式进行压缩存储也需要大量的运算时间。
虽然Batista等人基于多核并行处理的想法提出了一种加速乘法运算的方法以及Mironowicz等人利用GPU(Graphics Processing Unit,图像处理单元)的高并行性来加速矩阵的乘法运算都有效地降低了矩阵运算所需的存储空间并提高了运算性能,但是都需要以对称稀疏矩阵作为输入矩阵,使得在处理实际问题时,一方面所需求解的矩阵规模都是很大的,另一方面往往要求输入矩阵为对称矩阵,从而对于大型非对称稀疏矩阵而言,求解其对称矩阵也是十分耗时的(参见Mironowicz P,Dziekonski A,Mrozowski M,etal.Efficient symmetric sparse matrix-vector product on a GPU[C]//InProceedings of Graphics Technology Conference.2014等)。
现有的基于稠密存储的稀疏矩阵的对称矩阵构造方法往往是先对矩阵作转置运算,再将转置得到的矩阵与原矩阵做布尔并运算,上述构造方法尽管简单方便,但是需要耗费大量的存储空间。由于GPU的显存存储空间有限,因此该方法不适用于在GPU上对大规模稀疏矩阵的对称矩阵构造。
为了进一步的优化求解稀疏矩阵的对称矩阵的处理性能,亟需一种基于GPU的压缩稀疏矩阵的对称矩阵构造方法,每一个步骤都可以在GPU中并行处理。
发明内容
本发明实施例的目的在于提供一种基于GPU的压缩稀疏矩阵的对称矩阵构造方法,能有效地改善求解稀疏矩阵的对称矩阵的处理性能,使每一个步骤都具有可并行性,发挥GPU的高效并行处理能力。
为了解决上述技术问题,本发明实施例提供了一种基于GPU的压缩稀疏矩阵的对称矩阵构造方法,所述方法包括:
步骤S101、给定一个基于CSR存储格式的压缩稀疏矩阵M作为输入矩阵;
步骤S102、根据输入的压缩稀疏矩阵M,并行地将CSR存储格式转换为一个三元组数组T1(p,q,v);其中,p表示元素行号,q表示元素列号,v表示矩阵中(p,q)位置对应的元素值;
步骤S103、根据构造的三元组数组T1,对于T1中的每一个三元组(p,q,v),并行地将(p,q,v)及其对称的三元组(q,p,v)保存到新的三元组数组T2,并对得到的新的三元组数组T2以((p<<32)|q)为排序关键字进行并行排序得到新的三元组数组T3;
步骤S104、根据排序后得到的三元组T3,查找T3中重复数据,并构造一个数组F用于标记T3中的重复存储的三元组元素,并行地删除T3中F标记为1的重复存储的元素,得到无重复项的三元组数组T4;
步骤S105、根据得到的无重复项的三元组数组T4,并行地将其转换成CSR存储格式作为输出矩阵M1。
实施本发明实施例,具有如下有益效果:
本发明利用对称关系的闭包思想来完成压缩疏矩阵的构造过程,无需对矩阵中值为0的元素进行存储和计算,有效地减少了存储空间,其中排序和删除重复元素等过程都可以直接使用基于GPU的并行函数,使得每一个步骤都具有可并行性,可以在GPU中并行处理,有效地提高了运行效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,根据这些附图获得其他的附图仍属于本发明的范畴。
图1为本发明实施例提供的基于GPU的压缩稀疏矩阵的对称矩阵构造方法的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,为本发明实施例中,提出的一种基于GPU的压缩稀疏矩阵的对称矩阵构造方法,所述方法包括:
步骤S101、给定一个基于CSR存储格式的压缩稀疏矩阵M=(RowPtr,ColInd,Val)作为输入矩阵,其中,RowPtr表示行偏移数组,ColInd表示元素列号数组,Val表示元素值数组。记n表示矩阵M的阶,则RowPtr中的元素个数为n+1,其中RowPtr中前n个元素存储的是稀疏矩阵M中每一行的第一个非0元素在元素值数组Val中的起始偏移地址,RowPtr中最后一个元素存储的是元素值数组Val的元素个数,记为m。显然,数组ColInd和Val的元素个数为m,稀疏矩阵中非0元素个数也为m。
步骤S102、根据输入的压缩稀疏矩阵M,为了方便元素的排序和运算,将CSR存储格式(RowPtr,ColInd,Val)转换为一个三元组数组,记为T1(p,q,v)。在该三元组中,p表示元素行号,q表示元素列号,v表示矩阵中(p,q)位置对应的元素值。根据CSR存储格式的RowPtr中所存储的前n个元素,对于第i个元素,RowPtr[i]表示的是矩阵中第i行的第一个非0元素在元素值数组Val中的起始偏移地址,并行地将i赋值给T1中第RowPtr[i]到第RowPtr[i+1]–1之间的元素的行号p。T1中每个元素的列号q和元素值v则可以从ColInd和Val数组中直接并行读取得到。
步骤S103、根据步骤S102构造的三元组数组T1,对于T1中的每一个三元组(p,q,v),并行地将(p,q,v)及其对称的三元组(q,p,v)保存到新的三元组数组T2中。对数组T2进行排序。为了保证排序后的三元组在行号相同时列号也有序,以长整型((p<<32))|q)作为排序关键字。运用CUDA Thrust模板库所提供的sort_by_key函数对T2进行并行的排序,得到经过排序后的三元组数组T3。
步骤S104、由于输入的压缩稀疏矩阵M中已有部分元素具备对称性,所以步骤S102所得到的三元组数组T1中存在若干对称的形如(p,q,v)和(q,p,v)的三元组。因此,在步骤S103所得到的经过排序后的三元组数组T3中会存在相应的数值相等的三元组元素。因此,需要删除这些重复存储的三元组元素。基于步骤S103方法所得到的T3中的所有元素是基于行号有序的、行号相同时则基于列号有序,因此数值相等的元素必定是彼此相邻的。构造一个数组F用于标记T3中的重复存储的三元组元素,F的元素个数与T3的元素个数相等。并行地判断T3中每个三元组元素是否与其前面的相邻元素的值相等,如果相等则将F中相应元素标记为1,不等则标记为0,对于T3中第一个元素,由于该元素没有前面的相邻元素,因此直接标记为0。运用CUDA Thrust模板库所提供的remove_if函数可以并行地删除T3中F标记为1的重复存储的元素,得到无重复项的三元组数组T4。
步骤S105、根据步骤S104中所得到的无重复项的三元组数组T4,将其转换成CSR存储格式作为输出矩阵,记为M1=(RowPtr1,ColInd1,Val1),其中,RowPtr1表示行偏移数组,ColInd1表示元素列号数组,Val1表示元素值数组。因此,ColInd1和Val1元素个数与三元组数组T4相同。RowPtr1中的元素个数与输入矩阵M中的RowPtr相同,RowPtr1中前n个元素存储的是稀疏矩阵M1中每一行的第一个非0元素在元素值数组Val1中的起始偏移地址,RowPtr1中最后一个元素存储的是元素值数组Val1的元素个数。
由于数组T3是基于行号有序的,因此T4也是基于行号有序的。因此,并行地判断T4中每个三元组元素的行号p是否与其前面的相邻元素的行号相等,如果相等则将相应元素的偏移地址保存到RowPtr1[p]。对于T4中第一个元素,由于该元素没有前面的相邻元素,因此直接将相应元素的偏移地址(此时偏移地址为0)保存到RowPtr1[0]。ColInd1和Val1可以直接从三元组数组T4中的q和v字段并行读到。
至此,新构造的基于CSR存储格式的压缩稀疏矩阵M1就是所求的压缩稀疏矩阵M的对称矩阵。
实施本发明实施例,具有如下有益效果:
本发明利用对称关系的闭包思想来完成压缩疏矩阵的构造过程,无需对矩阵中值为0的元素进行存储和计算,有效地减少了存储空间,其中排序和删除重复元素等过程都可以直接使用GPU并行函数,使得每一个步骤都具有可并行性,可以GPU中并行处理,有效地提高了运行效率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如ROM/RAM、磁盘、光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (1)

1.一种基于GPU的压缩稀疏矩阵的对称矩阵构造方法,其特征在于,所述方法包括:
步骤S101、给定一个基于CSR存储格式的压缩稀疏矩阵M作为输入矩阵;
步骤S102、根据输入的压缩稀疏矩阵M,并行地将CSR存储格式转换为一个三元组数组T1(p,q,v);其中,p表示元素行号,q表示元素列号,v表示矩阵中(p,q)位置对应的元素值;
步骤S103、根据构造的三元组数组T1,对于T1中的每一个三元组(p,q,v),并行地将(p,q,v)及其对称的三元组(q,p,v)保存到新的三元组数组T2,并对得到的新的三元组数组T2以((p<<32)|q)为排序关键字进行并行排序得到新的三元组数组T3;
步骤S104、根据排序后得到的三元组T3,查找T3中重复数据,并构造一个数组F用于标记T3中的重复存储的三元组元素,并行地删除T3中F标记为1的重复存储的元素,得到无重复项的三元组数组T4;
步骤S105、根据得到的无重复项的三元组数组T4,并行地将其转换成CSR存储格式作为输出矩阵M1。
CN201611140177.7A 2016-12-12 2016-12-12 一种基于gpu的压缩稀疏矩阵的对称矩阵构造方法 Active CN106775598B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611140177.7A CN106775598B (zh) 2016-12-12 2016-12-12 一种基于gpu的压缩稀疏矩阵的对称矩阵构造方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611140177.7A CN106775598B (zh) 2016-12-12 2016-12-12 一种基于gpu的压缩稀疏矩阵的对称矩阵构造方法

Publications (2)

Publication Number Publication Date
CN106775598A true CN106775598A (zh) 2017-05-31
CN106775598B CN106775598B (zh) 2018-02-23

Family

ID=58880301

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611140177.7A Active CN106775598B (zh) 2016-12-12 2016-12-12 一种基于gpu的压缩稀疏矩阵的对称矩阵构造方法

Country Status (1)

Country Link
CN (1) CN106775598B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108762915A (zh) * 2018-04-19 2018-11-06 上海交通大学 一种在gpu内存中缓存rdf数据的方法
CN109597691A (zh) * 2018-12-03 2019-04-09 东南大学 一种大型稀疏矩阵乘以其转置矩阵的gpu加速方法
CN110580675A (zh) * 2019-09-11 2019-12-17 北京华大九天软件有限公司 一种适用于gpu硬件的矩阵存储与计算方法
CN112261023A (zh) * 2020-10-15 2021-01-22 苏州浪潮智能科技有限公司 一种卷积神经网络的数据传输方法和装置
WO2023046001A1 (en) * 2021-09-22 2023-03-30 Huawei Technologies Co., Ltd. Method and apparatus for matrix computation acceleration

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070198621A1 (en) * 2006-02-13 2007-08-23 Iu Research & Technology Corporation Compression system and method for accelerating sparse matrix computations
CN102436438A (zh) * 2011-12-13 2012-05-02 华中科技大学 基于gpu的稀疏矩阵数据存储方法
CN103984527A (zh) * 2014-04-01 2014-08-13 杭州电子科技大学 优化稀疏矩阵向量乘提升不可压缩管流模拟效率的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070198621A1 (en) * 2006-02-13 2007-08-23 Iu Research & Technology Corporation Compression system and method for accelerating sparse matrix computations
CN102436438A (zh) * 2011-12-13 2012-05-02 华中科技大学 基于gpu的稀疏矩阵数据存储方法
CN103984527A (zh) * 2014-04-01 2014-08-13 杭州电子科技大学 优化稀疏矩阵向量乘提升不可压缩管流模拟效率的方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
王敏: "基于压缩存储的稀疏矩阵转置算法研究", 《科学技术与工程》 *
白洪涛等: "基于GPU的稀疏矩阵向量乘优化", 《计算机科学》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108762915A (zh) * 2018-04-19 2018-11-06 上海交通大学 一种在gpu内存中缓存rdf数据的方法
CN108762915B (zh) * 2018-04-19 2020-11-06 上海交通大学 一种在gpu内存中缓存rdf数据的方法
CN109597691A (zh) * 2018-12-03 2019-04-09 东南大学 一种大型稀疏矩阵乘以其转置矩阵的gpu加速方法
CN110580675A (zh) * 2019-09-11 2019-12-17 北京华大九天软件有限公司 一种适用于gpu硬件的矩阵存储与计算方法
CN112261023A (zh) * 2020-10-15 2021-01-22 苏州浪潮智能科技有限公司 一种卷积神经网络的数据传输方法和装置
WO2023046001A1 (en) * 2021-09-22 2023-03-30 Huawei Technologies Co., Ltd. Method and apparatus for matrix computation acceleration

Also Published As

Publication number Publication date
CN106775598B (zh) 2018-02-23

Similar Documents

Publication Publication Date Title
CN106775598B (zh) 一种基于gpu的压缩稀疏矩阵的对称矩阵构造方法
Gallo et al. Shortest path algorithms
Thabtah et al. MCAR: multi-class classification based on association rule
Arge et al. A general lower bound on the I/O-complexity of comparison-based algorithms
CN106778079A (zh) 一种基于MapReduce的DNA序列k‑mer频次统计方法
CN105739951A (zh) 一种基于gpu的l1最小化问题快速求解方法
JP2023543004A (ja) ヒルベルト曲線に基づくr木インデックスのマージ更新方法、装置及び媒体
Yong et al. Efficient graph summarization using weighted lsh at billion-scale
Dhaliwal et al. Practical efficient string mining
Li et al. The power of the queue
Pantaleoni A massively parallel algorithm for constructing the BWT of large string sets
Katajainen et al. Sorting multisets stably in minimum space
Jayalakshmi et al. Frequent itemset generation using double hashing technique
Wang et al. Basic problems solving for two-dimensional discrete 3× 4 order hidden markov model
Al-Fayoumi Enhanced Associative classification based on incremental mining Algorithm (E-ACIM)
Chen et al. Parallel algorithms for partitioning sorted sets and related problems
CN117312633B (zh) 基于带hbm的fpga的动态极大团枚举装置及方法
CN117493386B (zh) 数据库访问方法及装置、存储介质和电子设备
Yen et al. Mining sequential patterns with item constraints
Wang et al. FPGA-Based High-Performance Data Compression Deep Neural Network Accelerator
KR101153966B1 (ko) 고차원 데이터의 색인/검색 시스템 및 그 방법
Waters et al. Isosurface extraction using fixed-sized buckets
Zhou et al. Improved pattern tree for incremental frequent-pattern mining
Nardelli et al. Efficient Searching for Multi—dimensional Data Made Simple
Lin et al. Accelerate Inference of CNN Models on CPU via Column Combining Based on Simulated Annealing

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
GR01 Patent grant
GR01 Patent grant