CN111428192A - 用于优化高性能计算构架稀疏矩阵向量乘的方法和系统 - Google Patents
用于优化高性能计算构架稀疏矩阵向量乘的方法和系统 Download PDFInfo
- Publication number
- CN111428192A CN111428192A CN202010194226.5A CN202010194226A CN111428192A CN 111428192 A CN111428192 A CN 111428192A CN 202010194226 A CN202010194226 A CN 202010194226A CN 111428192 A CN111428192 A CN 111428192A
- Authority
- CN
- China
- Prior art keywords
- core
- slave
- sub
- vector
- column
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种用于优化高性能计算构架稀疏矩阵向量乘的方法,本发明将稀疏矩阵向量乘运算分为列向乘运算和行向加运算两大部分:列向乘运算先按稀疏矩阵的列进行乘运算,在该过程中,对输入向量x的数据访问从不规律、离散的变为连续的;行向加运算再按中间结果的行进行加运算,在该过程中,对输出向量y的数据访问从不规律、离散的变为连续的,从而避免不规则数据访问所导致的高访存延迟问题;本发明还设计了一种四层划分机制,包括核组层划分、定制化分、从核层划分和局部内存层划分,以使之充分利用“神威太湖之光”的多级计算构架与内存结构,避免计算核上的局存限制和负载不均衡问题。
Description
技术领域
本发明属于并行计算领域,更具体地,涉及一种用于优化高性能计算构架稀疏矩阵向量乘的方法和系统。
背景技术
目前,高性能计算构架已经得到了日益普遍的工业应用,其中基于SW26010多核异构处理器的“神威太湖之光”是一种典型的高性能计算构架,其是由国家并行计算机工程技术研究中心自主研发,现安装在国家超级计算无锡中心的超级计算机,其安装了40960个SW26010处理器。每个SW26010处理器上有4个核组,每个核组中安装了一个主核和8*8个从核,其中主核负责预处理、从核计算任务分配、和一些不能并行化的计算等,而从核则负责并行计算。每个核组上的内存为8GB,整个SW26010 CPU的总内存为32GB。特别的是,主核上都安装了缓存(Cache),但每个从核上却没有安装缓存,而只是安装了一个存储大小为64KB的便笺存储器(Scratchpad memory)。
随着高性能计算构架的出现,充分利用这种特殊构架的计算能力优化加速稀疏矩阵向量乘运算,已经广泛地应用在在许多重要的科学计算应用中,包括图计算、数据分析挖掘、运筹学等领域。
然而,现有“神威太湖之光”高性能计算构架设计的并行稀疏矩阵乘运算主要存在三个技术问题:第一,其稀疏矩阵乘运算中不规律、不连续的访存方式导致了高昂的访存延迟;第二,其使用的SW26010处理器的从核上的便笺存储器只有64KB,因此导致其无法处理大规模的稀疏矩阵运算,进而影响了其大规模应用;第三,其矩阵的稀疏性容易导致从核上的负载不均衡。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种用于优化高性能计算构架稀疏矩阵向量乘的方法和系统,其目的在于,解决现有“神威太湖之光”高性能计算构架的并行稀疏矩阵乘运算存在的访存延迟高昂的技术问题,以及由于其从核上的便笺存储器只有64KB导致其无法处理大规模的稀疏矩阵运算,进而影响其大规模应用的技术问题,以及由于其矩阵的稀疏性导致出现从核上负载不均衡的技术问题。
为实现上述目的,按照本发明的一个方面,提供了一种用于优化高性能计算构架稀疏矩阵向量乘的方法,其中高性能计算构架包括多个核组,每个核组包括一个主核和多个从核,所述方法包括以下步骤:
(1)所有主核获取稀疏矩阵A和输入向量x,并根据稀疏矩阵A中非零元的个数NNZ将稀疏矩阵A划分为NP个子矩阵subA,每个子矩阵分别对应于一个主核,其中NP为高性能计算构架所包括的核组总数;
(2)每个主核利用压缩稀疏列存储格式对步骤(1)中得到的对应子矩阵subA进行压缩处理,以得到压缩后的子矩阵;
(3)每个主核根据预设阈值对步骤(2)得到的压缩后的子矩阵中的每一个列向量进行划分,从而得到划分后的集合subA’,并根据集合subA’中的子集合数量对输入向量x进行复制扩展,以得到扩展后的输入向量x’;
(4)每个主核根据步骤(3)划分后的集合subA’中所有非零元素的数量将该集合subA’中所有子集合分配给该主核所在核组中的多个从核,每个从核被分配到的所有子集合构成一个列向量集合即列VS,根据为上述每个从核所分配的子集合数量对扩展后的输入向量x’进行划分,并将划分后得到的多个片段x_seg分别分配给对应的从核。
(5)每个主核将其所在核组在步骤(4)中获得的每个列VS划分为多个新的列VS,以使得每个新的列VS中包括inc1个列向量,并将每个列VS所分配的从核所对应的片段x_seg划分成多个子片段,以使得每个子片段中包括inc1个元素,其中inc1为范围在[1,列VS中子集合的总数]之间的自然数;
(6)每个从核设置计数器i=0;
(7)每个从核判断i是否大于步骤(4)中分配给该从核的列VS中子集合的总数,如果是则进入步骤(10),否则进入步骤(8);
(8)每个从核获取步骤(5)中分配给该从核的第i个新列VS、以及分配给该从核的第i个子片段,将该第i个新列VS和第i个子片段进行矩阵向量乘中的乘运算,并将乘运算结果返回该从核对应的主核;
(9)每个从核设置计数器i=i+inc1,并返回步骤(7);
(10)每个主核利用压缩稀疏行存储格式对来自从核的所有乘运算结果进行压缩处理,以得到压缩后的子矩阵subM;
(11)每个主核根据预设阈值对步骤(10)得到的压缩后的子矩阵中的每一个行向量进行划分,从而得到划分后的集合subM’;
(12)每个主核根据步骤(11)划分后的集合subM’中所有非零元素的数量将该集合subM’中所有子集合分配给该主核所在核组中的多个从核,每个从核被分配到的所有子集合构成一个行向量集合即行VC。
(13)每个主核将其所在核组在步骤(12)中获得的每个行VS划分为多个新的行VS,以使得每个新的行VS中包括inc2个行向量,其中inc2为范围在[1,行VS中子集合的总数]之间的自然数;
(14)每个从核设置计数器j=0;
(15)每个从核判断j是否大于步骤(12)中分配给该从核的行VS中子集合的总数,如果是则进入步骤(18),否则进入步骤(16);
(16)每个从核获取步骤(13)中分配给该从核的第j个新行VS、以及分配给该从核的第j个子片段,将该第j个新行VS和第j个子片段进行矩阵向量乘中的加运算,并将得到的inc2个元素作为加运算结果返回该从核对应的主核;
(17)每个从核设置计数器j=j+inc2,并返回步骤(15);
(18)每个主核将其对应核组中的所有从核所返回的加运算结果拼凑成该核组对应的结果向量y’,并将结果向量y’中,与步骤(11)划分后的集合subM’中除了第一个子集合以外的所有子集合相对应的所有元素进行累加,从而将结果向量y’更新为该主核对应的结果向量y;
(19)将所有主核对应的结果向量y拼凑在一起,从而得到稀疏矩阵A和输入向量x乘运算的结果。
优选地,步骤(3)中预设阈值a的取值范围是1到压缩后的子矩阵中非零元素最多的列向量中的非零元素个数,步骤(3)具体为,从压缩后的子矩阵的第一列向量开始,取该列向量中的前a个非零元素形成子集合,然后从该列向量中剩余的非零元素中继续选择前a个非零元素形成子集合,…,依此处理,直至该列向量中剩余的非零元素不足a个为止,此时将不足a个的所有非零元素形成子集合;然后针对压缩后的子矩阵的剩余列向量,重复上述操作,从而得到多个子集合,所有的子集合构成划分后的集合subA’。最后,将输入向量x中第一个元素复制,以扩展成与压缩后的子矩阵的第一列向量所对应的子集合的总数相同,将输入向量x中第二个元素复制,以扩展成与压缩后的子矩阵的第二列向量所对应的子集合的总数相同,…,以此类推,从而最终得到扩展后的输入向量x’。
优选地,步骤(4)中被分配有子集合的从核的数量NC是大于1且小于其所在核组所包括的从核总数,步骤(4)具体为,首先是获取列VS中非零元素的个数=集合subA’中所有非零元素的数量/被分配有子集合的从核的数量NC,然后从集合subA’所包括的所有子集合中选择NC个子集合,并使得选择的这些子集合中所有非零元素的个数等于列VS中非零元素的个数,选择的这些子集合就构成列VS;随后,根据为上述每个从核所分配的子集合数量对扩展后的输入向量x’进行划分,并将划分后得到的多个片段x_seg分别分配给对应的从核。
优选地,步骤(11)中预设阈值b的取值范围是1到压缩后的子矩阵中非零元素最多的行向量中的非零元素个数,步骤(11)具体为,从压缩后的子矩阵的第一行向量开始,取该行向量中的前b个非零元素形成子集合,然后从该行向量中剩余的非零元素中继续选择前b个非零元素形成子集合,…,依此处理,直至该行向量中剩余的非零元素不足b个为止,此时将不足b个的所有非零元素形成子集合;然后针对压缩后的子矩阵的剩余行向量,重复上述操作,从而得到多个子集合,所有的子集合构成划分后的集合subM’。
优选地,步骤(12)具体为,首先是获取行VS中非零元素的个数=集合subM’中所有非零元素的数量/被分配有子集合的从核的数量NC,然后从集合subM’所包括的所有子集合中选择NC个子集合,并使得选择的这些子集合中所有非零元素的个数等于行VS中非零元素的个数,选择的这些子集合就构成行VS。
按照本发明的另一方面,提供了一种用于优化高性能计算构架稀疏矩阵向量乘的系统,其中高性能计算构架包括多个核组,每个核组包括一个主核和多个从核,所述系统包括:
第一模块,用于所有主核获取稀疏矩阵A和输入向量x,并根据稀疏矩阵A中非零元的个数NNZ将稀疏矩阵A划分为NP个子矩阵subA,每个子矩阵分别对应于一个主核,其中NP为高性能计算构架所包括的核组总数;
第二模块,用于每个主核利用压缩稀疏列存储格式对第一模块得到的对应子矩阵subA进行压缩处理,以得到压缩后的子矩阵;
第三模块,用于每个主核根据预设阈值对第二模块得到的压缩后的子矩阵中的每一个列向量进行划分,从而得到划分后的集合subA’,并根据集合subA’中的子集合数量对输入向量x进行复制扩展,以得到扩展后的输入向量x’;
第四模块,用于每个主核根据第三模块划分后的集合subA’中所有非零元素的数量将该集合subA’中所有子集合分配给该主核所在核组中的多个从核,每个从核被分配到的所有子集合构成一个列向量集合即列VS,根据为上述每个从核所分配的子集合数量对扩展后的输入向量x’进行划分,并将划分后得到的多个片段x_seg分别分配给对应的从核。
第五模块,用于每个主核将其所在核组在第四模块获得的每个列VS划分为多个新的列VS,以使得每个新的列VS中包括inc1个列向量,并将每个列VS所分配的从核所对应的片段x_seg划分成多个子片段,以使得每个子片段中包括inc1个元素,其中inc1为范围在[1,列VS中子集合的总数]之间的自然数;
第六模块,用于每个从核设置计数器i=0;
第七模块,用于每个从核判断i是否大于第四模块分配给该从核的列VS中子集合的总数,如果是则进入第十模块,否则进入第八模块;
第八模块,用于每个从核获取第五模块分配给该从核的第i个新列VS、以及分配给该从核的第i个子片段,将该第i个新列VS和第i个子片段进行矩阵向量乘中的乘运算,并将乘运算结果返回该从核对应的主核;
第九模块,用于每个从核设置计数器i=i+inc1,并返回第七模块;
第十模块,用于每个主核利用压缩稀疏行存储格式对来自从核的所有乘运算结果进行压缩处理,以得到压缩后的子矩阵subM;
第十一模块,用于每个主核根据预设阈值对第十模块得到的压缩后的子矩阵中的每一个行向量进行划分,从而得到划分后的集合subM’;
第十二模块,用于每个主核根据第十一模块划分后的集合subM’中所有非零元素的数量将该集合subM’中所有子集合分配给该主核所在核组中的多个从核,每个从核被分配到的所有子集合构成一个列向量集合即行VC。
第十三模块,用于每个主核将其所在核组在第十二模块获得的每个行VS划分为多个新的行VS,以使得每个新的行VS中包括inc2个行向量,其中inc2为范围在[1,行VS中子集合的总数]之间的自然数;
第十四模块,用于每个从核设置计数器j=0;
第十五模块,用于每个从核判断j是否大于第十二模块中分配给该从核的行VS中子集合的总数,如果是则进入第十八模块,否则进入第十六模块;
第十六模块,用于每个从核获取第十三模块中分配给该从核的第j个新行VS、以及分配给该从核的第j个子片段,将该第j个新行VS和第j个子片段进行矩阵向量乘中的加运算,并将得到的inc2个元素作为加运算结果返回该从核对应的主核;
第十七模块,用于每个从核设置计数器j=j+inc2,并返回第十五模块;
第十八模块,用于每个主核将其对应核组中的所有从核所返回的加运算结果拼凑成该核组对应的结果向量y’,并将结果向量y’中,与第十一模块划分后的集合subM’中除了第一个子集合以外的所有子集合相对应的所有元素进行累加,从而将结果向量y’更新为该主核对应的结果向量y;
第十九模块,用于将所有主核对应的结果向量y拼凑在一起,从而得到稀疏矩阵A和输入向量x乘运算的结果。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
(1)本发明通过将稀疏矩阵乘运算分成列向乘运算和行向加运算,避免了乘法运算过程中对输入向量x、以及加法运算过程中对输出向量y的不规律数据访问,从而避免了高昂的访存延迟,并提高了并行稀疏矩阵乘运算的性能;
(2)本发明通过采用针对稀疏矩阵乘算法设计的四层划分机制,即步骤(1)、(3)、(4)和(5),以及步骤(11)、(12)和(13),开发了“神威太湖之光”高性能计算构架的多级并行性,还通过步骤(3)和(11),针对便笺存储器有限的特征设计了定制划分策略,从而解决了现有便笺存储器内存太小导致其无法处理大规模的稀疏矩阵运算、进而影响了其大规模应用的技术问题;
(3)本发明通过采用四层划分机制,在进行开发多级并行性的划分时,对稀疏矩阵的划分是基于非零元的个数进行的,从而保证每个并行计算的从核上被分配了相同个数的非零元,因此保证了每个从核的计算量相同,进而使得本发明方法具备良好的负载均衡性能。
附图说明
图1是本发明用于优化高性能计算构架稀疏矩阵向量乘的方法的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
针对并行稀疏矩阵乘运算在“神威太湖之光”构架的三个主要的设计挑战,我们提出了一种面向“神威太湖之光”构架的稀疏矩阵向量乘的优化实现方法。为了解决高昂的访存延迟问题,我们将稀疏矩阵乘运算分成列向乘运算(Column-based Multiplication,简称CM)和行向加运算(Row-based Addition,简称RA)两部分来分别计算乘运算和加运算,从而避免了不规律的数据访问。为了解决计算核上的局存限制和负载不均的问题,我们对CM和RA运算提出了一种基于“神威太湖之光”构架的四层划分机制。
首先,通过分析我们发现,由于输入稀疏矩阵A中非零元素位置是不规律的,因此稀疏矩阵向量乘中的乘法运算过程中对输入向量x的数据访问和加法运算过程中对输出向量y的数据访问也是不规律的。这种不规律的访存方式会造成非常高的访存延迟,从而极大地影响稀疏矩阵向量乘在“神威太湖之光”构架上的并行性能。为了解决高访存延迟的问题,我们将稀疏矩阵向量乘分成CM和RA两部分,CM先对A和x按列进行乘运算,RA再对CM获得的中间结果按行进行加运算。可以发现,当稀疏矩阵乘运算中的乘运算按列进行时,对x中元素的访问是连续的;当稀疏矩阵乘运算中的乘运算按行进行时,对y中元素的访问也是连续的。这样的方法解决了不规律的数据访问问题,从而提高并行稀疏矩阵乘运算的性能。
进一步,我们根据“神威太湖之光”构架的特点(多级并行计算结构和从核无缓存存储结构),对计算内核提出一个四层划分策略,从而解决便笺存储器限制和负载不均衡的问题。由于稀疏矩阵乘法中的CM和RA运算都是按列/行进行的,稀疏矩阵的行/列中非零元的个数是不确定的,对于大规模的稀疏矩阵来说,可能有的行/列中非零元的个数较大,如将其加载到从核会超过局存的大小。此外,稀疏矩阵乘的计算量是由非零元的人数决定的,如果在划分稀疏矩阵到从核的过程中,每个从核分配了相同数量的矩阵行进行计算,那么每个从核上计算的非零元个数是不均衡的,这就导致了负载不均衡。因此,我们提出的四层划分策略解决了这两个问题。首先,核组层划分为了开发核组级的并行性,将输入矩阵A(或中间结果矩阵)按行划分为NP个subA分配给NP个工作核组;定制划分为了保证行/列向量的大小不影响计算内核在核组上的计算规模,继续将subA中的行/列向量划分为subA’中更短的行/列向量;从核层划分为了开发从核级的并行性,进一步为每个核组上的subA’划分为NC个行/列VS分配给NC个从核;最后局部内存层划分针对每个从核上有限的局存,再将行/列VS划分为更小的行/列向量集合,从而使其大小适用于64KB的有限局存。
本发明的基本思路在于,将稀疏矩阵向量乘运算的乘运算和加运算分开进行,从而提高并行运算效率;并针对“神威太湖之光”高性能计算构架对,分别对并行稀疏矩阵向量乘运算设计四层划分策略,从而使其充分利用“神威太湖之光”构架的计算能力。
本发明将稀疏矩阵向量乘运算分为CM和RA两大部分:CM先按稀疏矩阵的列进行乘运算,在该过程中,对输入向量x的数据访问从不规律、离散的变为连续的;RA再按中间结果的行进行加运算,在该过程中,对输出向量y的数据访问从不规律、离散的变为连续的。
进一步,基于这种由CM和RA组成的稀疏矩阵向量乘操作,我们提出了四层划分机制,包括:核组层划分、定制划分、从核划分和局部内存层划分。对应的作用分别是开发核组间并行、消除有限局存对问题规模的限制、开发从核间并行和针对有限局存的细粒度划分。
进一步,我们对基于四层划分机制的CM和RA稀疏矩阵乘算法设计了一种面向“神威太湖之光”构架的并行计算模式。该模式协同每个核组中的主核和从核来进行基于四层划分机制的CM和RA稀疏矩阵乘算法。
如图1所示,本发明提供了一种用于优化高性能计算构架稀疏矩阵向量乘的方法,其中高性能计算构架包括多个核组,每个核组包括一个主核和多个从核,所述方法包括以下步骤:
(1)所有主核获取稀疏矩阵A和输入向量x,并根据稀疏矩阵A中非零元的个数NNZ将稀疏矩阵A划分为NP个子矩阵subA,每个子矩阵分别对应于一个主核(即核组),其中NP为高性能计算构架所包括的核组总数;
具体而言,本发明中的高性能计算构架是“神威太湖之光”构架。
本步骤是将稀疏矩阵A划分为NP个子矩阵subA,其中每个子矩阵subA中非零元的个数为NNZ/NP;每个核组获取一个子矩阵subA。
举例而言,本步骤中获取的一个稀疏矩阵如下:
A是一个6×4的稀疏矩阵,非零元的个数为NNZ=16;
获取的输入向量x如下:
假设NP=2,经过步骤(1)的处理后,得到的2个子矩阵如下所示:
该子矩阵subA中非零元的个数为NNZ/NP=8;
该子矩阵subA中非零元的个数为NNZ/NP=8;
本步骤的优点在于,为多个核组划分并行任务,开发了核组间的并行性。
(2)每个主核利用压缩稀疏列存储格式(Compressed Sparse Column Format,简称CSC)对步骤(1)中得到的对应子矩阵subA进行压缩处理,以得到压缩后的子矩阵;
本步骤的优点在于,方便步骤(8)中的列向乘运算。
(3)每个主核根据预设阈值对步骤(2)得到的压缩后的子矩阵中的每一个列向量进行划分,从而得到划分后的集合subA’,并根据集合subA’中的子集合数量对输入向量x进行复制扩展,以得到扩展后的输入向量x’;
具体而言,预设阈值a的取值范围是1到压缩后的子矩阵中非零元素最多的列向量中的非零元素个数。
本步骤的具体实现过程是,从压缩后的子矩阵的第一列向量开始,取该列向量中的前a个非零元素形成子集合,然后从该列向量中剩余的非零元素中继续选择前a个非零元素形成子集合,…,依此处理,直至该列向量中剩余的非零元素不足a个为止,此时将不足a个的所有非零元素形成子集合;然后针对压缩后的子矩阵的剩余列向量,重复上述操作,从而得到多个子集合,所有的子集合构成划分后的集合subA’。最后,将输入向量x中第一个元素复制,以扩展成与压缩后的子矩阵的第一列向量所对应的子集合的总数相同,将输入向量x中第二个元素复制,以扩展成与压缩后的子矩阵的第二列向量所对应的子集合的总数相同,…,以此类推,从而最终得到扩展后的输入向量x’。
具体而言,子矩阵中较长的列向量被划分为若干个子集合,从而使划分后的每个子集合的大小不会超过从核的便笺存储器大小;
举例而言,假设阈值a=2,对于步骤(1)中描述的示例,经过本步骤处理后,得到的划分后的两个集合subA’分别为:
第一个核组上的subA’为{{a3,a6},{a1,a4},{a7},{a8},{a2,a5}},第二个核组上的subA’为{{a12},{a9,a13},{a15},{a10,a14},{a16},{a11}}。
那么对应的,步骤(1)中的输入向量x就被对应扩展成了如下的x’:
(4)每个主核根据步骤(3)划分后的集合subA’中所有非零元素的数量将该集合subA’中所有子集合分配给该主核所在核组中的多个从核,每个从核被分配到的所有子集合构成一个列向量集合(Vector Set,简称VS),根据为上述每个从核所分配的子集合数量对扩展后的输入向量x’进行划分,并将划分后得到的多个片段x_seg分别分配给对应的从核。
具体而言,本步骤中被分配有子集合的从核的数量NC是大于1且小于其所在核组所包括的从核总数。
步骤具体为,首先是获取列VS中非零元素的个数=集合subA’中所有非零元素的数量/被分配有子集合的从核的数量NC,然后从集合subA’所包括的所有子集合中选择NC个子集合,并使得选择的这些子集合中所有非零元素的个数等于列VS中非零元素的个数,选择的这些子集合就构成列VS;随后,根据为上述每个从核所分配的子集合数量对扩展后的输入向量x’进行划分,并将划分后得到的多个片段x_seg分别分配给对应的从核。
举例而言,假设NC=2,对于步骤(1)中描述的示例,经过本步骤处理后,步骤(3)所得的两个集合subA’分别被划分为以下列VS:
第一个核组上的subA’被划分为两个列VS:{{a3,a6},{a1,a4}}和{{a7},{a8},{a2,a5}},其中每个列VS中非零元的个数都为NNZ/(NP×NC)=4;该核组中的第一个从核所分配的列VS为{{a3,a6},{a1,a4}},第二个从核所分配的列VS为{{a7},{a8},{a2,a5}};
第二个核组上的subA’也被划分为两个列VS:{{a12},{a9,a13},{a15}},{{a10,a14},{a16},{a11}},其中每个列VS中非零元的个数都为NNZ/(NP×NC)=4;该核组中的第一个从核所分配的列VS为{{a12},{a9,a13},{a15}},第二个从核分配的列VS为{{a10,a14},{a16},{a11}}。
那么对应的,步骤(3)中的两个扩展向量x’就分别被划分为以下x_seg:
本步骤的优点在于,为每个核组中的多个从核划分并行任务,开发了从核间的并行性。
(5)每个主核将其所在核组在步骤(4)中获得的每个列VS划分为多个新的列VS,以使得每个新的列VS中包括inc1个列向量,并将每个列VS所分配的从核所对应的片段x_seg划分成多个子片段,以使得每个子片段中包括inc1个元素,其中inc1为范围在[1,列VS中子集合的总数]之间的自然数;
具体而言,本步骤需要确保新的列VS中的inc1个列向量的大小适合于64KB的便笺存储器;
举例而言,假设inc1=2,对于步骤(1)中描述的示例,经过本步骤处理后,步骤(4)所得的列VS分别被划分为以下集合:
第二个核组中,第一个从核上的列VS被划分为:{{a12},{a9,a13}}和{{a15}},x_seg被划分为:第二个从核上的列VS被划分为:{{a10,a14},{a16}}和{{a11}},x_seg被划分为:
步骤(3)和步骤(5)的优点在于,解决了便笺存储器内存太小导致其无法处理大规模的稀疏矩阵运算、进而影响了其大规模应用的技术问题。
(6)每个从核设置计数器i=0;
(7)每个从核判断i是否大于步骤(4)中分配给该从核的列VS中子集合的总数,如果是则进入步骤(10),否则进入步骤(8);
(8)每个从核获取步骤(5)中分配给该从核的第i个新列VS、以及分配给该从核的第i个子片段,将该第i个新列VS和第i个子片段进行矩阵向量乘中的乘运算,并将乘运算结果返回该从核对应的主核;
(9)每个从核设置计数器i=i+inc1,并返回步骤(7);
(10)每个主核利用压缩稀疏行存储格式(Compressed Sparse Row Format,简称CSR)对来自从核的所有乘运算结果进行压缩处理,以得到压缩后的子矩阵subM;
(11)每个主核根据预设阈值对步骤(10)得到的压缩后的子矩阵中的每一个行向量进行划分,从而得到划分后的集合subM’;
具体而言,预设阈值b的取值范围是1到压缩后的子矩阵中非零元素最多的行向量中的非零元素个数。
本步骤的具体实现过程是,从压缩后的子矩阵的第一行向量开始,取该行向量中的前b个非零元素形成子集合,然后从该行向量中剩余的非零元素中继续选择前b个非零元素形成子集合,…,依此处理,直至该行向量中剩余的非零元素不足b个为止,此时将不足b个的所有非零元素形成子集合;然后针对压缩后的子矩阵的剩余行向量,重复上述操作,从而得到多个子集合,所有的子集合构成划分后的集合subM’。
具体而言,子矩阵中较长的行向量被划分为若干个子集合,从而使划分后的每个子集合的大小不会超过从核的便笺存储器大小;
(12)每个主核根据步骤(11)划分后的集合subM’中所有非零元素的数量将该集合subM’中所有子集合分配给该主核所在核组中的多个从核,每个从核被分配到的所有子集合构成一个行向量集合(Vector Set,简称VS)。
具体而言,本步骤中被分配有子集合的从核的数量NC是大于1且小于其所在核组所包括的从核总数。
步骤具体为,首先是获取行VS中非零元素的个数=集合subM’中所有非零元素的数量/被分配有子集合的从核的数量NC,然后从集合subM’所包括的所有子集合中选择NC个子集合,并使得选择的这些子集合中所有非零元素的个数等于行VS中非零元素的个数,选择的这些子集合就构成行VS。
本步骤的优点在于,为每个核组中的多个从核划分并行任务,开发了从核间的并行性。
(13)每个主核将其所在核组在步骤(12)中获得的每个行VS划分为多个新的行VS,以使得每个新的行VS中包括inc2个行向量,其中inc2为范围在[1,行VS中子集合的总数]之间的自然数;
具体而言,本步骤需要确保新的列VS中的inc2个行向量的大小适合于64KB的便笺存储器;
步骤(11)和步骤(13)的优点在于,解决了便笺存储器内存太小导致其无法处理大规模的稀疏矩阵运算、进而影响了其大规模应用的技术问题。
(14)每个从核设置计数器j=0;
(15)每个从核判断j是否大于步骤(12)中分配给该从核的行VS中子集合的总数,如果是则进入步骤(18),否则进入步骤(16);
(16)每个从核获取步骤(13)中分配给该从核的第j个新行VS、以及分配给该从核的第j个子片段,将该第j个新行VS和第j个子片段进行矩阵向量乘中的加运算,并将得到的inc2个元素作为加运算结果返回该从核对应的主核;
(17)每个从核设置计数器j=j+inc2,并返回步骤(15);
(18)每个主核将其对应核组中的所有从核所返回的加运算结果拼凑(即Merge)成该核组对应的结果向量y’,并将结果向量y’中,与步骤(11)划分后的集合subM’中除了第一个子集合以外的所有子集合相对应的所有元素进行累加,从而将结果向量y’更新为该主核对应的结果向量y;
(19)将所有主核对应的结果向量y拼凑在一起,从而得到稀疏矩阵A和输入向量x乘运算的结果。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种用于优化高性能计算构架稀疏矩阵向量乘的方法,其中高性能计算构架包括多个核组,每个核组包括一个主核和多个从核,其特征在于,所述方法包括以下步骤:
(1)所有主核获取稀疏矩阵A和输入向量x,并根据稀疏矩阵A中非零元的个数NNZ将稀疏矩阵A划分为NP个子矩阵subA,每个子矩阵分别对应于一个主核,其中NP为高性能计算构架所包括的核组总数;
(2)每个主核利用压缩稀疏列存储格式对步骤(1)中得到的对应子矩阵subA进行压缩处理,以得到压缩后的子矩阵;
(3)每个主核根据预设阈值对步骤(2)得到的压缩后的子矩阵中的每一个列向量进行划分,从而得到划分后的集合subA’,并根据集合subA’中的子集合数量对输入向量x进行复制扩展,以得到扩展后的输入向量x’;
(4)每个主核根据步骤(3)划分后的集合subA’中所有非零元素的数量将该集合subA’中所有子集合分配给该主核所在核组中的多个从核,每个从核被分配到的所有子集合构成一个列向量集合即列VS,根据为上述每个从核所分配的子集合数量对扩展后的输入向量x’进行划分,并将划分后得到的多个片段x_seg分别分配给对应的从核。
(5)每个主核将其所在核组在步骤(4)中获得的每个列VS划分为多个新的列VS,以使得每个新的列VS中包括inc1个列向量,并将每个列VS所分配的从核所对应的片段x_seg划分成多个子片段,以使得每个子片段中包括inc1个元素,其中inc1为范围在[1,列VS中子集合的总数]之间的自然数;
(6)每个从核设置计数器i=0;
(7)每个从核判断i是否大于步骤(4)中分配给该从核的列VS中子集合的总数,如果是则进入步骤(10),否则进入步骤(8);
(8)每个从核获取步骤(5)中分配给该从核的第i个新列VS、以及分配给该从核的第i个子片段,将该第i个新列VS和第i个子片段进行矩阵向量乘中的乘运算,并将乘运算结果返回该从核对应的主核;
(9)每个从核设置计数器i=i+inc1,并返回步骤(7);
(10)每个主核利用压缩稀疏行存储格式对来自从核的所有乘运算结果进行压缩处理,以得到压缩后的子矩阵subM;
(11)每个主核根据预设阈值对步骤(10)得到的压缩后的子矩阵中的每一个行向量进行划分,从而得到划分后的集合subM’;
(12)每个主核根据步骤(11)划分后的集合subM’中所有非零元素的数量将该集合subM’中所有子集合分配给该主核所在核组中的多个从核,每个从核被分配到的所有子集合构成一个行向量集合即行VC。
(13)每个主核将其所在核组在步骤(12)中获得的每个行VS划分为多个新的行VS,以使得每个新的行VS中包括inc2个行向量,其中inc2为范围在[1,行VS中子集合的总数]之间的自然数;
(14)每个从核设置计数器j=0;
(15)每个从核判断j是否大于步骤(12)中分配给该从核的行VS中子集合的总数,如果是则进入步骤(18),否则进入步骤(16);
(16)每个从核获取步骤(13)中分配给该从核的第j个新行VS、以及分配给该从核的第j个子片段,将该第j个新行VS和第j个子片段进行矩阵向量乘中的加运算,并将得到的inc2个元素作为加运算结果返回该从核对应的主核;
(17)每个从核设置计数器j=j+inc2,并返回步骤(15);
(18)每个主核将其对应核组中的所有从核所返回的加运算结果拼凑成该核组对应的结果向量y’,并将结果向量y’中,与步骤(11)划分后的集合subM’中除了第一个子集合以外的所有子集合相对应的所有元素进行累加,从而将结果向量y’更新为该主核对应的结果向量y;
(19)将所有主核对应的结果向量y拼凑在一起,从而得到稀疏矩阵A和输入向量x乘运算的结果。
2.根据权利要求1所述的用于优化高性能计算构架稀疏矩阵向量乘的方法,其特征在于,
步骤(3)中预设阈值a的取值范围是1到压缩后的子矩阵中非零元素最多的列向量中的非零元素个数。
步骤(3)具体为,从压缩后的子矩阵的第一列向量开始,取该列向量中的前a个非零元素形成子集合,然后从该列向量中剩余的非零元素中继续选择前a个非零元素形成子集合,…,依此处理,直至该列向量中剩余的非零元素不足a个为止,此时将不足a个的所有非零元素形成子集合;然后针对压缩后的子矩阵的剩余列向量,重复上述操作,从而得到多个子集合,所有的子集合构成划分后的集合subA’。最后,将输入向量x中第一个元素复制,以扩展成与压缩后的子矩阵的第一列向量所对应的子集合的总数相同,将输入向量x中第二个元素复制,以扩展成与压缩后的子矩阵的第二列向量所对应的子集合的总数相同,…,以此类推,从而最终得到扩展后的输入向量x’。
3.根据权利要求1或2所述的用于优化高性能计算构架稀疏矩阵向量乘的方法,其特征在于,
步骤(4)中被分配有子集合的从核的数量NC是大于1且小于其所在核组所包括的从核总数;
步骤(4)具体为,首先是获取列VS中非零元素的个数=集合subA’中所有非零元素的数量/被分配有子集合的从核的数量NC,然后从集合subA’所包括的所有子集合中选择NC个子集合,并使得选择的这些子集合中所有非零元素的个数等于列VS中非零元素的个数,选择的这些子集合就构成列VS;随后,根据为上述每个从核所分配的子集合数量对扩展后的输入向量x’进行划分,并将划分后得到的多个片段x_seg分别分配给对应的从核。
4.根据权利要求1至3中任意一项所述的用于优化高性能计算构架稀疏矩阵向量乘的方法,其特征在于,
步骤(11)中预设阈值b的取值范围是1到压缩后的子矩阵中非零元素最多的行向量中的非零元素个数。
步骤(11)具体为,从压缩后的子矩阵的第一行向量开始,取该行向量中的前b个非零元素形成子集合,然后从该行向量中剩余的非零元素中继续选择前b个非零元素形成子集合,…,依此处理,直至该行向量中剩余的非零元素不足b个为止,此时将不足b个的所有非零元素形成子集合;然后针对压缩后的子矩阵的剩余行向量,重复上述操作,从而得到多个子集合,所有的子集合构成划分后的集合subM’。
5.根据权利要求1至4中任意一项所述的用于优化高性能计算构架稀疏矩阵向量乘的方法,其特征在于,步骤(12)具体为,首先是获取行VS中非零元素的个数=集合subM’中所有非零元素的数量/被分配有子集合的从核的数量NC,然后从集合subM’所包括的所有子集合中选择NC个子集合,并使得选择的这些子集合中所有非零元素的个数等于行VS中非零元素的个数,选择的这些子集合就构成行VS。
6.一种用于优化高性能计算构架稀疏矩阵向量乘的系统,其中高性能计算构架包括多个核组,每个核组包括一个主核和多个从核,其特征在于,所述系统包括:
第一模块,用于所有主核获取稀疏矩阵A和输入向量x,并根据稀疏矩阵A中非零元的个数NNZ将稀疏矩阵A划分为NP个子矩阵subA,每个子矩阵分别对应于一个主核,其中NP为高性能计算构架所包括的核组总数;
第二模块,用于每个主核利用压缩稀疏列存储格式对第一模块得到的对应子矩阵subA进行压缩处理,以得到压缩后的子矩阵;
第三模块,用于每个主核根据预设阈值对第二模块得到的压缩后的子矩阵中的每一个列向量进行划分,从而得到划分后的集合subA’,并根据集合subA’中的子集合数量对输入向量x进行复制扩展,以得到扩展后的输入向量x’;
第四模块,用于每个主核根据第三模块划分后的集合subA’中所有非零元素的数量将该集合subA’中所有子集合分配给该主核所在核组中的多个从核,每个从核被分配到的所有子集合构成一个列向量集合即列VS,根据为上述每个从核所分配的子集合数量对扩展后的输入向量x’进行划分,并将划分后得到的多个片段x_seg分别分配给对应的从核。
第五模块,用于每个主核将其所在核组在第四模块获得的每个列VS划分为多个新的列VS,以使得每个新的列VS中包括inc1个列向量,并将每个列VS所分配的从核所对应的片段x_seg划分成多个子片段,以使得每个子片段中包括inc1个元素,其中inc1为范围在[1,列VS中子集合的总数]之间的自然数;
第六模块,用于每个从核设置计数器i=0;
第七模块,用于每个从核判断i是否大于第四模块分配给该从核的列VS中子集合的总数,如果是则进入第十模块,否则进入第八模块;
第八模块,用于每个从核获取第五模块分配给该从核的第i个新列VS、以及分配给该从核的第i个子片段,将该第i个新列VS和第i个子片段进行矩阵向量乘中的乘运算,并将乘运算结果返回该从核对应的主核;
第九模块,用于每个从核设置计数器i=i+inc1,并返回第七模块;
第十模块,用于每个主核利用压缩稀疏行存储格式对来自从核的所有乘运算结果进行压缩处理,以得到压缩后的子矩阵subM;
第十一模块,用于每个主核根据预设阈值对第十模块得到的压缩后的子矩阵中的每一个行向量进行划分,从而得到划分后的集合subM’;
第十二模块,用于每个主核根据第十一模块划分后的集合subM’中所有非零元素的数量将该集合subM’中所有子集合分配给该主核所在核组中的多个从核,每个从核被分配到的所有子集合构成一个列向量集合即行VC。
第十三模块,用于每个主核将其所在核组在第十二模块获得的每个行VS划分为多个新的行VS,以使得每个新的行VS中包括inc2个行向量,其中inc2为范围在[1,行VS中子集合的总数]之间的自然数;
第十四模块,用于每个从核设置计数器j=0;
第十五模块,用于每个从核判断j是否大于第十二模块中分配给该从核的行VS中子集合的总数,如果是则进入第十八模块,否则进入第十六模块;
第十六模块,用于每个从核获取第十三模块中分配给该从核的第j个新行VS、以及分配给该从核的第j个子片段,将该第j个新行VS和第j个子片段进行矩阵向量乘中的加运算,并将得到的inc2个元素作为加运算结果返回该从核对应的主核;
第十七模块,用于每个从核设置计数器j=j+inc2,并返回第十五模块;
第十八模块,用于每个主核将其对应核组中的所有从核所返回的加运算结果拼凑成该核组对应的结果向量y’,并将结果向量y’中,与第十一模块划分后的集合subM’中除了第一个子集合以外的所有子集合相对应的所有元素进行累加,从而将结果向量y’更新为该主核对应的结果向量y;
第十九模块,用于将所有主核对应的结果向量y拼凑在一起,从而得到稀疏矩阵A和输入向量x乘运算的结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010194226.5A CN111428192A (zh) | 2020-03-19 | 2020-03-19 | 用于优化高性能计算构架稀疏矩阵向量乘的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010194226.5A CN111428192A (zh) | 2020-03-19 | 2020-03-19 | 用于优化高性能计算构架稀疏矩阵向量乘的方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111428192A true CN111428192A (zh) | 2020-07-17 |
Family
ID=71553461
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010194226.5A Withdrawn CN111428192A (zh) | 2020-03-19 | 2020-03-19 | 用于优化高性能计算构架稀疏矩阵向量乘的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111428192A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111984418A (zh) * | 2020-07-20 | 2020-11-24 | 中国人民解放军国防科技大学 | 稀疏矩阵向量乘并行任务粒度参数自动调优方法和装置 |
WO2022022117A1 (zh) * | 2020-07-31 | 2022-02-03 | 华为技术有限公司 | 稀疏矩阵计算方法及加速装置 |
WO2022161394A1 (zh) * | 2021-01-26 | 2022-08-04 | 北京灵汐科技有限公司 | 任务映射方法、任务处理方法、处理核和电子设备 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110078226A1 (en) * | 2009-09-30 | 2011-03-31 | International Business Machines Corporation | Sparse Matrix-Vector Multiplication on Graphics Processor Units |
CN102141976A (zh) * | 2011-01-10 | 2011-08-03 | 中国科学院软件研究所 | 稀疏矩阵的对角线数据存储方法及基于该方法的SpMV实现方法 |
CN103336758A (zh) * | 2013-06-29 | 2013-10-02 | 中国科学院软件研究所 | 一种稀疏矩阵的存储方法CSRL及基于该方法的SpMV实现方法 |
CN105068787A (zh) * | 2015-08-28 | 2015-11-18 | 华南理工大学 | 一种稀疏矩阵向量乘法的异构并行计算方法 |
US20160140084A1 (en) * | 2014-11-14 | 2016-05-19 | Advanced Micro Devices, Inc. | Efficient sparse matrix-vector multiplication on parallel processors |
CN106775594A (zh) * | 2017-01-13 | 2017-05-31 | 中国科学院软件研究所 | 一种基于国产申威26010处理器的稀疏矩阵向量乘异构众核实现方法 |
CN107273094A (zh) * | 2017-05-18 | 2017-10-20 | 中国科学院软件研究所 | 一种适应于“神威·太湖之光”上hpcg优化的数据结构及其高效实现方法 |
CN108446253A (zh) * | 2018-03-28 | 2018-08-24 | 北京航空航天大学 | 一种针对神威体系架构的稀疏矩阵向量乘的并行计算方法 |
US20190205746A1 (en) * | 2017-12-29 | 2019-07-04 | Intel Corporation | Machine learning sparse computation mechanism for arbitrary neural networks, arithmetic compute microarchitecture, and sparsity for training mechanism |
-
2020
- 2020-03-19 CN CN202010194226.5A patent/CN111428192A/zh not_active Withdrawn
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110078226A1 (en) * | 2009-09-30 | 2011-03-31 | International Business Machines Corporation | Sparse Matrix-Vector Multiplication on Graphics Processor Units |
CN102141976A (zh) * | 2011-01-10 | 2011-08-03 | 中国科学院软件研究所 | 稀疏矩阵的对角线数据存储方法及基于该方法的SpMV实现方法 |
CN103336758A (zh) * | 2013-06-29 | 2013-10-02 | 中国科学院软件研究所 | 一种稀疏矩阵的存储方法CSRL及基于该方法的SpMV实现方法 |
US20160140084A1 (en) * | 2014-11-14 | 2016-05-19 | Advanced Micro Devices, Inc. | Efficient sparse matrix-vector multiplication on parallel processors |
CN105068787A (zh) * | 2015-08-28 | 2015-11-18 | 华南理工大学 | 一种稀疏矩阵向量乘法的异构并行计算方法 |
CN106775594A (zh) * | 2017-01-13 | 2017-05-31 | 中国科学院软件研究所 | 一种基于国产申威26010处理器的稀疏矩阵向量乘异构众核实现方法 |
CN107273094A (zh) * | 2017-05-18 | 2017-10-20 | 中国科学院软件研究所 | 一种适应于“神威·太湖之光”上hpcg优化的数据结构及其高效实现方法 |
US20190205746A1 (en) * | 2017-12-29 | 2019-07-04 | Intel Corporation | Machine learning sparse computation mechanism for arbitrary neural networks, arithmetic compute microarchitecture, and sparsity for training mechanism |
CN108446253A (zh) * | 2018-03-28 | 2018-08-24 | 北京航空航天大学 | 一种针对神威体系架构的稀疏矩阵向量乘的并行计算方法 |
Non-Patent Citations (4)
Title |
---|
XIAO G 等: "CASpMV: A Customized and Accelerative SpMV Framework for the Sunway TaihuLight", 《IEEE》 * |
于天禹 等: "基于神威太湖之光架构的LOBPCG并行算法研究", 《数值计算与计算机应用》 * |
刘芳芳 等: "面向国产申威26010众核处理器的SpMV实现与优化", 《软件学报》 * |
洪文杰 等: "面向神威·太湖之光的PETSc可扩展异构并行算法及其性能优化", 《计算机学报》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111984418A (zh) * | 2020-07-20 | 2020-11-24 | 中国人民解放军国防科技大学 | 稀疏矩阵向量乘并行任务粒度参数自动调优方法和装置 |
CN111984418B (zh) * | 2020-07-20 | 2022-09-02 | 中国人民解放军国防科技大学 | 稀疏矩阵向量乘并行任务粒度参数自动调优方法和装置 |
WO2022022117A1 (zh) * | 2020-07-31 | 2022-02-03 | 华为技术有限公司 | 稀疏矩阵计算方法及加速装置 |
WO2022161394A1 (zh) * | 2021-01-26 | 2022-08-04 | 北京灵汐科技有限公司 | 任务映射方法、任务处理方法、处理核和电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Lu et al. | SpWA: An efficient sparse winograd convolutional neural networks accelerator on FPGAs | |
CN110415157B (zh) | 一种矩阵乘法的计算方法及装置 | |
Higham et al. | Squeezing a matrix into half precision, with an application to solving linear systems | |
CN111428192A (zh) | 用于优化高性能计算构架稀疏矩阵向量乘的方法和系统 | |
CN107168683B (zh) | 申威26010众核cpu上gemm稠密矩阵乘高性能实现方法 | |
CN108170639B (zh) | 基于分布式环境的张量cp分解实现方法 | |
Jiao et al. | 7.2 A 12nm programmable convolution-efficient neural-processing-unit chip achieving 825TOPS | |
CN114201287B (zh) | 一种基于cpu+gpu异构平台协同处理数据的方法 | |
CN114579929B (zh) | 加速器执行的方法和电子设备 | |
Yang et al. | A Winograd-based CNN accelerator with a fine-grained regular sparsity pattern | |
WO2021036729A1 (zh) | 一种矩阵运算方法、运算装置以及处理器 | |
CN114385972A (zh) | 一种直接求解结构化三角稀疏线性方程组的并行计算方法 | |
US20200356375A1 (en) | Adaptive matrix multiplication accelerator for machine learning and deep learning applications | |
US20240311204A1 (en) | Techniques for balancing workloads when parallelizing multiply-accumulate computations | |
Zhang et al. | Efficient sparse matrix–vector multiplication using cache oblivious extension quadtree storage format | |
CN112561049B (zh) | 一种基于忆阻器的dnn加速器的资源分配方法及装置 | |
CN118193914A (zh) | 面向分布式平台的lu分解方法、装置、设备及存储介质 | |
CN111522776B (zh) | 一种计算架构 | |
US20210255793A1 (en) | System and method for managing conversion of low-locality data into high-locality data | |
US20230259282A1 (en) | Core group memory processsing unit architectures and configurations | |
Lastovetsky | Heterogeneous parallel computing: from clusters of workstations to hierarchical hybrid platforms | |
CN114428936A (zh) | 针对矩阵-矩阵乘法分配处理线程 | |
Karsavuran et al. | Reduce operations: Send volume balancing while minimizing latency | |
CN117785113B (zh) | 计算装置及方法、电子设备和存储介质 | |
CN220983883U (zh) | 矩阵计算装置、小芯片设备及人工智能加速器装置 |
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 | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20200717 |
|
WW01 | Invention patent application withdrawn after publication |