CN117150192A - 一种高带宽利用率的稀疏矩阵向量相乘加速装置 - Google Patents
一种高带宽利用率的稀疏矩阵向量相乘加速装置 Download PDFInfo
- Publication number
- CN117150192A CN117150192A CN202310019434.5A CN202310019434A CN117150192A CN 117150192 A CN117150192 A CN 117150192A CN 202310019434 A CN202310019434 A CN 202310019434A CN 117150192 A CN117150192 A CN 117150192A
- Authority
- CN
- China
- Prior art keywords
- vector
- elements
- read
- zero
- cache
- 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.)
- Pending
Links
- 239000013598 vector Substances 0.000 title claims abstract description 127
- 239000011159 matrix material Substances 0.000 title claims abstract description 67
- 241001442055 Vipera berus Species 0.000 claims abstract description 52
- 239000000872 buffer Substances 0.000 claims abstract description 9
- 238000009825 accumulation Methods 0.000 claims abstract description 7
- 230000001133 acceleration Effects 0.000 claims description 8
- 238000004364 calculation method Methods 0.000 claims description 8
- 230000015654 memory Effects 0.000 claims description 7
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 claims description 6
- 238000007781 pre-processing Methods 0.000 claims description 4
- 241001409283 Spartina mottle virus Species 0.000 description 24
- 238000000034 method Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000013001 matrix buffer Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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
本发明提出一种高带宽利用率的稀疏矩阵向量相乘加速装置,包括,解码器、无读冲突的输入向量缓存、计算单元阵列、无写冲突的加法器树、支持乒乓的累加器组、存储部分和及结果向量的缓存;解码器用于对预处理后的矩阵进行解码,解码器将矩阵中的向量元素解码后传入无读冲突的输入向量缓存,将目标矩阵中的非零元素解码后传入计算单元阵列;计算单元阵列用于根据非零元素的列号从无读冲突的输入向量缓存中读取相应的向量元素,再将向量元素和所述非零数据相乘,将得到的相乘结果和非零元素的行号传入无写冲突的加法器树;无写冲突的加法器树用于将行号相同的相乘结果进行相加,将得到的相加结果传入累加器中;支持乒乓的累加器组用于相加结果累加。
Description
技术领域
本发明属于计算机体系结构领域。
背景技术
稀疏矩阵向量相乘(SpMV,Sparse matrix-vector multiplication)被广泛应用于图形计算、机器学习、工业工程等领域。随着互联网时代的发展,SpMV任务处理的数据规模增加,从而影响了这些应用的执行时间。因此,加速SpMV对于提高这些应用程序的性能至关重要。
相比于传统的密集矩阵向量相乘,SpMV中的矩阵包含大量的零元素。为了节省存储空间以及数据传输量,压缩存储格式只会存储和传输稀疏矩阵中的非零元素和非零元素在矩阵中的位置信息。基于此存储方式,对于每一个非零元素,SpMV根据其列号读取对应的向量元素与之相乘,随后将乘法结果与行号对应的结果向量中的部分和累加得到新的部分和,当所有非零元素计算完后,即可得到最终结果。然而,在稀疏矩阵中,非零元素的分布是随机的,这使得SpMV任务执行过程中会引入对向量的随机访问,导致数据访问所需的时间超过浮点计算所需的时间。此外,由于稀疏矩阵压缩存储格式的特点,SpMV对向量的访问是间接的,与密集矩阵向量乘法相比,SpMV的内存密集型特点更加突出。
对于中央处理器(CPU,Central Processing Unit)或者图形处理器(GPU,Graphics Processing Unit),SpMV对内存的随机访问容易导致缓存丢失。CPU和GPU的计算吞吐量往往超过可用内存带宽,这与SpMV的内存密集型特点相反。因此,CPU和GPU并不是加速SpMV的理想平台。而FPGA具有较大的存储带宽、可定制的逻辑单元和高性能的浮点单元,是加速SpMV的合适平台。
因为SpMV的执行时间主要取决于片外带宽加载数据的时间,所以带宽利用率(BU,Bandwidth Utilization)是评价基于FPGA的SPMV加速器性能的被广泛使用的指标。具体来说,BU是由有效的数据大小和任务执行中的延迟所决定的,因此如何减少数据冗余和任务延迟对于在FPGA上实现SpMV加速器至关重要。在加速SpMV的工作中,通常会对SpMV任务进行并行化处理,但是在并行模式下工作时将产生同时多次随机访问,而FPGA片上的块随机存取存储器(BRAM,Block Random Access Memory)通常只有两个独立的端口,如何处理这种同时多次随机访问是一项具有挑战性的工作。如果这个问题没有得到很好的解决,通常会导致内存端口冲突或工作负载不平衡,进一步增加SpMV任务延迟,最终得到较差的BU。
目前针对并行处理时随机访问冲突的问题,主要有三种解决方案。第一种方案使矩阵中的非零元素按照列号在处理元素(PE,Processing Element)中顺序执行,从而将对输入向量的随机访问转换成顺序访问。但是,这种执行方式在并行模式下容易发生部分和的写后读冲突以及PE间的相互等待,从而导致更长的任务延迟和较差的BU。第二种方案是在存储非零元素的位置信息时,直接用非零元素参与乘法运算时所需的向量元素替换非零元素的列号。在存储稀疏矩阵时,列号是32位整型数据,向量元素是64位双精度浮点数据,因此,在矩阵足够稀疏时,该方案可以取得较好的性能。然而,当矩阵不是那么稀疏时,就无法忽略该方法造成的数据冗余。最后一种方案通过利用现有的FPGA片上的大容量BRAM,将所有向量元素加载到片上存储中。然后,以减少同时访问造成的端口冲突为目的,将非零数据重新排序。但是,该方法受非零数据在矩阵中的分布的限制,不能消除所有的端口冲突,对于一些矩阵反而导致了更差的BU。另外,该方法还存在非零元素重排序算法复杂度较高的问题。总的来说,现有的工作不能很好地处理并行模式下需要同时进行多个随机访问的问题,从而造成更多的数据冗余或更长的延迟。基于以上分析,在尽量少的产生数据冗余的情况下,减少随机访问带来的任务延迟,将对提高SpMV任务的BU产生重要作用。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本发明的目的在于提出一种高带宽利用率的稀疏矩阵向量相乘加速装置,用于提升SpMV任务的带宽利用率。
为达上述目的,本发明第一方面实施例提出了一种高带宽利用率的稀疏矩阵向量相乘加速装置,包括:解码器、无读冲突的输入向量缓存、计算单元阵列、无写冲突的加法器树、支持乒乓的累加器组、存储部分和及结果向量的缓存;其中,
所述解码器用于对预处理后的目标矩阵进行解码,其中,所述解码器将所述目标矩阵中的向量元素解码后传入所述无读冲突的输入向量缓存,将所述目标矩阵中的非零元素解码后传入所述计算单元阵列;
所述计算单元阵列用于根据所述非零元素的列号从所述无读冲突的输入向量缓存中读取相应的向量元素,再将所述向量元素和所述非零数据相乘,将得到的相乘结果和所述非零元素的行号传入所述无写冲突的加法器树;
所述无写冲突的加法器树用于将所述行号相同的所述相乘结果进行相加,将得到的相加结果传入累加器中;
所述支持乒乓的累加器组用于所述相加结果累加。
另外,根据本发明上述实施例的一种高带宽利用率的稀疏矩阵向量相乘加速装置还可以具有以下附加的技术特征:
进一步地,在本发明的一个实施例中,还包括预处理模块,用于对目标矩阵进行预处理,包括对所述目标矩阵进行纵向划分为多个块,对所述多个块中的每个块进行横向划分为多个批次。
进一步地,在本发明的一个实施例中,所述无读冲突的输入向量缓存,还用于:
以4个块随机存取存储器BRAM为一组BRAM,使用两组BRAM分别存储所述非零元素和所述非零元素副本;对于所述无读冲突的输入向量缓存中的每一组BRAM使用两个4对1的多路选择器从所述每一组BRAM中的4个BRAM中读取2个非零元素或非零元素副本;其中,所述每一组BRAM的端口以分时复用的方式工作。
进一步地,在本发明的一个实施例中,所述无写冲突的加法器树,还用于:
将所述相乘结果和0通过寄存器存储;
将所述相乘结果分别发送到4个2选1的多路选择器,所述多路选择器的其他输入为0;
将所述4个2选1的多路选择器的读取结果通过两个10级流水的加法器相加,并将所述两个10级流水的加法器的相加结果通过寄存器存储;
将所述两个10级流水的加法器的相加结果用另一个10级流水加法器相加,将所述另一个10级流水加法器的相加结果通过寄存器存储;
通过一个8选4的交叉阵列开关选择4个寄存器的存储数据作为部分和输出,以消除将所述行号相同的所述相乘结果进行相加产生的写后读冲突。
进一步地,在本发明的一个实施例中,所述支持乒乓的累加器组,还用于:
在所述目标矩阵的每个批次的数据计算完成后,将得到的累加结果写入所述存储部分和及结果向量的缓存中。
进一步地,在本发明的一个实施例中,所述支持乒乓的累加器组,还用于:
根据所述累加器组中的独立累加器计算每个批次的数据;
通过在所述独立累加器中添加2个额外的寄存器实现批次间的切换,以实现隐藏部分和的加载和存储部分和的开销。
本发明实施例提出的高带宽利用率的稀疏矩阵向量相乘加速装置,通过对部分向量进行复制,增加了片上缓存的读写端口,解决了并行模式下端口冲突的问题。并且,通过无冲突加法器树的设计,消除了部分和的写后读冲突,进一步减少SpMV任务延迟,得到更高的带宽利用率。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明实施例所提供的一种高带宽利用率的稀疏矩阵向量相乘加速装置的示意图。
图2为本发明实施例提供的无读冲突向量缓存的示意图;
图3为本发明实施例提供的无写冲突加法器树的示意图;
图4为本发明实施例提供的实施方法示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
下面参考附图描述本发明实施例的高带宽利用率的稀疏矩阵向量相乘加速装置。
实施例1
图1为本发明实施例所提供的一种高带宽利用率的稀疏矩阵向量相乘加速装置的示意图。
如图1所示,该高带宽利用率的稀疏矩阵向量相乘加速装置包括:解码器、无读冲突的输入向量缓存、计算单元阵列、无写冲突的加法器树、支持乒乓的累加器组、存储部分和及结果向量的缓存;其中,
解码器用于对预处理后的目标矩阵进行解码,其中,解码器将目标矩阵中的向量元素解码后传入无读冲突的输入向量缓存,将目标矩阵中的非零元素解码后传入计算单元阵列;
计算单元阵列用于根据非零元素的列号从无读冲突的输入向量缓存中读取相应的向量元素,再将向量元素和非零数据相乘,将得到的相乘结果和所零元素的行号传入无写冲突的加法器树;
无写冲突的加法器树用于将行号相同的相乘结果进行相加,将得到的相加结果传入累加器中;
支持乒乓的累加器组用于相加结果累加。
进一步地,在本发明的一个实施例中,还包括预处理模块,用于对目标矩阵进行预处理,包括对目标矩阵进行纵向划分为多个块,对多个块中的每个块进行横向划分为多个批次。
本发明首先对矩阵进行划分。在SpMV中,向量元素的个数与矩阵的列数相同,因此当矩阵规模较大时,片上存储空间不足以一次性存储全部的向量元素及其副本。因此,在本发明中对矩阵进行纵向划分为多个块,每个块在进行SpMV运算时所需的向量为原向量的一个子集。此外,由于FPGA的资源限制,本发明将矩阵中的一个块横向划分为多个批次。在执行时,各个块之间顺序执行,每个块将得到一个部分和向量,将各个块的部分和向量相加即可得到最终的结果向量。当一个块执行时,块中的各个批次间顺序执行,每个批次的结果为该块的部分和向量的子集。
解码器对片外带宽传入的数据进行解码。对于向量元素,解码器将其解码后传入无读冲突的输入向量缓存中。对于矩阵非零元素,解码器将其解码后传入计算单元阵列。输入向量缓存对输入的向量进行复制并将输入向量及其副本存储在BRAM中。计算单元阵列中每个PE根据传入的非零元素的列号从输入向量缓存中读取相应的向量元素,再将取出的向量元素和传入的非零数据相乘,将得到的乘法结果和非零元素的行号传入无写冲突的加法器树。在加法器树中,将PE产生的行号相同的部分和进行相加,将结果传入累加器中。累加器将输入的向量和累加,并在每一批数据计算完成后,将累加结果写入结果向量缓存中。
进一步地,在本发明的一个实施例中,所述无读冲突的输入向量缓存,还用于:
以4个块随机存取存储器BRAM为一组BRAM,使用两组BRAM分别存储所述非零元素和所述非零元素副本;对于所述无读冲突的输入向量缓存中的每一组BRAM使用两个4对1的多路选择器从所述每一组BRAM中的4个BRAM中读取2个非零元素或非零元素副本;其中,所述每一组BRAM的端口以分时复用的方式工作。
为消除随机访问造成的端口冲突,本发明设计了一个无读冲突的输入向量缓存。为简化控制逻辑,在本发明中使用坐标格式(COO,COOrdinate format)来存储矩阵非零元素。对于一个非零元素,COO中包括一个64位双精度浮点值、一个32位的行号和一个32位的列号。基于该种格式,512位的片外带宽每周期可以从DRAM中读取四个非零元素到解码器。解码器将其解码后,将四个64位的双精度浮点值分别存入四个FIFO中,从而使得每个PE都可以独立地访问矩阵元素。因为PE阵列的并行度较高,所以矩阵元素的消耗速率几乎与加载速率相同,因此这里所使用的FIFO的深度很小。通过这种方式,使得PE可以并行加载四个矩阵元素,但是也导致了四个不规则的对向量的随机访问。而FPGA上BRAM通常只有两个读写端口,为了扩展其读写端口,本发明中设计了一个无读冲突的向量缓存。
如图3所示,512位的片外带宽每个周期可以加载8个64位的双精度浮点向量元素,而每个BRAM只能提供两个访存端口,因此本发明将4个BRAM视为一组,使用两组BRAM分别存储传入的原向量和向量副本。对于每组BRAM,使用两个4对1的多路选择器(MUX,multiplexer)从4个BRAM中读取2个向量元素。两组BRAM中存储的向量元素是相同的,而每组可以提供2个独立的访存端口,因此两组BRAM最终可以为PE阵列提供4个独立的读写端口。但是,在写入向量元素时,向量缓存中的每个BRAM也需要提供两个读写端口,这会产生每个BRAM需要4个读写端口的误解。实际上,BRAM端口以分时复用的方式工作。即BRAM不会同时写和读向量元素,当BRAM从片外DRAM加载向量元素时,这些端口作为写端口工作,在执行乘法操作时,这些端口作为读端口工作。
进一步地,在本发明的一个实施例中,所述无写冲突的加法器树,还用于:
将所述相乘结果和0通过寄存器存储;
将所述相乘结果分别发送到4个2选1的多路选择器,所述多路选择器的其他输入为0;
将所述4个2选1的多路选择器的读取结果通过两个10级流水的加法器相加,并将所述两个10级流水的加法器的相加结果通过寄存器存储;
将所述两个10级流水的加法器的相加结果用另一个10级流水加法器相加,将所述另一个10级流水加法器的相加结果通过寄存器存储;
通过一个8选4的交叉阵列开关选择4个寄存器的存储数据作为部分和输出,以消除将所述行号相同的所述相乘结果进行相加产生的写后读冲突。
当四个PE中部分PE处理的非零元素在同一行时,这些在同一行的非零元素参与乘法后产生部分和将产生写后读冲突,为了消除这一冲突,本发明设计了一个无写冲突的加法器树。如图3所示,图中的方框表示寄存器。来自PE阵列的乘法结果P0,0,P0,1,P0,2,和P0,3作为加法器树的输入。然后,乘法结果被分别发送到4个2选1MUX(M0、M1、M2和M3),MUX的其他输入都是0。接下来,使用两个10级流水的加法器将M0、M1、M2和M3的结果相加,并使用寄存器a1,3和a2,3存储相加后的结果。然后,再用另一个10级流水加法器将之前的加法结果相加,并存储在寄存器a3,5中。最后,我们使用一个8选4的交叉阵列开关来选择4个部分和作为输出。通过控制MUX和交叉阵列开关,加法器树可以消除各种写冲突。例如,在部分和P0,0、和P2,0发生冲突时,加法器1的输入被设置为P0,0和0,而加法器2的输入被设置为P2,0和0。之后,加法器3将加法器1和加法器2的结果相加存入寄存器a3,5中。最后,通过选择P1,5、P3,5、a3,5和0作为最终的输出,从而消除了P0,0和P2,0之间的冲突。
进一步地,在本发明的一个实施例中,所述支持乒乓的累加器组,还用于:
在所述目标矩阵的每个批次的数据计算完成后,将得到的累加结果写入所述存储部分和及结果向量的缓存中。
进一步地,在本发明的一个实施例中,所述支持乒乓的累加器组,还用于:
根据所述累加器组中的独立累加器计算每个批次的数据;
通过在所述独立累加器中添加2个额外的寄存器实现批次间的切换,以实现隐藏部分和的加载和存储部分和的开销。
在加法器树之后,部分和及其对应的行号被发送到累加器组中,为了消除块之间向量相加产生的延迟,本发明设计了一个类乒乓的累加器组。该累加器组中包含许多独立的累加器,每个累加器负责每个批次中的某一行的部分和。通常,一个累加器中会包含一个寄存器来锁存累加的结果,如图中白色背景reg所示,将其标记为R1。但是,由于我们的方法涉及到批次间的切换,所以在累加器进行累加前需要从部分和缓存中读取该批次已得到的部分和,并在计算后将该批次的部分和传输到部分和缓存中。为了隐藏部分和存取开销,我们在一个累加器中添加了2个寄存器如图1中深灰和浅灰色背景的方框所示,我们将其分别标记为R2、R3。为了实现快速的批次间的切换,这三个寄存器以一种类似于乒乓的方式工作。执行第一批次时,R1和R2分别用于当前批的累加计算、从部分和缓存中加载第二个批次的部分和,R3则闲置。执行第二个批次时,R2、R3和R1分别用于:执行当前批次的累加计算、从部分和缓存中读取第三个批次的部分和、将第一个批次得到的部分和存储到部分和缓存。按照上述切换规则,可以完全隐藏部分和的加载和存储部分和的开销。
实施例2
以下为说明本发明的具体实施方法。
步骤一:对矩阵进行划分,将所示的矩阵纵向按照214大小分成多个块,即每个块中包含214列。并将其向量划分为相应的子集,即每个向量子集中包含214个元素。然后将每一块矩阵横向按照64大小分成多个批次。最后将划分后的矩阵非零元素数据按照每一块先传入其对应的向量子集,然后依次传入各批次的非零值信息的顺序排列。如图4所示,是矩阵划分的一个示例。由于实际划分后得到的批次规模较大,因此图中只给出了划分后的矩阵的第一个批次的一个6×6的局部以及其对应的第一个向量子集的局部。
步骤二:首先处理第一批次的非零元素。由于第一批次是由第一块划分得到的,并且还没有第一块中的批次被处理过,所以首先将第一块对应向量子集传入片上,图中所示的向量为{1,2,3,4,5,6}。向量元素经过512位片外带宽传入片上,6个64位向量元素值仅需要1个周期即可传输完毕。解码器将向量元素解码后写入无读冲突向量缓存,读冲突向量缓存将传入的向量复制并存储,此时矩阵缓存没有数据写入。在向量元素传输完成后,
开始传输矩阵数据。注意,如果处理的批次不是所在块的第一个批次,则跳过传输向量直5接传输矩阵非零元素。由于一个矩阵非零元素数据为128位(64位非零值、32位行号和32位列号),所以每周期仅能传输4个非零数据。如图4所示在步骤二时首先将1到4的非零元素传到片上,经过解码器后将非零元素值和列号传入到PE阵列中。此时,除了图中所示的数据操作,累加器中的两个寄存器开始加载下一个批次的部分和,以及存储上一个批次的部分和。
0步骤三:PE阵列中包含4个PE,每个PE获得一个非零元素值及其列号,根据其列号
得到向量在无读冲突向量缓存中的地址,向量缓存得到地址后将相应的向量值读出传输给相应的PE。如图4周期2所示,PE1根据列号4从向量缓存中读取出向量值5,其他PE同理,并且各个PE间的操作都是完全独立的。此外,在PE完成这一操作的同时,下一组非
零元素数据经过片外带宽传到片上进行步骤二中的操作。在本发明中,采用流水线的方式,5从而实现步骤三进行时,步骤二可以在不同硬件中同时进行,其余步骤同理。
步骤四:PE将非零元素值和上一步骤获得的向量元素值在周期3时相乘得到乘法结果,并将结果传入到加法器树中。并且之前解码器得到的行号经由寄存器存储后,和非零元素值同时传入加法器树。即,PE1将1和5相乘得到部分和为5,并且非零元素1对应的行号为0也一起被传入加法器树中。
0步骤五:步骤四将部分和{5,4,3,8}和行号{0,1,2,2}传入无写冲突加法器树中,
其中加粗的{3,8}具有相同的行号,在加法器树中将3和8相加,并且将8置0。加法器树输出的部分和为{5,4,11,0},行号为{0,1,2,2}。然后将得到的部分和及行号传给累加器组。
步骤六:在累加器组中,5、4、11分别被传给编号为0、1、2的累加器进行累加。
5步骤七:循环步骤2-6,直到矩阵划分后得到的所有批次做完,得到最终的向量结果。
本发明实施例提出的高带宽利用率的稀疏矩阵向量相乘加速装置,通过对部分向量进行复制,增加了片上缓存的读写端口,解决了并行模式下端口冲突的问题。并且,通过无冲突加法器树的设计,消除了部分和的写后读冲突,进一步减少SpMV任务延迟,得到更高的带宽利用率。
0在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具
体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (6)
1.一种高带宽利用率的稀疏矩阵向量相乘加速装置,其特征在于,包括:解码器、无读冲突的输入向量缓存、计算单元阵列、无写冲突的加法器树、支持乒乓的累加器组、存储部分和及结果向量的缓存;其中,
所述解码器用于对预处理后的目标矩阵进行解码,其中,所述解码器将所述目标矩阵中的向量元素解码后传入所述无读冲突的输入向量缓存,将所述目标矩阵中的非零元素解码后传入所述计算单元阵列;
所述计算单元阵列用于根据所述非零元素的列号从所述无读冲突的输入向量缓存中读取相应的向量元素,再将所述向量元素和所述非零数据相乘,将得到的相乘结果和所述非零元素的行号传入所述无写冲突的加法器树;
所述无写冲突的加法器树用于将所述行号相同的所述相乘结果进行相加,将得到的相加结果传入累加器中;
所述支持乒乓的累加器组用于所述相加结果累加。
2.根据权利要求1所述的装置,其特征在于,还包括预处理模块,用于对目标矩阵进行预处理,包括对所述目标矩阵进行纵向划分为多个块,对所述多个块中的每个块进行横向划分为多个批次。
3.根据权利要求1所述的装置,其特征在于,所述无读冲突的输入向量缓存,还用于:
以4个块随机存取存储器BRAM为一组BRAM,使用两组BRAM分别存储所述非零元素和所述非零元素副本;对于所述无读冲突的输入向量缓存中的每一组BRAM使用两个4对1的多路选择器从所述每一组BRAM中的4个BRAM中读取2个非零元素或非零元素副本;其中,所述每一组BRAM的端口以分时复用的方式工作。
4.根据权利要求1所述的装置,其特征在于,所述无写冲突的加法器树,还用于:
将所述相乘结果和0通过寄存器存储;
将所述相乘结果分别发送到4个2选1的多路选择器,所述多路选择器的其他输入为0;
将所述4个2选1的多路选择器的读取结果通过两个10级流水的加法器相加,并将所述两个10级流水的加法器的相加结果通过寄存器存储;
将所述两个10级流水的加法器的相加结果用另一个10级流水加法器相加,将所述另一个10级流水加法器的相加结果通过寄存器存储;
通过一个8选4的交叉阵列开关选择4个寄存器的存储数据作为部分和输出,以消除将所述行号相同的所述相乘结果进行相加产生的写后读冲突。
5.根据权利要求1或2所述的装置,其特征在于,所述支持乒乓的累加器组,还用于:
在所述目标矩阵的每个批次的数据计算完成后,将得到的累加结果写入所述存储部分和及结果向量的缓存中。
6.根据权利要求5所述的装置,其特征在于,所述支持乒乓的累加器组,还用于:
根据所述累加器组中的独立累加器计算每个批次的数据;
通过在所述独立累加器中添加2个额外的寄存器实现批次间的切换,以实现隐藏部分和的加载和存储部分和的开销。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310019434.5A CN117150192A (zh) | 2023-01-06 | 2023-01-06 | 一种高带宽利用率的稀疏矩阵向量相乘加速装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310019434.5A CN117150192A (zh) | 2023-01-06 | 2023-01-06 | 一种高带宽利用率的稀疏矩阵向量相乘加速装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117150192A true CN117150192A (zh) | 2023-12-01 |
Family
ID=88901422
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310019434.5A Pending CN117150192A (zh) | 2023-01-06 | 2023-01-06 | 一种高带宽利用率的稀疏矩阵向量相乘加速装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117150192A (zh) |
-
2023
- 2023-01-06 CN CN202310019434.5A patent/CN117150192A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11693657B2 (en) | Methods for performing fused-multiply-add operations on serially allocated data within a processing-in-memory capable memory device, and related memory devices and systems | |
US20180341495A1 (en) | Hardware Accelerator for Convolutional Neural Networks and Method of Operation Thereof | |
US8713080B2 (en) | Circuit for compressing data and a processor employing same | |
KR101202445B1 (ko) | 프로세서 | |
CN111915001B (zh) | 卷积计算引擎、人工智能芯片以及数据处理方法 | |
CN109977347B (zh) | 一种支持多模式配置的可重构fft处理器 | |
US11934824B2 (en) | Methods for performing processing-in-memory operations, and related memory devices and systems | |
US9798543B2 (en) | Fast mapping table register file allocation algorithm for SIMT processors | |
US11061741B2 (en) | Techniques for efficiently performing data reductions in parallel processing units | |
KR20190028426A (ko) | Simd 아키텍처에서 레인 셔플을 위한 셔플러 회로 | |
CN111656339A (zh) | 存储器装置及其控制方法 | |
Liu et al. | Towards high-bandwidth-Utilization SpMV on FPGAs via partial vector duplication | |
US11475102B2 (en) | Adaptive matrix multiplication accelerator for machine learning and deep learning applications | |
Li et al. | Optimized data reuse via reordering for sparse matrix-vector multiplication on fpgas | |
US20230176981A1 (en) | Data processing method and acceleration unit | |
CN117150192A (zh) | 一种高带宽利用率的稀疏矩阵向量相乘加速装置 | |
CN110989970A (zh) | 一种双精度浮点矩阵运算处理器及方法 | |
Nishimura et al. | Accelerating the Smith-waterman algorithm using bitwise parallel bulk computation technique on GPU | |
US11409840B2 (en) | Dynamically adaptable arrays for vector and matrix operations | |
CN111522776B (zh) | 一种计算架构 | |
Zhang et al. | Yolov3-tiny Object Detection SoC Based on FPGA Platform | |
US8219372B1 (en) | Computer-readable medium, method and computing device for N-body computations using parallel computation systems | |
CN114116012B (zh) | 基于混洗操作的fft码位反序算法向量化实现方法及装置 | |
US20230153261A1 (en) | Processor and arithmetic processing method | |
Ali et al. | A bandwidth in-sensitive low stall sparse matrix vector multiplication architecture on reconfigurable fpga platform |
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 |