CN118245110A - 面向稀疏矩阵向量乘计算的软硬件协同设计方法和框架 - Google Patents

面向稀疏矩阵向量乘计算的软硬件协同设计方法和框架 Download PDF

Info

Publication number
CN118245110A
CN118245110A CN202311757741.XA CN202311757741A CN118245110A CN 118245110 A CN118245110 A CN 118245110A CN 202311757741 A CN202311757741 A CN 202311757741A CN 118245110 A CN118245110 A CN 118245110A
Authority
CN
China
Prior art keywords
data
matrix
vector
parameter combination
batch
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
Application number
CN202311757741.XA
Other languages
English (en)
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.)
Chongqing University
Original Assignee
Chongqing 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 Chongqing University filed Critical Chongqing University
Priority to CN202311757741.XA priority Critical patent/CN118245110A/zh
Publication of CN118245110A publication Critical patent/CN118245110A/zh
Pending legal-status Critical Current

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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • 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
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Complex Calculations (AREA)

Abstract

本申请提出了一种面向稀疏矩阵向量乘计算的软硬件协同设计方法,涉及计算机体系结构技术领域,其中,该方法包括:根据矩阵参数和设备参数定义可扩展的压缩数据格式;评估不同的参数组合在矩阵上的性能,确定最优参数组合,其中,最优参数组合包括批次高度H、批次宽度W、组大小N、端口数量P;基于最优参数组合,根据预定义的模板确定硬件参数,并确定对应的SpMV加速器;基于最优参数组合和定义的可扩展的压缩数据格式,使用重排序算法对矩阵和对应的向量进行数据打包,生成压缩存储数据并在SpMV加速器上执行,完成矩阵向量的乘计算。采用上述方案的本发明能够有效提升SpMV任务的带宽利用率。

Description

