CN102436438B - 基于gpu的稀疏矩阵数据存储方法 - Google Patents
基于gpu的稀疏矩阵数据存储方法 Download PDFInfo
- Publication number
- CN102436438B CN102436438B CN201110415911.7A CN201110415911A CN102436438B CN 102436438 B CN102436438 B CN 102436438B CN 201110415911 A CN201110415911 A CN 201110415911A CN 102436438 B CN102436438 B CN 102436438B
- Authority
- CN
- China
- Prior art keywords
- line
- row
- gpu
- section
- array
- 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.)
- Expired - Fee Related
Links
Landscapes
- Complex Calculations (AREA)
Abstract
本发明公开了一种基于GPU的稀疏矩阵数据存储方法,该方法包括:1)对行长度数组length[]按照升序排序;2)按每行非零元素的个数将数组length[]分为[0,8),[8,16),[16,32),[32,+∞)四段,每段分别合并32、16、8、4行;3)对各数据段中的行进行补零操作,对各数据段进行补行操作,所补行的元素全为零;4)产生SC-CSR格式的三个一维数组cval[]、ccol_ind[]、crow_ptr[],本发明的方法中,分段处理降低了每行的行长度变化幅度,从而减少了线程束、线程块间的负载不平衡,相邻行交错合并避免了行非零元素少于32时的线程束计算资源浪费,提高了CUDA显存联合访问的效率,并减少了计算内核并行归约的步骤,从而显著提高了稀疏矩阵向量乘的计算性能。
Description
技术领域
本发明涉及一种数据存储方法,更具体地说,本发明涉及一种基于GPU的稀疏矩阵数据存储方法。
背景技术
在信号处理、图像处理等科学计算和实际应用中,经常会出现大型的稀疏矩阵。于是,高效的稀疏矩阵计算成为了一个比较重要且具挑战性的研究课题。稀疏矩阵向量乘(Sparse Matrix-Vector Multiplication,简称SpMV)作为稀疏矩阵计算中的主要运算操作,由于其存储访问模式极为不规则、以及运算过程中受内存带宽的限制,导致其实际运行性能低下,严重影响了稀疏矩阵计算及相关应用的效率。
稀疏行压缩格式(Compressed Sparse Row,简称CSR)是应用最广泛的稀疏矩阵存储格式。基于CSR格式、利用计算统一设备架构(ComputeUnified Device Architecture,简称CUDA)加速的SpMV有两种实现方法:(1)标量内核方法:使用一个线程来处理一行,由于每行长度的不同,造成负载不平衡问题非常严重,且GPU显存无法联合访问,访存效率低下;(2)向量内核方法:使用一个线程束来处理一行,从一定程度上减轻了负载不平衡问题,线程束内可联合访问,效率有所提高;但负载不平衡问题依然严重,访存效率低下。
发明内容
有鉴于此,本发明的目的在于提供一种基于GPU的稀疏矩阵数据存储方法,采用分段行合并的存储策略,其能够解决CUDA架构上SpMV方法导致的负载不平衡和计算资源浪费的问题,从而提高SpMV的计算性能。
一种基于GPU的稀疏矩阵数据存储方法,包括如下步骤:CPU读取矩阵文件,并将其转化为稀疏行压缩格式;计算稀疏行压缩格式中每行非零元素的个数,并将其存储于数组length[]中;对数组length[]按照升序排序;根据数组length[]中每行非零元素的个数将数组length[]分为[0,8),[8,16),[16,32),[32,+∞)四段;设置计数器i=0,并初始化数组c[4]={32,16,8,4};判断第i段包含的行数除以c[i]是否大于GPU满负荷运行的阈值;若第i段包含的行数除以c[i]大于GPU满负荷运行的阈值,则将第i段作为一个数据段;对数据段中每c[i]行执行补零操作,使其每行的长度与c[i]行中非零元素最多的一行的长度相同;判断数据段中行的总数目是否是c[i]的最小整数倍;若数据段中行的总数目是c[i]的最小整数倍,则按照从上到下、从左到右的顺序将每c[i]行中的元素合并成一行,并将其存储于数组cval[]中;创建数组ccol_ind[]和crow_ptr[],数组cval[]中非零元素在数组ccol_ind[]中的值为其在稀疏行压缩格式中的列坐标,数组cval[]中零元素在数组ccol_ind[]中的值为-1,数组crow_ptr[]中的值为数组cval[]中行的首个元素在数组cval[]中的指针;设置计数器i=i+1;判断i是否等于4;若i等于4,则CPU保存数组cval[]、ccol_ind[]和crow_ptr[]。
本发明的稀疏矩阵数据存储方法,还包括步骤:若第i段包含的行数除以c[i]不大于GPU满负荷运行的阈值,则判断i+1是否等于4,若i+4等于4,则转入将第i段作为一个数据段的步骤。
本发明的稀疏矩阵数据存储方法,还包括步骤:若i+4不等于4,则将第i段与第i+1段中的行数进行累加,设置计数器i=i+1,并返回判断第i段包含的行数除以c[i]是否大于GPU满负荷运行的阈值的步骤。
本发明的稀疏矩阵数据存储方法,还包括步骤:若数据段中行的总数目不是c[i]的最小整数倍,则对数据段执行补行操作,以使补行后的数据段中行的总数目为c[i]的最小整数倍,所补行的元素全为零,且其长度与c[i]行中非零元素最多的一行的长度相同。
本发明的稀疏矩阵数据存储方法,还包括步骤:若i不等于4,则返回判断第i段包含的行数除以c[i]是否大于GPU满负荷运行的阈值的步骤。
GPU满负荷运行的阈值为Nw=0.5·NSM·Nb·(Sb/Sw),其中Nw为阈值,NSM为GPU的多处理器数目,Nb为GPU的活动线程块的数目,Sb为GPU的线程块大小,Sw为GPU的线程束大小。
与现有技术相比,本发明的优点在于:
(1)减少了新的行长度变化幅度,达到线程束间的负载平衡。
(2)合并之后的稀疏矩阵数据存储格式,符合GPU并行归约,能减少内核的归约步骤。
(3)行长度基本满足32个非零元素的要求,避免了线程束内的线程空转。
附图说明
图1为本发明基于GPU的稀疏矩阵数据存储方法的流程图。
具体实施方式
下面结合附图和实例对本发明作进一步详细的说明。
如图1所示,本发明的数据存储格式SC-CSR产生方法是:
(1)CPU读取矩阵文件,并将其转化为稀疏行压缩格式;
(2)计算所述稀疏行压缩格式中每行非零元素的个数,并将其存储于数组length[]中;
(3)对所述数组length[]按照升序排序;
(4)根据所述数组length[]中每行非零元素的个数将所述数组length[]分为[0,8),[8,16),[16,32),[32,+∞)四段;
(5)设置计数器i=0,并初始化数组c[4]={32,16,8,4};
(6)判断第i段包含的行数除以c[i]是否大于GPU满负荷运行的阈值,如果不是,则转入步骤(7),如果是,则转入步骤(10);
(7)判断i+1是否等于4,如果是,则转入步骤(10),如果不是,则转入步骤8;
(8)将第i段与第i+1段中的行数进行累加;
(9)设置计数器i=i+1,然后返回步骤(6);
(10)将第i段作为一个数据段;
(11)对所述数据段中每c[i]行执行补零操作,使其每行的长度与c[i]行中非零元素最多的一行的长度相同;
(12)判断所述数据段中行的总数目是否是c[i]的最小整数倍,如果不是,则转入步骤(13),如果是,则转入步骤(14);
(13)对所述数据段执行补行操作,以使补行后的所述数据段中行的总数目为c[i]的最小整数倍,所补行的元素全为零,且其长度与c[i]行中非零元素最多的一行的长度相同;
(14)按照从上到下、从左到右的顺序将每c[i]行中的元素合并成一行,并将其存储于数组cval[]中;
(15)创建数组ccol_ind[]和crow_ptr[],所述数组cval[]中非零元素在所述数组ccol_ind[]中的值为其在所述稀疏行压缩格式中的列坐标,所述数组cval[]中零元素在所述数组ccol_ind[]中的值为-1,所述数组crow_ptr[]中的值为所述数组cval[]中行的首个元素在所述数组cval[]中的指针;
(16)设置计数器i=i+1;
(17)判断i是否等于4,如果不是,则返回步骤(6),如果是,则转入步骤(18);
(18)CPU保存数组cval[]、ccol_ind[]和crow_ptr[]。
在步骤(6)中,GPU满负荷运行的阈值为Nw=0.5·NSM·Nb·(Sb/Sw),其中Nw为阈值,NSM为GPU的多处理器数目,Nb为GPU的活动线程块的数目,Sb为GPU的线程块大小,Sw为GPU的线程束大小。示例
为了清楚的阐述本发明的原理,以下举例说明本发明的实现过程。
(1)CPU首先读取矩阵文件如下:
然后将其该矩阵文件转化为稀疏行压缩格式如下:
Val[]={3 8 6 2;5 8;2 5 7 8 1 3 2 4 8 7 9 1 10 11 9 4;1 8 2 7 6 3 9 14 1;5 8 9 7;8 9 8 2;1 7 15 7 15 1;2 2 22 4;7 2 3 7 2;1 5 1;8 1;7 3;6 8 4 4 2 1 11 7 6 9 32 1 2 1 3;7;8 8;7 15;2 9;3}
Col_ind[]={0 2 8 12;1 2;0 1 2 3 4 5 6 7 8 9 10 11 13 14 15 16;0 2 4 6 7 11 12 13 16;3 6 7 8;2 3 10 12;0 1 4 9 12 17;1 3 911 13;1 2 6 9 10;3 11 12;6 7;2 6;1 2 3 4 5 6 7 8 10 11 1213 14 15 16 17;1;2 1 0;1 4;0 1 0;1}
Row_ptr[]={0 4 6 22 31 35 39 45 50 55 58 60 62 78 79 81 83 85 86}
(2)计算稀疏行压缩格式中每行非零元素的个数,并将其存储于数组length[]中;
Length[]={4 2 16 9 4 4 6 5 5 3 2 2 16 1 2 2 2 1}
(3)对数组length[]按照升序排序;
Length[]={1 1 2 2 2 2 2 2 3 4 4 4 5 5 6 9 16 16}
(4)根据数组length[]中每行非零元素的个数将数组length[]分为[0,8),[8,16),[16,32),[32,+∞)四段;
(5)设置计数器i=0,并初始化数组c[4]={32,16,8,4};
(6)判断第i段包含的行数除以c[i]是否大于或等于GPU满负荷运行的阈值,假设GPU满负荷运行的阈值Nw为1,现第0段包含的行数15除以32小于1。
(7)判断i+1是否等于4,现i=0,i+1=1不等于4。
(8)将第i段与第i+1段中的行数进行累加,现i=0,将第0段与第1段中的行数进行累加,即第1段包含的总行数为16。
(9)设置计数器i=i+1,即i=1;
(10)判断第i段包含的行数除以c[i]是否大于或等于GPU满负荷运行的阈值,现第1段包含的行数16除以16等于1。
(11)将第1段作为一个数据段;
(12)对数据段中每c[i]行执行补零操作,使其每行的长度与c[i]行中非零元素最多的一行的长度相同,即第1段包含的16行中,前15行执行补零操作,使其每行的长度与第15行的长度相同;
(13)判断数据段中行的总数目是否是c[i]的最小整数倍,现第1段中包含16行,是16的最小整数倍;
(14)按照从上到下、从左到右的顺序将每c[i]行中的元素合并成一行,并将其存储于数组cval[]中;
Cval[]={7 3 5 8 7 8 7 2 1 3 5 8 2 7 1 1
0 0 8 1 3 8 15 9 5 8 8 9 2 2 7 8 0 0 0
0 0 0 0 0 1 6 9 8 2 3 15 2 0 0 0 0 0 0
0 0 0 2 7 2 2 7 7 7 0 0 0 0 0 0 0 0 0
0 0 0 4 2 15 6 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 1}
(15)创建数组ccol_ind[]和crow_ptr[],数组cval[]中非零元素在数组ccol_ind[]中的值为其在稀疏行压缩格式中的列坐标,数组cval[]中零元素在数组ccol_ind[]中的值为-1,数组crow_ptr[]中的值为数组cval[]中行的首个元素在数组cval[]中的指针;
Cval[]={7 3 5 8 7 8 7 2 1 3 5 8 2 7 1 1
0 0 8 1 8 15 9 5 8 8 9 2 2 7 8 0 0 0 0
0 0 0 0 1 6 9 2 3 15 2 0 0 0 0 0 0 0 0
0 2 7 2 2 7 7 7 0 0 0 0 0 0 0 0 0 0 0 0
4 2 15 6 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 14 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 }
Ccol_ind[]={1 1 1 6 2 2 1 0 3 0 1 2 2 1 -1 -1
0 0 2 7 6 10 4 10 11 2 6 3 3 2 1 1 -1 -1 -1 -1
-1 -1 -1 -1 12 8 7 10 9 6 4 4 -1 -1 -1 -1 -1 -1 -1 -1
-1 12 8 12 11 9 9 6 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
13 10 12 7 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 17 11
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 12 -1 -1 -1 -1
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 13 -1 -1 -1 -1 -1 -1 -1 -1
-1 -1 -1 -1 -1 -1 -1 16}
Row_ptr[]={0 144}
(16)设置计数器i=i+1,即i=2;
(17)判断i是否等于4,现i=2不等于4;
(18)判断第i段包含的行数除以c[i]是否大于或等于GPU满负荷运行的阈值,现第2段包含的行数2除以8小于1;
(19)判断i+1是否等于4,现i=2,i+1=3不等于4;
(20)将第i段与第i+1段中的行数进行累加,现i=2,将第2段与第3段中的行数进行累加,即第2段包含的总行数为2;
(21)设置计数器i=i+1,即i=3;
(22)判断第i段包含的行数除以c[i]是否大于或等于GPU满负荷运行的阈值,现第3段包含的行数2除以4小于1;
(23)判断i+1是否等于4,现i=3,i+1=4;
(24)将第3段作为一个数据段;
(25)对数据段中每c[i]行执行补零操作,使其每行的长度与c[i]行中非零元素最多的一行的长度相同,即第3段包含的2行中,第0行执行补零操作,使其长度与第1行的长度相同;
2 | 5 | 7 | 8 | 1 | 3 | 2 | 4 | 8 | 7 | 9 | 1 | 10 | 11 | 9 | 4 |
6 | 8 | 4 | 4 | 2 | 1 | 11 | 7 | 6 | 9 | 3 | 2 | 1 | 2 | 1 | 3 |
(26)判断数据段中行的总数目是否是c[i]的最小整数倍,现第3段中包含2行,不是4的最小整数倍;
(27)对第3数据段执行补行操作,以使补行后的数据段中行的总数目为c[i]的最小整数倍,所补行的元素全为零,且其长度与c[i]行中非零元素最多的一行的长度相同;
(28)按照从上到下、从左到右的顺序将每c[i]行中的元素合并成一行,并将其存储于数组cval[]中;
(29)创建数组ccol_ind[]和crow_ptr[],数组cval[]中非零元素在数组ccol_ind[]中的值为其在稀疏行压缩格式中的列坐标,数组cval[]中零元素在数组ccol_ind[]中的值为-1,数组crow_ptr[]中的值为数组cval[]中行的首个元素在数组cval[]中的指针;
Row_ptr[]={0 144 208}
(30)设置计数器i=i+1,即i=4。
(31)判断i是否等于4,此时i等于4。
(32)CPU保存数组cval[]、ccol_ind[]和crow_ptr[].
实验结果
为了验证本发明的可行性和有效性,在表1的实验配置环境下执行程序,对本发明进行测试。
表1实验配置环境
实验结果如表2所示。
表2实验结果
实验结果表明,CUDA架构下,相对于基于稀疏行压缩格式向量内核的SpMV,基于SC-CSR的SpMV最高能达到8.5倍的加速,可见本发明具有显著的性能提升效果。
Claims (2)
1.一种基于GPU的稀疏矩阵数据存储方法,包括以下步骤:
CPU读取原始矩阵文件,并将其转化为稀疏行压缩格式;
计算所述稀疏行压缩格式中每行非零元素的个数,并将其存储于数组length[]中;
对所述数组length[]按照升序排序;
根据所述数组length[]中每行非零元素的个数将所述数组length[]分为[0,8),[8,16),[16,32),[32,+∞)四段;
设置计数器i=0,并初始化数组c[4]={32,16,8,4};
判断第i段包含的行数除以c[i]是否大于GPU满负荷运行的阈值;
若第i段包含的行数除以c[i]大于GPU满负荷运行的阈值,则将第i段作为一个数据段;
对所述数据段中每c[i]行执行补零操作,使其每行的长度与c[i]行中非零元素最多的一行的长度相同;
判断所述数据段中行的总数目是否是c[i]的最小整数倍;
若所述数据段中行的总数目不是c[i]的最小整数倍,则对所述数据段执行补行操作,以使补行后的所述数据段中行的总数目为c[i]的最小整数倍,所补行的元素全为零,且其长度与c[i]行中非零元素最多的一行的长度相同;
若所述数据段中行的总数目是c[i]的最小整数倍,则按照从上到下、从左到右的顺序将每c[i]行中的元素合并成一行,并将其存储于数组cval[]中;
创建数组ccol_ind[]和crow_ptr[],所述数组cval[]中非零元素在所述数组ccol_ind[]中的值为其在所述稀疏行压缩格式中的列坐标,所述数组cval[]中零元素在所述数组ccol_ind[]中的值为-1,所述数组crow_ptr[]中的值为所述数组cval[]中行的首个元素在所述数组cval[]中的序号;
设置计数器i=i+1;
判断i是否等于4;
若i不等于4,则返回所述判断第i段包含的行数除以c[i]是否大于GPU满负荷运行的阈值的步骤;
若i等于4,则CPU保存数组cval[]、ccol_ind[]和crow_ptr[];
若第i段包含的行数除以c[i]不大于GPU满负荷运行的阈值,则判断i+1是否等于4;
若i+4等于4,则转入所述将第i段作为一个数据段的步骤;若i+4不等于4,则将第i段与第i+1段中的行数进行累加;
设置计数器i=i+1,并返回所述判断第i段包含的行数除以c[i]是否大于GPU满负荷运行的阈值的步骤;
若i+4不等于4,则将第i段与第i+1段中的行数进行累加;
设置计数器i=i+1,并返回所述判断第i段包含的行数除以c[i]是否大于GPU满负荷运行的阈值的步骤。
2.根据权利要求1所述的稀疏矩阵数据存储方法,其特征在于:
所述GPU满负荷运行的阈值为Nw=0.5·NSM·Nb·(Sb/Sw),其中Nw为阈值,NSM为GPU的多处理器数目,Nb为GPU的活动线程块的数目,Sb为GPU的线程块大小,Sw为GPU的线程束大小。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110415911.7A CN102436438B (zh) | 2011-12-13 | 2011-12-13 | 基于gpu的稀疏矩阵数据存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110415911.7A CN102436438B (zh) | 2011-12-13 | 2011-12-13 | 基于gpu的稀疏矩阵数据存储方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102436438A CN102436438A (zh) | 2012-05-02 |
CN102436438B true CN102436438B (zh) | 2015-03-04 |
Family
ID=45984507
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110415911.7A Expired - Fee Related CN102436438B (zh) | 2011-12-13 | 2011-12-13 | 基于gpu的稀疏矩阵数据存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102436438B (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103427844B (zh) * | 2013-07-26 | 2016-03-02 | 华中科技大学 | 一种基于gpu和cpu混合平台的高速无损数据压缩方法 |
CN105068787A (zh) * | 2015-08-28 | 2015-11-18 | 华南理工大学 | 一种稀疏矩阵向量乘法的异构并行计算方法 |
CN105786760B (zh) * | 2016-03-02 | 2017-02-22 | 中国地质大学(武汉) | 一种基于稀疏块状矩阵压缩存储结构的预条件共轭梯度区域网平差方法 |
CN106407158B (zh) * | 2016-09-12 | 2019-01-29 | 东南大学 | 一种gpu加速的批处理同构稀疏矩阵乘满向量的处理方法 |
CN106775598B (zh) * | 2016-12-12 | 2018-02-23 | 温州大学 | 一种基于gpu的压缩稀疏矩阵的对称矩阵构造方法 |
US10346944B2 (en) * | 2017-04-09 | 2019-07-09 | Intel Corporation | Machine learning sparse computation mechanism |
CN107944555B (zh) * | 2017-12-07 | 2021-09-17 | 广州方硅信息技术有限公司 | 神经网络压缩和加速的方法、存储设备和终端 |
CN109901985B (zh) * | 2017-12-08 | 2022-09-30 | 北京京东尚科信息技术有限公司 | 分布式测试装置及方法、存储介质和电子设备 |
CN108830499B (zh) * | 2018-06-26 | 2021-10-15 | 广东石油化工学院 | 一种非侵入式负荷分解方法及系统 |
WO2020029018A1 (zh) * | 2018-08-06 | 2020-02-13 | 华为技术有限公司 | 矩阵的处理方法、装置及逻辑电路 |
CN109726314B (zh) * | 2019-01-03 | 2020-09-01 | 中国人民解放军国防科技大学 | 基于位图的稀疏矩阵压缩存储方法 |
CN110489428B (zh) * | 2019-08-26 | 2020-05-22 | 上海燧原智能科技有限公司 | 多维稀疏矩阵压缩方法、解压缩方法、装置、设备及介质 |
CN111240744B (zh) * | 2020-01-03 | 2022-03-22 | 支付宝(杭州)信息技术有限公司 | 一种提高涉及稀疏矩阵并行计算效率的方法和系统 |
CN112364294B (zh) * | 2020-10-27 | 2022-12-27 | 中国核动力研究设计院 | 堆芯数值计算矩阵的自动转换方法、装置、设备及介质 |
CN112953549B (zh) * | 2021-02-08 | 2022-03-29 | 中国科学院计算机网络信息中心 | 一种稀疏矩阵的存储处理方法及装置 |
CN113506589B (zh) * | 2021-06-28 | 2022-04-26 | 华中科技大学 | 一种稀疏矩阵存算系统及方法 |
CN113469870A (zh) * | 2021-07-23 | 2021-10-01 | 北京理工大学 | 一种适用于gpu的自适应多行折叠存储方法 |
CN113986544B (zh) * | 2021-10-28 | 2022-06-07 | 深圳大学 | 一种运算分配方法、装置及电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102033854A (zh) * | 2010-12-17 | 2011-04-27 | 中国科学院软件研究所 | 针对稀疏矩阵的数据存储方法及基于该方法的SpMV实现方法 |
CN102141976A (zh) * | 2011-01-10 | 2011-08-03 | 中国科学院软件研究所 | 稀疏矩阵的对角线数据存储方法及基于该方法的SpMV实现方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8612723B2 (en) * | 2008-05-06 | 2013-12-17 | L-3 Communications Integrated Systems, L.P. | System and method for storing a sparse matrix |
-
2011
- 2011-12-13 CN CN201110415911.7A patent/CN102436438B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102033854A (zh) * | 2010-12-17 | 2011-04-27 | 中国科学院软件研究所 | 针对稀疏矩阵的数据存储方法及基于该方法的SpMV实现方法 |
CN102141976A (zh) * | 2011-01-10 | 2011-08-03 | 中国科学院软件研究所 | 稀疏矩阵的对角线数据存储方法及基于该方法的SpMV实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102436438A (zh) | 2012-05-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102436438B (zh) | 基于gpu的稀疏矩阵数据存储方法 | |
KR102476343B1 (ko) | 자리수가 비교적 적은 고정 소수점 수치의 신경망 연산에 대한 지원 장치와 방법 | |
CN111062472B (zh) | 一种基于结构化剪枝的稀疏神经网络加速器及其加速方法 | |
CN109543140B (zh) | 一种卷积神经网络加速器 | |
CN103617150A (zh) | 一种基于gpu的大规模电力系统潮流并行计算系统及其方法 | |
FI4099168T3 (fi) | Laskentaoptimoinnit alhaisen tarkkuuden koneoppimistoimintoja varten | |
Peng et al. | GLU3. 0: Fast GPU-based parallel sparse LU factorization for circuit simulation | |
CN106570204A (zh) | 一种基于cpu+gpu异构并行计算的透平机械叶片静强度特性分析方法 | |
CN103106183A (zh) | 基于mapreduce的大规模稀疏矩阵乘法运算的方法 | |
CN105022670A (zh) | 一种云计算平台中的异构分布式任务处理系统及其处理方法 | |
CN104915322A (zh) | 一种卷积神经网络硬件加速方法及其axi总线ip核 | |
CN105808829A (zh) | 一种基于cpu+gpu异构并行计算的透平机械叶片固有频率特性分析方法 | |
CN109753268B (zh) | 多粒度并行运算乘法器 | |
CN112286864B (zh) | 加速可重构处理器运行的稀疏化数据处理方法及系统 | |
CN101980182A (zh) | 基于矩阵运算的并行计算方法 | |
CN115390788A (zh) | 基于fpga的图卷积神经网络稀疏矩阵乘法分配系统 | |
Zeng et al. | An efficient reconfigurable framework for general purpose CNN-RNN models on FPGAs | |
CN109753682B (zh) | 一种基于gpu端的有限元刚度矩阵模拟方法 | |
CN111797985B (zh) | 一种基于gpu的卷积运算内存访问优化方法 | |
CN102081659B (zh) | 倒排索引压缩的预处理方法 | |
KR20110101647A (ko) | 고속 정렬 장치 및 방법 | |
CN117725963A (zh) | 一种用于Transformer模型推理计算的方法、系统及装置 | |
CN103092559A (zh) | 用于hevc标准下dct/idct电路的乘法器结构 | |
CN116205244A (zh) | 一种数字信号处理结构 | |
CN106202522A (zh) | 一种流场积分曲线的复用方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150304 Termination date: 20201213 |