CN106775598A - 一种基于gpu的压缩稀疏矩阵的对称矩阵构造方法 - Google Patents
一种基于gpu的压缩稀疏矩阵的对称矩阵构造方法 Download PDFInfo
- 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
Links
- 239000011159 matrix material Substances 0.000 title claims abstract description 76
- 238000000034 method Methods 0.000 title claims abstract description 24
- 230000006835 compression Effects 0.000 title claims abstract description 22
- 238000007906 compression Methods 0.000 title claims abstract description 22
- 238000010276 construction Methods 0.000 claims abstract description 8
- 230000008569 process Effects 0.000 abstract description 7
- 238000006073 displacement reaction Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 2
- 108091081062 Repeated sequence (DNA) Proteins 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 230000017105 transposition Effects 0.000 description 2
- 239000013598 vector Substances 0.000 description 2
- 230000006872 improvement Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000005457 optimization 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image 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的压缩稀疏矩阵的对称矩阵构造方法。
背景技术
矩阵是科学计算中常用的一种工具,被广泛的应用与求解线性方程组,而稀疏矩阵是指矩阵中仅含有少量的非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。
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)
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)
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 | 杭州电子科技大学 | 优化稀疏矩阵向量乘提升不可压缩管流模拟效率的方法 |
-
2016
- 2016-12-12 CN CN201611140177.7A patent/CN106775598B/zh active Active
Patent Citations (3)
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)
Title |
---|
王敏: "基于压缩存储的稀疏矩阵转置算法研究", 《科学技术与工程》 * |
白洪涛等: "基于GPU的稀疏矩阵向量乘优化", 《计算机科学》 * |
Cited By (6)
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 |