面向稀疏矩阵向量乘计算的软硬件协同设计方法和框架
技术领域
本申请涉及计算机体系结构技术领域,尤其涉及面向稀疏矩阵向量乘计算的软硬件协同设计方法和框架。
背景技术
SpMV是图计算、神经网络、经济建模等科学或工程应用中广泛应用的核心算法。由于在这些应用程序中SpMV通常占据主要的执行时间,因此需要一个高性能的SpMV加速器。而FPGA具有较大的片外带宽、可定制的逻辑单元和高性能的浮点单元,是加速SpMV的合适平台。
由于SpMV中的矩阵包含大量零元素,所以通常对其进行压缩,使计算中只包含非零元素及其行列索引。在压缩矩阵之后,SpMV成为了一个受内存约束的问题。对于给定位宽的片外存储器接口,如何充分利用带宽对SpMV的性能至关重要。因此,带宽利用率(BU)是基于FPGA的SpMV加速器广泛采用的指标。对于固定长度的数据行,即从片外存储器传输到片上存储器的最小数据移动单元,在数据行中存放更多的非零元素及其索引可以提高BU。同时进行更多的乘法运算需要更多被并行处理的非零元素,也就需要更多对向量元素的随机访问。然而,使用传统的内存划分方法也无法有效应对大量的并行数据访问,因此很容易发生访问冲突,导致流水线停滞和较差的BU。因此,如何处理这种不规则的内存访问对于SpMV加速器是一个很有挑战的任务。
为了应对上述挑战,现有工作主要分为四种。第一种方法通过按列执行SpMV,将不规则的向量访问转换为流式访问从而使向量元素可以得到最大程度的重用。然而,按列执行很容易发生部分和的读后写问题,从而导致更长的延迟和较差的BU。第二种方法设计一种新的数据格式,在这种格式中列索引会被对应的向量元素替代。但是,在没有任何向量元素复用的情况下,数据行可以包含的非零元素就会减少,这就会导致糟糕的BU。第三种对非零元素重排序,以便将具有相同列索引的非零元素分配到同一数据行中。通过部分数据重用,数据行中需要的列索引就更少,从而提供了实现更高BU的机会。然而,重排序的效果,即有多少非零元素可以共享同一个非零元素,高度依赖于稀疏矩阵中非零元素的分布,导致对不同矩阵的BU结果产生很大干扰。最后一种方法通过部分向量复制为向量元素访问提供了更多的端口。由于只在硬件层面做了优化,这种方法只能取得有限的BU。现有的工作或把重点放在软件层面的优化,或专注于硬件层面的优化。因此,他们无法在各种不同的矩阵上都取得最优的性能。
发明内容
本申请旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本申请的第一个目的在于提出一种面向稀疏矩阵向量乘计算的软硬件协同设计方法,用于提升SpMV任务的带宽利用率。
本申请的第二个目的在于提出一种面向稀疏矩阵向量乘计算的软硬件协同设计框架。
为达上述目的,本申请第一方面实施例提出了一种面向稀疏矩阵向量乘计算的软硬件协同设计方法,包括:根据矩阵参数和设备参数定义可扩展的压缩数据格式;评估不同的参数组合在矩阵上的性能,确定最优参数组合,其中,最优参数组合包括批次高度H、批次宽度W、组大小N、端口数量P;基于最优参数组合,根据预定义的模板确定硬件参数,并确定对应的SpMV加速器;基于最优参数组合和定义的可扩展的压缩数据格式,使用重排序算法对矩阵和对应的向量进行数据打包,生成压缩存储数据并在SpMV加速器上执行,完成矩阵向量的乘计算。
本申请实施例的面向稀疏矩阵向量乘计算的软硬件协同设计方法,针对特定的稀疏矩阵在软件和硬件上进行设计空间探索。通过为不同的矩阵选择最合适的软硬件参数并基于预定义的硬件模板快速生成适配的加速器来获得最优的性能。
可选地,在本申请的一个实施例中,可扩展的压缩数据格式包括头区域、重用标志区域和类COO数据区域,每个区域使用一条或多条数据行,头区域包括标识批次的头标识符、复用标志行数、行索引基址和列索引基址,类COO数据区域的每一行由N个非零元素及其行索引和列索引组成,每一行包含P个用来获取向量元素的列索引,每一行还包含N-P个用来复用来自同一组或前面相邻组的向量元素的非零元素,其中,P/2≤BS,BS为目标器件的BRAM大小。
可选地,在本申请的一个实施例中,评估不同的参数组合在矩阵上的性能,确定最优参数组合,包括:
获取不同的参数组合(N,P,H,W)、矩阵和加速器流水线深度;
选定当前评估的参数组合(N,P,H,W),并根据参数H和W将矩阵划分为多个批次;
对每个批次进行评估,并基于所有批次的评估结果和加速器流水线深度确定当前评估的参数组合的周期数;
将周期数最少的参数组合确定为最优参数组合。
可选地,在本申请的一个实施例中,对当前批次进行评估,包括:
对当前批次统计得到单个元素的数量Ns、复用列的数量Nr、所有复用列中的非零元素数量Ne、矩阵中非零元素总数Nnz和数据分组后剩余的不能复用向量元素的单个元素数量residue,其中,
根据residue和Nnz计算得到组的数量作为当前批次的评估结果;
基于所有批次的评估结果和加速器流水线深度确定当前评估的参数组合的周期数,包括:
基于所有批次的组的数量、数据头数量、块切换开销确定当前评估参数组合的周期数。
可选地,在本申请的一个实施例中,基于最优参数组合和定义的可扩展的压缩数据格式,使用重排序算法对矩阵和对应的向量进行数据打包,包括:
使用重排序算法对矩阵进行预处理,并将预处理后的矩阵和对应的向量存储在DRAM中;
根据确定的最优参数组合(N,P,H,W)对存储在DRAM中的矩阵和对应的向量进行划分,得到不同批次的数据;
在数据打包过程中,将不同批次的数据按照压缩数据格式的头、重用标志行和类COO的数据附加到输出文件中。
可选地,在本申请的一个实施例中,压缩存储数据在SpMV加速器上的执行包括数据准备阶段、数据处理阶段、数据累加阶段和数据写回阶段,加速器包括解码器、矩阵缓冲区、向量缓冲区、复用标志FIFO、向量扩展模块、PE阵列、无冲突加法器树、交叉阵列开关、累加器、URAM,压缩存储数据在SpMV加速器上的执行过程包括:
在数据准备阶段,通过解码器将块对应的向量段从DRAM加载并存储在向量缓冲区中,并将按照压缩数据格式存储的数据通过解码器从DRAM以流水线方式发送到复用标志FIFO或矩阵缓冲区中,并使用向量扩展模块根据复用标志FIFO中的复用标志将向量元素数量从P扩展到N;
在数据处理阶段,使用PE阵列中的N个PE对数据准备阶段产生的N对矩阵元素和向量元素进行乘法运算,并使用无冲突加法器树对乘法运算结果进行累加;
在数据累加阶段,将无冲突加法器树的结果通过交叉阵列开关传到对应的累加器中进行累加;
在数据写回阶段,在当前批次的数据执行结束后,将对应的部分和写回到URAM,在整个矩阵完成后,将URAM中的结果写回到片外DRAM中。
可选地,在本申请的一个实施例中,确定对应的SpMV加速器,包括:
通过5阶段浮点数加法器和20阶段浮点数乘法器实现PE阵列、无冲突加法器树和累加器,其中,每个累加器包括第一寄存器组、第二寄存器组和第三寄存器组,第一寄存器组组保存当前批次的部分和,第二寄存器组保存上一批次计算得到的数据并写回URAM,第三寄存器组从URAM预取下一批次的部分和,URAM的接口构造有高带宽片上数据总线,用于保证在当前批次的执行过程中回写上一批次计算的结果,并获取获取下一批次的所有初始部分和。
可选地,在本申请的一个实施例中,使用无冲突加法器树对乘法运算结果进行累加,包括:
对输入的部分和进行重新排序,使得具有相同行索引的部分和彼此相邻;
将排序后的部分和分成若干组,发送给多个子树进行累加,得到相应的结果;
将无冲突加法器树的结果通过交叉阵列开关传到对应的累加器中进行累加,包括:
对于每个组,使用一个完整的交叉阵列开关从相应的子树中选择对应的结果,其中,选择过程包括:
若一个部分和与另一个部分和相加,则完整的交叉阵列开关选择零作为输出,并发送到下一阶段,若不同组的输出之间有冲突的部分和,则通过一个边界加法器将冲突的结果累加。
为达上述目的,本发明第二方面实施例提出了一种面向稀疏矩阵向量乘计算的软硬件协同设计框架,包括压缩数据格式定义模块、最优参数组合选择模块、SpMV加速器确定模块、计算模块,其中,
压缩数据格式定义模块,用于根据矩阵参数和设备参数定义可扩展的压缩数据格式;
最优参数组合选择模块,用于评估不同的参数组合在矩阵上的性能,确定最优参数组合,其中,最优参数组合包括批次高度H、批次宽度W、组大小N、端口数量P;
SpMV加速器确定模块,用于基于最优参数组合,根据预定义的模板确定硬件参数,并确定对应的SpMV加速器;
计算模块,用于基于最优参数组合和定义的可扩展的压缩数据格式,使用重排序算法对矩阵和对应的向量进行数据打包,生成压缩存储数据并在SpMV加速器上执行,完成矩阵向量的乘计算。
可选地,在本申请的一个实施例中,可扩展的压缩数据格式包括头区域、重用标志区域和类COO数据区域,每个区域使用一条或多条数据行,头区域包括标识批次的头标识符、复用标志行数、行索引基址和列索引基址,类COO数据区域的每一行由N个非零元素及其行索引和列索引组成,每一行包含P个用来获取向量元素的列索引,每一行还包含N-P个用来复用来自同一组或前面相邻组的向量元素的非零元素,其中,P/2≤BS,BS为目标器件的BRAM大小。
本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本申请实施例一所提供的一种面向稀疏矩阵向量乘计算的软硬件协同设计方法的流程示意图;
图2为本申请实施例的软硬件联合优化框架工作流程示意图;
图3为本申请实施例的数据格式示意图;
图4为本申请实施例的预定义的硬件模板示意图;
图5为本申请实施例的面向稀疏矩阵向量乘计算的敏捷软硬件协同设计流程示例图;
图6为本申请实施例提供的一种面向稀疏矩阵向量乘计算的敏捷软硬件协同设计框架的结构示意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。
下面参考附图描述本申请实施例的面向稀疏矩阵向量乘计算的软硬件协同设计方法和装置。
图1为本申请实施例一所提供的一种面向稀疏矩阵向量乘计算的软硬件协同设计方法的流程示意图。
如图1所示,该面向稀疏矩阵向量乘计算的软硬件协同设计方法包括以下步骤:
步骤101,根据矩阵参数和设备参数定义可扩展的压缩数据格式;
步骤102,评估不同的参数组合在矩阵上的性能,确定最优参数组合,其中,最优参数组合包括批次高度H、批次宽度W、组大小N、端口数量P;
步骤103,基于最优参数组合,根据预定义的模板确定硬件参数,并确定对应的SpMV加速器;
步骤104,基于最优参数组合和定义的可扩展的压缩数据格式,使用重排序算法对矩阵和对应的向量进行数据打包,生成压缩存储数据并在SpMV加速器上执行,完成矩阵向量的乘计算。
本申请实施例的面向稀疏矩阵向量乘计算的软硬件协同设计方法,针对特定的稀疏矩阵在软件和硬件上进行设计空间探索。通过为不同的矩阵选择最合适的软硬件参数并基于预定义的硬件模板快速生成适配的加速器来获得最优的性能。
可选地,在本申请的一个实施例中,可扩展的压缩数据格式包括头区域、重用标志区域和类COO数据区域,每个区域使用一条或多条数据行,头区域包括标识批次的头标识符、复用标志行数、行索引基址和列索引基址,类COO数据区域的每一行由N个非零元素及其行索引和列索引组成,每一行包含P个用来获取向量元素的列索引,每一行还包含N-P个用来复用来自同一组或前面相邻组的向量元素的非零元素,其中,P/2≤BS,BS为目标器件的BRAM大小。
可选地,在本申请的一个实施例中,评估不同的参数组合在矩阵上的性能,确定最优参数组合,包括:
获取不同的参数组合(N,P,H,W)、矩阵和加速器流水线深度;
选定当前评估的参数组合(N,P,H,W),并根据参数H和W将矩阵划分为多个批次;
对每个批次进行评估,并基于所有批次的评估结果和加速器流水线深度确定当前评估的参数组合的周期数;
将周期数最少的参数组合确定为最优参数组合。
可选地,在本申请的一个实施例中,对当前批次进行评估,包括:
对当前批次统计得到单个元素的数量Ns、复用列的数量Nr、所有复用列中的非零元素数量Ne、矩阵中非零元素总数Nnz和数据分组后剩余的不能复用向量元素的单个元素数量residue,其中,
根据residue和Nnz计算得到组的数量作为当前批次的评估结果;
基于所有批次的评估结果和加速器流水线深度确定当前评估的参数组合的周期数,包括:
基于所有批次的组的数量、数据头数量、块切换开销确定当前评估参数组合的周期数。
可选地,在本申请的一个实施例中,基于最优参数组合和定义的可扩展的压缩数据格式,使用重排序算法对矩阵和对应的向量进行数据打包,包括:
使用重排序算法对矩阵进行预处理,并将预处理后的矩阵和对应的向量存储在DRAM中;
根据确定的最优参数组合(N,P,H,W)对存储在DRAM中的矩阵和对应的向量进行划分,得到不同批次的数据;
在数据打包过程中,将不同批次的数据按照压缩数据格式的头、重用标志行和类COO的数据附加到输出文件中。
可选地,在本申请的一个实施例中,压缩存储数据在SpMV加速器上的执行包括数据准备阶段、数据处理阶段、数据累加阶段和数据写回阶段,加速器包括解码器、矩阵缓冲区、向量缓冲区、复用标志FIFO、向量扩展模块、PE阵列、无冲突加法器树、交叉阵列开关、累加器、URAM,压缩存储数据在SpMV加速器上的执行过程包括:
在数据准备阶段,通过解码器将块对应的向量段从DRAM加载并存储在向量缓冲区中,并将按照压缩数据格式存储的数据通过解码器从DRAM以流水线方式发送到复用标志FIFO或矩阵缓冲区中,并使用向量扩展模块根据复用标志FIFO中的复用标志将向量元素数量从P扩展到N;
在数据处理阶段,使用PE阵列中的N个PE对数据准备阶段产生的N对矩阵元素和向量元素进行乘法运算,并使用无冲突加法器树对乘法运算结果进行累加;
在数据累加阶段,将无冲突加法器树的结果通过交叉阵列开关传到对应的累加器中进行累加;
在数据写回阶段,在当前批次的数据执行结束后,将对应的部分和写回到URAM,在整个矩阵完成后,将URAM中的结果写回到片外DRAM中。
可选地,在本申请的一个实施例中,确定对应的SpMV加速器,包括:
通过5阶段浮点数加法器和20阶段浮点数乘法器实现PE阵列、无冲突加法器树和累加器,其中,每个累加器包括第一寄存器组、第二寄存器组和第三寄存器组,第一寄存器组组保存当前批次的部分和,第二寄存器组保存上一批次计算得到的数据并写回URAM,第三寄存器组从URAM预取下一批次的部分和,URAM的接口构造有高带宽片上数据总线,用于保证在当前批次的执行过程中回写上一批次计算的结果,并获取获取下一批次的所有初始部分和。
可选地,在本申请的一个实施例中,使用无冲突加法器树对乘法运算结果进行累加,包括:
对输入的部分和进行重新排序,使得具有相同行索引的部分和彼此相邻;
将排序后的部分和分成若干组,发送给多个子树进行累加,得到相应的结果;
将无冲突加法器树的结果通过交叉阵列开关传到对应的累加器中进行累加,包括:
对于每个组,使用一个完整的交叉阵列开关从相应的子树中选择对应的结果,其中,选择过程包括:
若一个部分和与另一个部分和相加,则完整的交叉阵列开关选择零作为输出,并发送到下一阶段,若不同组的输出之间有冲突的部分和,则通过一个边界加法器将冲突的结果累加。
下面通过两个具体实施例对本申请的面向稀疏矩阵向量乘计算的软硬件协同设计方法进行详细描述。
实施例一
本实施例给出了对软硬件设计空间探索的具体措施,并介绍了相应的硬件模板架构。
在本实施例中,首先定义了软硬件联合设计的工作流程。从软件的角度来看,考虑到资源限制,通常需要将输入矩阵划分为小的批次。因此,批次高度(H)和批次宽度(W)是软件层面探索的前两个因素。此外,对于重排序算法,组大小(N)和端口数量(P)是重要的输入,并且它们也被选为软件层面空间探索的因素。从硬件的角度来看,批次宽度、批次高度、组大小和端口数量主要影响内存组织、处理元素数量、冲突解决结构和累加器数量。因此,主要探索这些硬件参数。具体协同设计工作流程如图2所示:1)根据矩阵和设备的描述定义了一种可扩展的压缩数据格式,使得各种因素组合可以在统一的数据格式下进行探索;2)对不同的参数组合进行性能分析,找到最优的组合;3)基于最优的参数组合,根据预定义的模板确定硬件参数,并实例化对应的SpMV加速器;4)最后,使用重排序算法进行数据打包,并生成最终实现所需的压缩存储数据并在加速器上执行。
在本实施例中,设计了一种可扩展的压缩数据格式。它不仅可以支持设计空间探索,而且对于硬件实现也十分友好。由于数据分组涉及元素的重排序,因此该数据格式是基于COO格式(COOrdinate format)构建的。基于COO格式,还需要考虑两个问题:1)不同大小的批次使用不同位宽度的相对行列索引;2)用于重排序算法中的组大小决定了可以同时处理的非零元素的数量。因此,批次大小和组大小将共同决定数据行的利用率。基于这些考虑,如图3所示,该格式是以批次为单位进行定义的,同一批次中的非零元素将共享行列基址。对于每个批次,数据格式包括3个区域,包括一个头区域、一个重用标志区域和一个类COO数据区域,每个区域将使用一条或多条数据行。
头区域由4个段组成,包括标识批次的头标识符、复用标志行数、行索引基址和列索引基址。假设数据行为512位(后面部分也有相同的假设),复用标志行数、行索引基址和列索引基址分别使用32位,而头标识符使用剩余的416位。类COO数据区域的每一行(512位)由个非零元素及其行索引和列索引组成。每一行只包含()个列索引来获得向量元素,而其余的个非零元素将复用来自同一组或前面相邻组的向量元素。因此,一个组被划分为两个段:一个独立段具有相应的列索引,另一个依赖段必须复用向量元素。对于64位的非零元素,一共需要的位宽应尽可能接近512位。考虑到大多数FPGA中的BRAM只有2个端口,只能通过部分向量复制来增加。重复的向量的存储空间应小于目标器件的BRAM大小(BS),即P÷2≤BS。
由于依赖段中的元素需要复用向量元素,所以需要一个标志区域来表示如何复用向量元素。对于组内复用,依赖段中的每个元素都需要位来区分特定位置。对于组间复用,只支持从上一个数据行中的相同位置进行复用;因此,只需要1位来表示组间复用。因此,对于依赖段中的每个元素,最多需要位的复用标志。对于每条数据行,在复用标志区域需要位。
基于四元组,似乎存在一个巨大的搜索空间。然而,由于位宽和存储的限制,该搜索空间被大大减少。
在本实施例中,提出一种性能分析算法来选择最合适的参数组合。理想情况下,每个组在完全流水线化的执行中占用1个时钟周期。因此,组的数量对性能分析至关重要。为了得到组的数量,引入residue的概念,即数据分组后还剩下多少不能复用向量元素的单个元素。它大致可以表示为:其中Nr,Ne和Ns分别表示复用列(非零元素数量大于1的列)的数量、所有复用列中的非零元素数量和单个元素的数量。基于residue设计性能分析算法。该算法以四元组、矩阵和加速器流水线深度为输入。算法首先将矩阵划分为一系列批次,对于每个批次统计得到Ns、Nr、Ne、Nnz和residue,其中Nnz表示矩阵中非零元素总数。接着,根据residue和Nnz可以计算得到组的数量。最后,用于处理头区域、组和复用标志的时钟周期数被加到输出中。如果发生了块切换,切换的开销也会被加到输出中。
在本实施例中,使用FPGA平台设计硬件模板。如图4所示,硬件模板的总体结构包括数据准备、数据处理、数据累加和数据写回4个阶段。第一个阶段负责数据准备,包括解码器、矩阵缓冲区和向量扩展模块。通过解码器,块对应的向量段先从DRAM加载并存储在向量缓冲区中。然后,以上述数据格式存储的数据通过解码器从DRAM以流水线方式发送到复用标志FIFO或矩阵缓冲区中。由于组大小N大于向量缓冲区的端口数P,所以使用向量扩展模块根据复用标志FIFO中的复用标志将向量元素数量从P扩展到N。在第二个阶段,使用N个PE同时对上一阶段的N对矩阵元素和向量元素进行乘法运算。为了消除具有相同行索引的部分和引起的写入冲突,使用无冲突加法器树提前对这些结果进行累加。在累加阶段,通过交叉阵列开关选择部分和并将其发送到H个累加器进行累加。在写回阶段,一旦当前批次执行结束,对应的部分和就被写回到URAM。如果整个矩阵都已完成,URAM中的结果被写回到片外DRAM中。
在本实施例中,为了实现高速运行,使用5阶段浮点数加法器和20阶段浮点数乘法器来实现PE、加法器树和累加器。为了避免在批次之间切换时发生流水线停滞,在每个累加器中有3个类乒乓的寄存器组,一组保存当前批次的部分和,一组保存上一个批次计算得到的数据并写回URAM,最后一组从URAM预取下一个批次的部分和。为了确保在当前批次的执行过程中能够回写上一个批次计算的结果,并能够获取下一个批次的所有初始部分和,本实施例为URAM接口构造了一个定制的高带宽片上数据总线。
在本实施例中,为了避免同时向同一行写入多个部分和,使用无冲突加法器树预先对具有相同行索引的部分和进行累加。无冲突加法器树模块首先对输入的部分和进行重新排序,使得那些具有相同行索引的部分和彼此相邻;因此,加法器树中用于选择输入的交叉阵列开关可以大大简化。然后,将有序的部分和分成若干组,发送给多个子树进行累加,得到相应的结果。接下来,对于每个组,使用一个完整的交叉阵列开关从相应的子树中选择适当的结果。如果有一个部分和与另一个部分和相加,则完整的交叉阵列开关将选择一个零作为输出,并发送到下一个阶段。如果不同组的输出之间仍然有冲突的部分和,则用一个边界加法器将这些冲突的结果累加。最后,无冲突加法器树模块向后续的累加器输出无冲突的部分和或零。由于该加法器树采用了排序和分组的思想,因此在保持低电路延迟的同时,可以很容易地适配到不同的PE数量。
在本实施例中,基于重排序算法将矩阵进行预处理,按上述数据格式存储在DRAM中。根据确定的四元组(N,P,H,W),在数据打包过程中,头、重用标志行和类COO的数据被附加到输出文件中。该算法匹配可重用的列和单个元素以形成组,有了更多的片上访存端口之后,可以同时使用更多的可重用列进行向量元素复用,并且对可复用列的长度没有太高的要求。
实施例二
图5为本实施例的面向稀疏矩阵向量乘计算的敏捷软硬件协同设计流程示例图,如图5所示,包括:
步骤一:评估不同的参数组合(N,P,H,W)在给定矩阵上的性能差异,具体来讲,如图5(a)所示,根据参数H和参数W将矩阵划分为多个批次,再根据参数N和参数P对每个批次评估大概需要的组的数量,依次评估每个批次,等所有批次都遍历完毕后,将组的数量、数据头数量、块切换等开销相加得到大概需要的周期数。
步骤二:最终选择所需周期数最少的参数组合,如图5(b)所示,选择的参数组合为(5,4,32,65536),即代表一个组最多可以有5个非零元素,有4个访存端口,每个批次的高度为32,而批次的宽度为65536。
步骤三:根据所选择的参数对矩阵划分之后,如图5(c)所示,依次对每个批次进行处理,由于实际划分后的批次规模较大,因此图中只给出划分后批次的一个7×4的局部及其对应向量段的局部。根据所提出的压缩数据格式,可以把批次中的所有非零元素组成为一个个组。图5(d)所示,图中的批次最终可以得到两个组。
步骤四:首先在加速器上处理第一个批次的非零元素。由于第一个批次是第一个块的,且还没有第一块中的其他批次被处理过,所以首先将第一块对应向量段传到片上,图中所示的向量元素为{1,2,3,4,5,6,7},向量元素经过512位片外带宽传到片上,7个64位向量元素值仅需要1个周期即可传输完毕。向量元素经过解码器解码后写入向量缓冲区中,在向量缓冲区中,传入的向量元素被复制并存储。随后是每个批次的头,用于后续复用标志和非零元素行列索引的解码。接着复用标志也被传到片上,经过解码器解码后存入复用FIFO中。随后将步骤三得到的两个组依次传到片上,如图5(e)所示,第一个周期的非零元素为{1,4,5,6,2},第二个周期为{7,8,9,3},组中非零元素对应的行列偏移经过解码器解码后得到完整32位的行列索引。在第二个周期,根据上一周期非零元素的列索引可以从向量缓冲区中读取对应的向量元素,其中依赖段中的非零元素根据复用标志可以得到对应的向量元素。PE阵列中包含N个PE,每个PE负责一对非零元素和向量元素的乘法运算,如图5(e)的第3、4个周期所示。由于本发明中采用了流水线的方式,不同步骤可以同时在不同模块中执行,其余步骤同理。PE阵列得到的部分和会送到无冲突加法器树中,将每一周期中行索引相等的部分和提前累加起来,如图5(e)的第4个周期所示,第3个周期中的部分和{1,15}均位于第0行,同时部分和{8,24,2}都位于第二行,因为第4个周期得到合并后的部分和{16,34}。无冲突加法器树的结果根据行索引通过交叉阵列开关传到对应的累加器中进行累加。当前批次的部分和全部累加完毕后写回到URAM中。
步骤五:循环步骤3-4,知道该矩阵划分后得到的所有批次均运算完毕并得到最终的向量结果。
步骤六:得到的最终向量结果被写回到片外DRAM中,当前SpMV运算完毕。
为了实现上述实施例,本申请还提出一种面向稀疏矩阵向量乘计算的软硬件协同设计框架。
图6为本申请实施例提供的一种面向稀疏矩阵向量乘计算的敏捷软硬件协同设计框架的结构示意图。
如图6所示,该面向稀疏矩阵向量乘计算的敏捷软硬件协同设计框架包括压缩数据格式定义模块、最优参数组合选择模块、SpMV加速器确定模块、计算模块,其中,
压缩数据格式定义模块,用于根据矩阵参数和设备参数定义可扩展的压缩数据格式;
最优参数组合选择模块,用于评估不同的参数组合在矩阵上的性能,确定最优参数组合,其中,最优参数组合包括批次高度H、批次宽度W、组大小N、端口数量P;
SpMV加速器确定模块,用于基于最优参数组合,根据预定义的模板确定硬件参数,并确定对应的SpMV加速器;
计算模块,用于基于最优参数组合和定义的可扩展的压缩数据格式,使用重排序算法对矩阵和对应的向量进行数据打包,生成压缩存储数据并在SpMV加速器上执行,完成矩阵向量的乘计算。
可选地,在本申请的一个实施例中,可扩展的压缩数据格式包括头区域、重用标志区域和类COO数据区域,每个区域使用一条或多条数据行,头区域包括标识批次的头标识符、复用标志行数、行索引基址和列索引基址,类COO数据区域的每一行由N个非零元素及其行索引和列索引组成,每一行包含P个用来获取向量元素的列索引,每一行还包含N-P个用来复用来自同一组或前面相邻组的向量元素的非零元素,其中,P/2≤BS,BS为目标器件的BRAM大小。
需要说明的是,前述对面向稀疏矩阵向量乘计算的敏捷软硬件协同设计方法实施例的解释说明也适用于该实施例的面向稀疏矩阵向量乘计算的敏捷软硬件协同设计框架,此处不再赘述。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。

Claims (10)

1.一种面向稀疏矩阵向量乘计算的软硬件协同设计方法,其特征在于,包括以下步骤:
根据矩阵参数和设备参数定义可扩展的压缩数据格式;
评估不同的参数组合在矩阵上的性能,确定最优参数组合,其中,所述最优参数组合包括批次高度H、批次宽度W、组大小N、端口数量P;
基于所述最优参数组合,根据预定义的模板确定硬件参数,并确定对应的SpMV加速器;
基于所述最优参数组合和定义的可扩展的压缩数据格式,使用重排序算法对矩阵和对应的向量进行数据打包,生成压缩存储数据并在所述SpMV加速器上执行,完成矩阵向量的乘计算。
2.如权利要求1所述的方法,其特征在于,所述可扩展的压缩数据格式包括头区域、重用标志区域和类COO数据区域,每个区域使用一条或多条数据行,所述头区域包括标识批次的头标识符、复用标志行数、行索引基址和列索引基址,所述类COO数据区域的每一行由N个非零元素及其行索引和列索引组成,每一行包含P个用来获取向量元素的列索引,每一行还包含N-P个用来复用来自同一组或前面相邻组的向量元素的非零元素,其中,P/2≤BS,BS为目标器件的BRAM大小。
3.如权利要求1所述的方法,其特征在于,评估不同的参数组合在矩阵上的性能,确定最优参数组合,包括:
获取不同的参数组合(N,P,H,W)、矩阵和加速器流水线深度;
选定当前评估的参数组合(N,P,H,W),并根据参数H和W将矩阵划分为多个批次;
对每个批次进行评估,并基于所有批次的评估结果和所述加速器流水线深度确定当前评估的参数组合的周期数;
将周期数最少的参数组合确定为最优参数组合。
4.如权利要求3所述的方法,其特征在于,对当前批次进行评估,包括:
对当前批次统计得到单个元素的数量Ns、复用列的数量Nr、所有复用列中的非零元素数量Ne、矩阵中非零元素总数Nnz和数据分组后剩余的不能复用向量元素的单个元素数量residue,其中,
根据residue和Nnz计算得到组的数量作为当前批次的评估结果;
所述基于所有批次的评估结果和所述加速器流水线深度确定当前评估的参数组合的周期数,包括:
基于所有批次的组的数量、数据头数量、块切换开销确定当前评估参数组合的周期数。
5.如权利要求2所述的方法,其特征在于,基于所述最优参数组合和定义的可扩展的压缩数据格式,使用重排序算法对矩阵和对应的向量进行数据打包,包括:
使用重排序算法对矩阵进行预处理,并将预处理后的矩阵和对应的向量存储在DRAM中;
根据确定的最优参数组合(N,P,H,W)对存储在DRAM中的矩阵和对应的向量进行划分,得到不同批次的数据;
在数据打包过程中,将不同批次的数据按照压缩数据格式的头、重用标志行和类COO的数据附加到输出文件中。
6.如权利要求5所述的方法,其特征在于,所述压缩存储数据在所述SpMV加速器上的执行包括数据准备阶段、数据处理阶段、数据累加阶段和数据写回阶段,所述加速器包括解码器、矩阵缓冲区、向量缓冲区、复用标志FIFO、向量扩展模块、PE阵列、无冲突加法器树、交叉阵列开关、累加器、URAM,所述压缩存储数据在所述SpMV加速器上的执行过程包括:
在数据准备阶段,通过解码器将块对应的向量段从DRAM加载并存储在向量缓冲区中,并将按照压缩数据格式存储的数据通过解码器从DRAM以流水线方式发送到复用标志FIFO或矩阵缓冲区中,并使用向量扩展模块根据复用标志FIFO中的复用标志将向量元素数量从P扩展到N;
在数据处理阶段,使用PE阵列中的N个PE对数据准备阶段产生的N对矩阵元素和向量元素进行乘法运算,并使用无冲突加法器树对乘法运算结果进行累加;
在数据累加阶段,将无冲突加法器树的结果通过交叉阵列开关传到对应的累加器中进行累加;
在数据写回阶段,在当前批次的数据执行结束后,将对应的部分和写回到URAM,在整个矩阵完成后,将URAM中的结果写回到片外DRAM中。
7.如权利要求6所述的方法,其特征在于,所述确定对应的SpMV加速器,包括:
通过5阶段浮点数加法器和20阶段浮点数乘法器实现PE阵列、无冲突加法器树和累加器,其中,每个累加器包括第一寄存器组、第二寄存器组和第三寄存器组,所述第一寄存器组组保存当前批次的部分和,所述第二寄存器组保存上一批次计算得到的数据并写回URAM,所述第三寄存器组从URAM预取下一批次的部分和,所述URAM的接口构造有高带宽片上数据总线,用于保证在当前批次的执行过程中回写上一批次计算的结果,并获取获取下一批次的所有初始部分和。
8.如权利要求6所述的方法,其特征在于,使用所述无冲突加法器树对乘法运算结果进行累加,包括:
对输入的部分和进行重新排序,使得具有相同行索引的部分和彼此相邻;
将排序后的部分和分成若干组,发送给多个子树进行累加,得到相应的结果;
所述将无冲突加法器树的结果通过交叉阵列开关传到对应的累加器中进行累加,包括:
对于每个组,使用一个完整的交叉阵列开关从相应的子树中选择对应的结果,其中,所述选择过程包括:
若一个部分和与另一个部分和相加,则完整的交叉阵列开关选择零作为输出,并发送到下一阶段,若不同组的输出之间有冲突的部分和,则通过一个边界加法器将冲突的结果累加。
9.一种面向稀疏矩阵向量乘计算的软硬件协同设计框架,其特征在于,包括压缩数据格式定义模块、最优参数组合选择模块、SpMV加速器确定模块、计算模块,其中,
所述压缩数据格式定义模块,用于根据矩阵参数和设备参数定义可扩展的压缩数据格式;
所述最优参数组合选择模块,用于评估不同的参数组合在矩阵上的性能,确定最优参数组合,其中,所述最优参数组合包括批次高度H、批次宽度W、组大小N、端口数量P;
所述SpMV加速器确定模块,用于基于所述最优参数组合,根据预定义的模板确定硬件参数,并确定对应的SpMV加速器;
所述计算模块,用于基于所述最优参数组合和定义的可扩展的压缩数据格式,使用重排序算法对矩阵和对应的向量进行数据打包,生成压缩存储数据并在所述SpMV加速器上执行,完成矩阵向量的乘计算。
10.如权利要求9所述的装置,其特征在于,所述可扩展的压缩数据格式包括头区域、重用标志区域和类COO数据区域,每个区域使用一条或多条数据行,所述头区域包括标识批次的头标识符、复用标志行数、行索引基址和列索引基址,所述类COO数据区域的每一行由N个非零元素及其行索引和列索引组成,每一行包含P个用来获取向量元素的列索引,每一行还包含N-P个用来复用来自同一组或前面相邻组的向量元素的非零元素,其中,P/2≤BS,BS为目标器件的BRAM大小。
CN202311757741.XA 2023-12-19 2023-12-19 面向稀疏矩阵向量乘计算的软硬件协同设计方法和框架 Pending CN118245110A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311757741.XA CN118245110A (zh) 2023-12-19 2023-12-19 面向稀疏矩阵向量乘计算的软硬件协同设计方法和框架

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311757741.XA CN118245110A (zh) 2023-12-19 2023-12-19 面向稀疏矩阵向量乘计算的软硬件协同设计方法和框架

Publications (1)

Publication Number Publication Date
CN118245110A true CN118245110A (zh) 2024-06-25

Family

ID=91554261

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311757741.XA Pending CN118245110A (zh) 2023-12-19 2023-12-19 面向稀疏矩阵向量乘计算的软硬件协同设计方法和框架

Country Status (1)

Country Link
CN (1) CN118245110A (zh)

Similar Documents

Publication Publication Date Title
US11803738B2 (en) Neural network architecture using convolution engine filter weight buffers
CN111213125B (zh) 使用simd指令进行高效的直接卷积
US10140123B2 (en) SIMD processing lanes storing input pixel operand data in local register file for thread execution of image processing operations
US10884744B2 (en) System and method of loop vectorization by compressing indices and data elements from iterations based on a control mask
US8676874B2 (en) Data structure for tiling and packetizing a sparse matrix
US8762655B2 (en) Optimizing output vector data generation using a formatted matrix data structure
KR20180123846A (ko) 합성곱 신경망을 위한 논리적 3차원 구조의 재구성형 연산 가속기
US9240237B2 (en) Semiconductor device and method of writing/reading entry address into/from semiconductor device
US9342478B2 (en) Processor with reconfigurable architecture including a token network simulating processing of processing elements
GB2560600A (en) Nueral Network Hardware
US9104526B2 (en) Transaction splitting apparatus and method
JP5522283B1 (ja) リストベクトル処理装置、リストベクトル処理方法、プログラム、コンパイラ、及び、情報処理装置
CN111324294A (zh) 存取张量数据的方法和装置
CN117539546A (zh) 基于非空列存储的稀疏矩阵向量乘加速方法及装置
US11488280B2 (en) Computer-readable recording medium recording appearance frequency calculation program, information processing apparatus, and appearance frequency calculation method
Shahbahrami et al. FPGA implementation of parallel histogram computation
CN118245110A (zh) 面向稀疏矩阵向量乘计算的软硬件协同设计方法和框架
US20210082082A1 (en) Data processing method and processing circuit
JP2022074442A (ja) 演算装置および演算方法
US20110164459A1 (en) List structure control circuit
CN112463218A (zh) 指令发射控制方法及电路、数据处理方法及电路
CN112464157B (zh) 向量排序方法与排序系统
CN114116012B (zh) 基于混洗操作的fft码位反序算法向量化实现方法及装置
CN111831254B (zh) 图像处理加速方法、图像处理模型存储方法及对应装置
JP4773980B2 (ja) 演算処理装置、及び演算処理方法

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