CN117786299A - 一种稀疏矩阵求解方法、系统、设备及介质 - Google Patents
一种稀疏矩阵求解方法、系统、设备及介质 Download PDFInfo
- Publication number
- CN117786299A CN117786299A CN202311831240.1A CN202311831240A CN117786299A CN 117786299 A CN117786299 A CN 117786299A CN 202311831240 A CN202311831240 A CN 202311831240A CN 117786299 A CN117786299 A CN 117786299A
- Authority
- CN
- China
- Prior art keywords
- sparse matrix
- processing unit
- matrix
- processing
- programmable gate
- 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
- 239000011159 matrix material Substances 0.000 title claims abstract description 183
- 238000000034 method Methods 0.000 title claims abstract description 73
- 238000012545 processing Methods 0.000 claims abstract description 143
- 238000000354 decomposition reaction Methods 0.000 claims abstract description 48
- 238000004364 calculation method Methods 0.000 claims abstract description 37
- 230000003044 adaptive effect Effects 0.000 claims abstract description 21
- 230000015654 memory Effects 0.000 claims description 30
- 238000012549 training Methods 0.000 claims description 30
- 238000005070 sampling Methods 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 11
- 238000007667 floating Methods 0.000 claims description 10
- 238000013507 mapping Methods 0.000 claims description 8
- 238000000605 extraction Methods 0.000 claims description 5
- 238000004088 simulation Methods 0.000 abstract description 12
- 238000005516 engineering process Methods 0.000 abstract description 9
- 238000010801 machine learning Methods 0.000 abstract description 8
- 238000004422 calculation algorithm Methods 0.000 description 18
- 238000004891 communication Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 230000001133 acceleration Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 8
- 238000004458 analytical method Methods 0.000 description 7
- 238000011773 genetically engineered mouse model Methods 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 4
- 238000003066 decision tree Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000008030 elimination Effects 0.000 description 3
- 238000003379 elimination reaction Methods 0.000 description 3
- 238000010606 normalization Methods 0.000 description 3
- 238000007637 random forest analysis Methods 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 239000000945 filler Substances 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000007635 classification algorithm Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000003071 parasitic effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000010187 selection method Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 239000013598 vector Substances 0.000 description 1
Landscapes
- Complex Calculations (AREA)
Abstract
本申请公开了一种稀疏矩阵求解方法、系统、设备及介质,方法包括:获取电路网络的稀疏矩阵;将所述稀疏矩阵输入现场可编程门阵列以进行并行计算处理,所述现场可编程门阵列包括处理单元集合,所述处理单元集合包括多个预训练的处理单元,所述处理单元采用自适应乘法进行计算;通过所述处理单元集合对所述稀疏矩阵进行分解处理,得到分解结果。本申请实施例能够通过机器学习技术学习电路矩阵,并通过在现场可编程门阵列中实现多个处理单元并行计算来提高运算速率,加速稀疏矩阵的求解,可以广泛应用于电路仿真技术领域。
Description
技术领域
本申请涉及电路仿真技术领域,尤其涉及一种稀疏矩阵求解方法、装置、电子设备及存储介质。
背景技术
在电路仿真中,由于电路网络的复杂性和大规模性质,往往会生成大规模且稀疏的系数矩阵。而电路网络的稀疏矩阵具有特殊的结构和性质,使得传统的直接解法,如高斯消元法不适用于求解稀疏矩阵的线性方程组,在计算机处理时会浪费大量的存储和计算资源,处理效率低下。
综上,相关技术中存在的技术问题有待得到改善。
发明内容
本申请实施例的主要目的在于提出一种稀疏矩阵求解方法、装置、电子设备及存储介质,能够提高稀疏矩阵的求解效率。
为实现上述目的,本申请实施例的一方面提出了一种稀疏矩阵求解方法,所述方法包括:
获取电路网络的稀疏矩阵;
将所述稀疏矩阵输入现场可编程门阵列以进行并行计算处理,所述现场可编程门阵列包括处理单元集合,所述处理单元集合包括多个预训练的处理单元,所述处理单元采用自适应乘法进行计算;
通过所述处理单元集合对所述稀疏矩阵进行分解处理,得到分解结果。
在一些实施例中,所述现场可编程门阵列还包括列映射单元和列缓冲区,所述将所述稀疏矩阵输入现场可编程门阵列以进行并行计算处理,包括:
通过所述列映射单元对所述处理单元集合进行批量读取处理,得到轴向列表示;
通过所述列缓冲区对所述轴向列表示进行保存得到缓冲元素,并将所述缓冲元素依次广播到所述处理单元集合中。
在一些实施例中,所述现场可编程门阵列还包括控制器,所述将所述稀疏矩阵输入现场可编程门阵列以进行并行计算处理,包括:
通过所述控制器从所述处理单元集合中获取得到所述稀疏矩阵的主元数据,并将所述主元数据广播至所述处理单元集合;
通过所述处理单元集合对所述主元数据进行除法处理得到归一化结果,并对所述归一化结果进行保存。
在一些实施例中,所述通过所述处理单元集合对所述稀疏矩阵进行分解处理,得到分解结果,包括:
通过所述处理单元集合中的每个处理单元对所述稀疏矩阵进行计算处理,所述处理单元包括浮点乘法器、浮点加法器和用于存储计算结果的存储单元;
通过所述浮点乘法器对所述稀疏矩阵进行自适应乘法处理,得到乘法结果;
通过所述浮点加法器对所述乘法结果进行加法处理,得到计算结果;
通过所述存储单元对所述计算结果进行缓存,输出计算结果;
对所述处理单元集合中的每个处理单元的计算结果进行合并处理,得到分解结果。
在一些实施例中,所述通过所述浮点乘法器对所述列元素进行自适应乘法处理,得到乘法结果,包括:
对所述稀疏矩阵进行特征提取处理,得到输入特征;
将所述输入特征输入分类器进行预测,得到自适应乘法;
根据所述自适应乘法进行矩阵乘法计算,得到乘法结果。
在一些实施例中,所述将所述稀疏矩阵输入现场可编程门阵列进行并行计算处理之前,所述方法还包括预先训练所述处理单元,具体包括:
获取样本数据集;
对所述样本数据集进行特征选择处理,得到选择特征;
对所述样本数据集进行矩阵抽样处理,得到训练数据集;
根据所述选择特征和所述训练数据集对分类器进行训练,得到处理单元。
在一些实施例中,所述对所述样本数据集进行矩阵抽样处理,得到训练数据集,包括:
对所述样本数据集中每个矩阵的样本数量进行计算处理,得到矩阵样本数量;
根据所述矩阵样本数量对所述样本数据集进行比例抽样处理,得到训练数据集。
为实现上述目的,本申请实施例的另一方面提出了一种稀疏矩阵求解系统,所述系统包括:
第一模块,用于获取电路网络的稀疏矩阵;
第二模块,用于将所述稀疏矩阵输入现场可编程门阵列以进行并行计算处理,所述现场可编程门阵列包括处理单元集合,所述处理单元集合包括多个预训练的处理单元,所述处理单元采用自适应乘法进行计算;
第三模块,用于通过所述处理单元集合对所述稀疏矩阵进行分解处理,得到分解结果。
为实现上述目的,本申请实施例的另一方面提出了一种电子设备,所述电子设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现前面所述的方法。
为实现上述目的,本申请实施例的另一方面提出了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现前面所述的方法。
本申请实施例至少包括以下有益效果:本申请提供一种稀疏矩阵求解方法、系统、设备及介质,该方案通过将稀疏矩阵输入现场可编程门阵列以进行并行计算处理,从而在现场可编程门阵列硬件中实现多个处理单元并行计算来提高运算速率,加速稀疏矩阵的求解,并通过对处理单元采用自适应乘法进行计算,降低了计算的复杂度,提高了电路网络中稀疏矩阵的求解效率。
附图说明
图1是本申请实施例提供的一种稀疏矩阵求解方法的流程图;
图2是本申请实施例提供的一种超级节点合并的示意图;
图3是本申请实施例提供的一种矩阵分解的示意图;
图4是本申请实施例提供的一种处理单元的结构示意图;
图5是本申请实施例提供的一种并行性分析的示意图;
图6是本申请实施例提供的一种现场可编程门阵列的结构示意图;
图7是本申请实施例提供的一种矩阵分解的流程图;
图8是本申请实施例提供的一种处理单元的数据流向示意图;
图9是本申请实施例提供的一种稀疏矩阵求解系统的结构示意图;
图10是本申请实施例提供的电子设备的硬件结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请实施例相一致的所有实施方式,它们仅是与如所附权利要求书中所详述的、本申请实施例的一些方面相一致的装置和方法的例子。
可以理解,本申请所使用的术语“第一”、“第二”等可在本文中用于描述各种概念,但除非特别说明,这些概念不受这些术语限制。这些术语仅用于将一个概念与另一个概念区分。例如,在不脱离本申请实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“若”、“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本申请所使用的术语“至少一个”、“多个”、“每个”、“任一”等,至少一个包括一个、两个或两个以上,多个包括两个或两个以上,每个是指对应的多个中的每一个,任一是指多个中的任意一个。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
在晶体管级SPICE类电路仿真中,解决一组稀疏线性系统Ax=b占据了大部分时间,因为在大多数分析类型中的基础计算(例如DC分析、瞬态分析和AC小信号分析等)是从修正节点分析(MNA)建立的线性方程组求解。尤其是随着半导体技术继续缩小和寄生效应继续增加,待解矩阵的规模增大并成为布局后电路仿真中耗时最多的任务,用于解决线性系统。与迭代求解器相比,直接求解器即LU分解通常显示出可靠的精度,并且不会受到选择合适预条件的挑战困扰,因此在实际电路仿真中常用于解决线性系统的大多数情况。因此,加速稀疏LU分解对于晶体管级电路仿真来说变得非常重要,以帮助验证复杂大规模电路设计中的问题。
稀疏矩阵是指其中大多数元素为零的矩阵。在电路仿真中,由于电路网络的复杂性和大规模性质,往往会生成大规模且稀疏的系数矩阵。而稀疏矩阵具有特殊的结构和性质,使得传统的直接解法(如高斯消元法)不适用于求解稀疏矩阵的线性方程组。稀疏LU分解是一种高效的稀疏矩阵求解方法,它将系数矩阵分解为一个下三角矩阵L和一个上三角矩阵U的乘积,其中L是单位下三角矩阵,U是非零元素主对角线上方的上三角矩阵。通过进行LU分解,可以将原始的线性方程组转化为两个简化的方程组,从而降低了求解过程的复杂度。稀疏LU分解可以通过利用超节点结构来加速,该结构将矩阵划分为密集子矩阵,从而通过利用三级基本线性代数子程序(BLAS)通用矩阵乘法(GEMM)运算来提高计算性能。
相关技术中,由于电路网络的复杂性和大规模性质,往往会生成大规模且稀疏的系数矩阵。而电路网络的稀疏矩阵具有特殊的结构和性质,使得传统的直接解法,如高斯消元法不适用于求解稀疏矩阵的线性方程组,在计算机处理时会浪费大量的存储和计算资源,处理效率低下。
有鉴于此,本申请实施例中提供一种稀疏矩阵求解方法、装置、电子设备及存储介质,该方案通过结合现场可编程门阵列(FPGA)加速和机器学习技术,改进稀疏矩阵LU分解。通过机器学习技术训练和学习高度多样功能和规模的电路矩阵,通过处理单元在每个矩阵乘法操作中自适应选择适当的矩阵乘法算法。此外,在FPGA中实现多个PE并行计算来提高运算速率,加速稀疏矩阵的求解。
本申请实施例提供的稀疏矩阵求解方法,涉及电路仿真技术领域。本申请实施例提供的稀疏矩阵求解方法可应用于终端中,也可应用于服务器中,还可以是运行于终端或服务器中的软件。在一些实施例中,终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表以及车载终端等,但并不局限于此;服务器端可以配置成独立的物理服务器,也可以配置成多个物理服务器构成的服务器集群或者分布式系统,还可以配置成提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN以及大数据和人工智能平台等基础云计算服务的云服务器,服务器还可以是区块链网络中的一个节点服务器;软件可以是实现稀疏矩阵求解方法的应用等,但并不局限于以上形式。
本申请可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
图1是本申请实施例提供的稀疏矩阵求解方法的一个可选的流程图,图1中的方法可以包括但不限于包括步骤S101至步骤S103。
步骤S101,获取电路网络的稀疏矩阵;
步骤S102,将所述稀疏矩阵输入现场可编程门阵列以进行并行计算处理,所述现场可编程门阵列包括处理单元集合,所述处理单元集合包括多个预训练的处理单元,所述处理单元采用自适应乘法进行计算;
步骤S103,通过所述处理单元集合对所述稀疏矩阵进行分解处理,得到分解结果。
本申请实施例所示意的步骤S101至步骤S103,通过获取电路网络的稀疏矩阵,对稀疏矩阵输入现场可编程门阵列以进行并行计算处理,该现场可编程门阵列包括处理单元集合,该处理单元集合包括多个预训练的处理单元,处理单元在矩阵乘法操作中自适应选择适当的矩阵乘法算法进行计算,通过处理单元集合对稀疏矩阵进行分解处理,得到分解结果。
在本申请实施例中,通过稠密度感知的机器学习自调优方法,在FPGA硬件上对该算法开发并行性来实现稀疏LU分解加速,降低了计算的复杂度,提高了稀疏LU分解的效率。其中,稀疏LU分解包括三个步骤:预处理、符号因子分解和数字因子分解。预处理涉及矩阵的重新排序,以最小化填充元素的数量。符号分解旨在识别这些填充元素的位置。然而,最关键和耗时的步骤是数值分解,它根据确定的矩阵结构计算最终的数值结果。这一步骤对于电路模拟尤其关键,因为在电路模拟中,数字因子分解通常执行多次,而符号因子分解由于矩阵模式一致,通常只执行一次。参照图2,超节点稀疏LU因子分解的过程涉及将L中具有相同非零结构的列分组以形成不对称超节点。这样做是为了通过将这些列视为稠密子矩阵来便于存储和计算。如图2所示,合并过程中,具有不同行结构的列(例如,第3列和第4列)被合并以形成新的超节点,从而填充一些额外的零元素。在形成超节点时,稀疏LU分解过程遵循四个步骤。图2所示的过程按照以下顺序进行,参照图3,其中K表示第K次迭代,N表示对角线上的矩阵块数,panel表示面板。在得到上述对稀疏矩阵的LU分解原理后,本申请实施例通过采用开发任务级并行的计算模型,提出的一种稀疏矩阵LU分解的并行结构,该结构布置与现场可编程门阵列中,由两条总线连接外部存储器的接口控制器和一个处理单元阵列组成。处理单元(PE)通过内部总线进行互联,通过访问局部存储器来实现数据交换,并通过访问外部存储器的内存总线进行数据的读写。访问权限的仲裁是通过轮转方式进行的,并需要两个仲裁器和存储访问逻辑来实现。参照图4,处理单元集合中的每个处理单元的结构如图4所示,包括一个合并单元(Merge Unit)、一个分离单元(Separate Unit)和三个局部存储器(A_RAM、L_RAM和U_RAM)。A_RAM用于存储输入稀疏矩阵的块数据结构,该块数据结构包括稀疏矩阵值(A_val)和系数矩阵索引(A_val_ind),L_RAM用于存储L分解因子的块数据结构,该块数据结构包括L分解因子值(L_val)和L分解因子索引(L_row_ind),U_RAM用于存储U分解因子的块数据结构,该块数据结构包括U分解因子值(U_val)和U分解因子索引(U_row_ind)。分离单元用于从A_RAM中提取出U分解因子的非零元素,并将其存储到U_RAM中。合并单元用于执行合并任务,从L_RAM中取出当前列并更新存储在A_RAM中的块数据结构,然后将更新结果写回A_RAM中。其中,并行算法的scale任务由除法器完成,而合并任务由合并单元完成,其中包含一个乘加部件。在执行合并任务时,分解因子可能来自三个来源:处理单元自身的局部存储器、其他处理单元的局部存储器以及外部存储器。因此,需要设置一个选择器来选择合并单元的输入源,即L_RAM、内部总线和内存总线,并根据first_row_ind第一行输入的值确定选择器输入作为数据源的选取。本申请实施例通过将稀疏矩阵输入现场可编程门阵列以进行并行计算处理。其中,通过分析Gilbert-Peierls分解算法,可以发现两个并行性的来源。实际上,可以通过使用列依赖树来识别中粒度的并行性。这棵树可以通过符号化执行分解得到。在这样的树中,只有在所有子节点都被处理完之后,父节点才能被消除。如果两列属于不同的子树,则它们被认为是独立的。此外,同一级别的所有节点都可以并行计算。参照图5,展示了只使用矩阵的非零结构计算得到的列依赖树的示例。例如,在图5中,并行计算前的矩阵中列4和5可以并行计算,但是列4必须在列1和3计算完成之后才能处理。一般而言,矩阵越稀疏,依赖关系越少,树的宽度越大。因此,对矩阵进行预排序以增加稀疏性可以显著增加并行性潜力。另一方面,在计算给定列时,可以通过展开稀疏三角求解的内循环和列归一化循环来利用更细粒度的并行性,从而进行并行计算,通过处理单元集合对所述稀疏矩阵进行分解处理,从而得到分解结果。
在一些实施例的步骤S102中,所述现场可编程门阵列还包括列映射单元和列缓冲区,所述将所述稀疏矩阵输入现场可编程门阵列以进行并行计算处理,包括:
通过所述列映射单元对所述处理单元集合进行批量读取处理,得到轴向列表示;
通过所述列缓冲区对所述轴向列表示进行保存得到缓冲元素,并将所述缓冲元素依次广播到所述处理单元集合中。
在本申请实施例中,参照图6,现场可编程门阵列包括列映射单元(Col_map)和列缓冲区,其中,在稀疏求解阶段,列映射单元首先通过处理单元集合进行批量读取,形成轴向列的表示,并将其保存到列缓冲区。然后,列缓冲区的元素依次广播到处理单元集合,以通过处理单元集合执行稀疏求解的批量计算。为了节省存储空间,稀疏矩阵通常以紧凑的数据结构存储,例如链表、一组稀疏向量或坐标方案。每种技术都有其优缺点,具体取决于应用和目标架构。压缩行存储(CRS)和压缩列存储(CCS)格式是最常见的,因为它们对矩阵的稀疏结构没有任何假设。CRS包括三个数组:val、col ind和row ptr。val数组按行遍历存储矩阵A的非零元素的值。col ind数组存储每个非零元素的列索引。row ptr数组存储在val数组中作为每行A起始的元素的索引。CCS格式与CRS格式相同,只是以列为单位遍历A。换句话说,CCS格式是AT的CRS格式。在本申请实施例中,通过使用CRS格式对稀疏矩阵进行存储,从而通过列缓冲区对轴向列表示进行保存得到缓冲元素,将列条目分散到多个处理单元中,以便进行循环展开,提高了稀疏矩阵的求解效率。
在一些实施例的步骤S102中,所述现场可编程门阵列还包括控制器,所述将所述稀疏矩阵输入现场可编程门阵列以进行并行计算处理,包括:
通过所述控制器从所述处理单元集合中获取得到所述稀疏矩阵的主元数据,并将所述主元数据广播至所述处理单元集合;
通过所述处理单元集合对所述主元数据进行除法处理得到归一化结果,并对所述归一化结果进行保存。
在本申请实施例中,参照图6,现场可编程门阵列还包括控制器,该控制器用于在对稀疏矩阵进行稀疏求解后进行归一化操作,在归一化阶段,控制器从相应的处理单元中获取主元条目,并将其广播到所有处理单元中,以并行执行所有除法操作。为了填充浮点单元的深流水线,控制器使用列依赖树作为任务流程图。数据从内存中流向算术单元进行计算,然后存储回每个阶段。参照图7,本申请实施例通过控制器实现了一个四级流水线,从而使用控制器对稀疏求解结果进行归一化处理,可以提高系数矩阵的求解准确性。
在一些实施例的步骤S103中,所述通过所述处理单元集合对所述稀疏矩阵进行分解处理,得到分解结果,包括:
通过所述处理单元集合中的每个处理单元对所述稀疏矩阵进行计算处理,所述处理单元包括浮点乘法器、浮点加法器和用于存储计算结果的存储单元;
通过所述浮点乘法器对所述稀疏矩阵进行自适应乘法处理,得到乘法结果;
通过所述浮点加法器对所述乘法结果进行加法处理,得到计算结果;
通过所述存储单元对所述计算结果进行缓存,输出计算结果;
对所述处理单元集合中的每个处理单元的计算结果进行合并处理,得到分解结果。
在本申请实施例中,参照图8,在每个处理单元中,含一个浮点乘法器、一个浮点加法器和用于存储计算结果的存储单元(Shift Register)。在PE的工作过程中,MULTI_OP_ND信号高电平表示乘法器的输入(a,b)有效,从而启动乘法器进行计算。当浮点乘法器完成计算后,MULTI_RDY信号输出高电平,表示MULTI_RESULT(乘法器的结果)有效。当ADD_OP_ND信号变为高电平时,启动浮点加法器的计算过程。一旦浮点加法器计算完成,ADD_RDY信号输出高电平,表示乘加过程结束。此外,MULTI_RDY和ADD_RDY还用作Shift Register的控制信号,以控制Shift Register的移位操作。当一组元素的计算完成后,将RD_EN信号置高电平,读取Shift Register中存储的计算结果。而当需要计算新的元素时,将NEW_OP置高电平,清零Shift Register中的寄存器,开始新一轮的乘加运算。需要说明的是,本申请实施例中处理单元的最大数量和它们的本地内存大小受到FPGA可用资源的限制。可以使用从符号分析中收集到的信息来实例化处理单元集合,处理单元集合通过高速交换机相互连接,以最小化通信开销并提高并发性。
在一些实施例中,所述通过所述浮点乘法器对所述列元素进行自适应乘法处理,得到乘法结果,包括:
对所述稀疏矩阵进行特征提取处理,得到输入特征;
将所述输入特征输入分类器进行预测,得到自适应乘法;
根据所述自适应乘法进行矩阵乘法计算,得到乘法结果。
在本申请实施例中,由于电路网络中的稀疏矩阵具有较大的复杂性,因此很难通过一个单一的阈值直观地区分哪种算法更高效。而本申请实施例通过对一个经过良好训练的分类器自动选择最优的矩阵乘法算法,并使用FPGA的处理单元集合中每个处理单元的浮点乘法器进行矩阵乘法计算。本申请实施例通过对需要分解的稀疏矩阵进行特征提取处理,得到输入特征,该输入特征包括稠密度、宽度、列的标准差等能够捕捉矩阵主要特征的重要特征。然后通过将输入特征输入分类器进行预测,通过分类器进行预测得到自适应乘法,其中,自适应乘法包括GEMM或SpMM算法,其中,GEMM为通用矩阵乘法,SpMM算法为稀疏矩阵乘法,可以想到的是,本申请实施例还可以对其他矩阵乘法进行选择预测得到自适应乘法,通过自适应乘法进行矩阵乘法计算,得到乘法结果。本申请实施例通过机器学习技术训练和学习高度多样功能和规模的电路矩阵,在每个矩阵乘法操作中自适应选择适当的GEMM或SpMM算法进行矩阵乘法计算,从而提高了稀疏矩阵分解的效率。
在一些实施例中,所述将所述稀疏矩阵输入现场可编程门阵列进行并行计算处理之前,所述方法还包括预先训练所述处理单元,具体包括:
获取样本数据集;
对所述样本数据集进行特征选择处理,得到选择特征;
对所述样本数据集进行矩阵抽样处理,得到训练数据集;
根据所述选择特征和所述训练数据集对分类器进行训练,得到处理单元。
在本申请实施例中,获取预先构建好的样本数据集,从样本数据集中选择代表性的特征。样本数据集中的每个样本都包含矩阵特征以及一个分类标签P。标签P表示该样本的最佳矩阵乘法方法。任何深度学习或机器学习技术部署的第一个阶段是决定训练数据集。推断的准确性和模型的普适性在很大程度上取决于注释的质量和训练数据的多样性。因此,对于训练集的抽样必须做好。与传统的分类任务不同,本申请实施例的数据集来自具有高度多样化功能和规模的电路模拟,导致不同电路矩阵贡献的样本数量不平衡。为了克服上述问题,每个矩阵必须向训练集中贡献一定数量的样本。因此,本申请实施例采用基于单位矩阵在完整数据集中样本比例的抽样方法得到训练数据集,然后根据选择特征和训练数据集对分类器进行训练,得到处理单元。
在一些实施例中,所述对所述样本数据集进行矩阵抽样处理,得到训练数据集,包括:
对所述样本数据集中每个矩阵的样本数量进行计算处理,得到矩阵样本数量;
根据所述矩阵样本数量对所述样本数据集进行比例抽样处理,得到训练数据集。
在本申请实施例中,对样本数据集进行矩阵抽样的具体步骤如下:通过对于给定的完整数据集,计算每个矩阵的样本数量,得到矩阵样本数量;假设有m个矩阵,其中第i个矩阵具有ni个样本。然后根据矩阵样本数量对样本数据集进行比例抽样处理,本申请实施例可以通过找出这些矩阵样本数量的最小值min_n和最大值max_n。然后设置一个样本数量的阈值,用于确保每个矩阵贡献的样本数量接近平均水平。一个常用的选择是使用平均样本数量的一半作为阈值,即k=(max_n-min_n)/2+min_n。对于每个矩阵,需要从完整数据集中按比例抽取样本。抽取策略如下:首先,检查该矩阵的样本数量ni是否大于等于阈值k。如果是,则从这些样本中随机选择k个作为训练集样本。如果该矩阵的样本数量ni小于阈值k,则需要从这些样本中全部选取作为训练集样本,并根据ni与k的比例计算需要复制的样本数量。例如,假设该矩阵具有ni个样本,需要复制的数量为copy_num=k-ni。然后从该矩阵的剩余样本中按比例随机抽取相应数量的样本进行复制,直到达到k个样本。这个复制过程是通过从剩余样本中按照概率p=copy_num/(ni+copy_num)进行选择来完成的。在每次复制时,会选择一个剩余样本,并按照概率p决定是否将其复制到训练集中。
需要说明的是,本申请实施例采用装袋算法来完成AI自调节稀疏LU分解加速任务。即通过袋袋算法对随机森林中的每个决策树作为本申请实施例中相互独立的弱分类器。决策树中的节点分裂采用信息差方法实现,该方法显示了要分类集合的熵与所选特征的条件熵之间的差异。多个决策树组成一个随机森林,这些树会随机选择样本进行训练。作为分类器的随机森林的结果由决策树之间的多数投票决定。本申请实施例通过采用装袋算法作为分类器进行预测,可以处理高维数据而无需进行特征降维;并且使用无偏估计进行泛化错误,模型具有较强的泛化能力,从而提高了训练速度,容易并行化。可以想到的是,本申请实施例使用训练好的分类器对新的输入矩阵进行推断。将输入矩阵的特征提取出来,并通过分类器预测出最佳的矩阵乘法算法。根据分类器的推断结果,选择相应的加速策略来加速稀疏LU分解算法。根据预测的最佳矩阵乘法算法,可以采用相应的优化技术和算法来提高计算效率。对加速后的算法进行性能评估,比较加速前后的运行时间、资源利用率等指标,验证自适应加速的有效性。本申请实施例还可以根据性能评估结果,对模型和分类器进行调整和优化。可以尝试不同的特征选择方法、样本抽样策略和分类算法参数调整等来进一步提高自适应加速的效果。
请参阅图9,本申请实施例还提供一种稀疏矩阵求解系统,可以实现上述稀疏矩阵求解方法,该系统包括:
第一模块901,用于获取电路网络的稀疏矩阵;
第二模块902,用于将所述稀疏矩阵输入现场可编程门阵列以进行并行计算处理,所述现场可编程门阵列包括处理单元集合,所述处理单元集合包括多个预训练的处理单元,所述处理单元采用自适应乘法进行计算;
第三模块903,用于通过所述处理单元集合对所述稀疏矩阵进行分解处理,得到分解结果。
可以理解的是,上述方法实施例中的内容均适用于本系统实施例中,本系统实施例所具体实现的功能与上述方法实施例相同,并且达到的有益效果与上述方法实施例所达到的有益效果也相同。
本申请实施例还提供了一种电子设备,电子设备包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现上述稀疏矩阵求解方法。该电子设备可以为包括平板电脑、车载电脑等任意智能终端。
可以理解的是,上述方法实施例中的内容均适用于本设备实施例中,本设备实施例所具体实现的功能与上述方法实施例相同,并且达到的有益效果与上述方法实施例所达到的有益效果也相同。
请参阅图10,图10示意了另一实施例的电子设备的硬件结构,电子设备包括:
处理器1001,可以采用通用的CPU(CentralProcessingUnit,中央处理器)、微处理器、应用专用集成电路(ApplicationSpecificIntegratedCircuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本申请实施例所提供的技术方案;
存储器1002,可以采用只读存储器(ReadOnlyMemory,ROM)、静态存储设备、动态存储设备或者随机存取存储器(RandomAccessMemory,RAM)等形式实现。存储器1002可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1002中,并由处理器1001来调用执行本申请实施例的稀疏矩阵求解方法;
输入/输出接口1003,用于实现信息输入及输出;
通信接口1004,用于实现本设备与其他设备的通信交互,可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信;
总线1005,在设备的各个组件(例如处理器1001、存储器1002、输入/输出接口1003和通信接口1004)之间传输信息;
其中处理器1001、存储器1002、输入/输出接口1003和通信接口1004通过总线1005实现彼此之间在设备内部的通信连接。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述稀疏矩阵求解方法。
可以理解的是,上述方法实施例中的内容均适用于本存储介质实施例中,本存储介质实施例所具体实现的功能与上述方法实施例相同,并且达到的有益效果与上述方法实施例所达到的有益效果也相同。
存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序以及非暂态性计算机可执行程序。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施方式中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至该处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
本申请实施例提供的一种稀疏矩阵求解方法、系统、设备及介质,其通过结合FPGA加速和机器学习技术,改进稀疏矩阵LU分解。通过机器学习技术训练和学习高度多样功能和规模的电路矩阵,在每个矩阵乘法操作中自适应选择适当的GEMM或SpMM算法。此外,在FPGA中实现多个处理单元并行计算来提高运算速率,加速稀疏矩阵的求解。
本申请实施例描述的实施例是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域技术人员可知,随着技术的演变和新应用场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本领域技术人员可以理解的是,图中示出的技术方案并不构成对本申请实施例的限定,可以包括比图示更多或更少的步骤,或者组合某些步骤,或者不同的步骤。
以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、设备中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。
本申请的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括多指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例的方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序的介质。
以上参照附图说明了本申请实施例的优选实施例,并非因此局限本申请实施例的权利范围。本领域技术人员不脱离本申请实施例的范围和实质内所作的任何修改、等同替换和改进,均应在本申请实施例的权利范围之内。
Claims (10)
1.一种稀疏矩阵求解方法,其特征在于,所述方法包括:
获取电路网络的稀疏矩阵;
将所述稀疏矩阵输入现场可编程门阵列以进行并行计算处理,所述现场可编程门阵列包括处理单元集合,所述处理单元集合包括多个预训练的处理单元,所述处理单元采用自适应乘法进行计算;
通过所述处理单元集合对所述稀疏矩阵进行分解处理,得到分解结果。
2.根据权利要求1所述的方法,其特征在于,所述现场可编程门阵列还包括列映射单元和列缓冲区,所述将所述稀疏矩阵输入现场可编程门阵列以进行并行计算处理,包括:
通过所述列映射单元对所述处理单元集合进行批量读取处理,得到轴向列表示;
通过所述列缓冲区对所述轴向列表示进行保存得到缓冲元素,并将所述缓冲元素依次广播到所述处理单元集合中。
3.根据权利要求1所述的方法,其特征在于,所述现场可编程门阵列还包括控制器,所述将所述稀疏矩阵输入现场可编程门阵列以进行并行计算处理,包括:
通过所述控制器从所述处理单元集合中获取得到所述稀疏矩阵的主元数据,并将所述主元数据广播至所述处理单元集合;
通过所述处理单元集合对所述主元数据进行除法处理得到归一化结果,并对所述归一化结果进行保存。
4.根据权利要求1所述的方法,其特征在于,所述通过所述处理单元集合对所述稀疏矩阵进行分解处理,得到分解结果,包括:
通过所述处理单元集合中的每个处理单元对所述稀疏矩阵进行计算处理,所述处理单元包括浮点乘法器、浮点加法器和用于存储计算结果的存储单元;
通过所述浮点乘法器对所述稀疏矩阵进行自适应乘法处理,得到乘法结果;
通过所述浮点加法器对所述乘法结果进行加法处理,得到计算结果;
通过所述存储单元对所述计算结果进行缓存,输出计算结果;
对所述处理单元集合中的每个处理单元的计算结果进行合并处理,得到分解结果。
5.根据权利要求4所述的方法,其特征在于,所述通过所述浮点乘法器对所述列元素进行自适应乘法处理,得到乘法结果,包括:
对所述稀疏矩阵进行特征提取处理,得到输入特征;
将所述输入特征输入分类器进行预测,得到自适应乘法;
根据所述自适应乘法进行矩阵乘法计算,得到乘法结果。
6.根据权利要求1至5任一项所述的方法,其特征在于,所述将所述稀疏矩阵输入现场可编程门阵列进行并行计算处理之前,所述方法还包括预先训练所述处理单元,具体包括:
获取样本数据集;
对所述样本数据集进行特征选择处理,得到选择特征;
对所述样本数据集进行矩阵抽样处理,得到训练数据集;
根据所述选择特征和所述训练数据集对分类器进行训练,得到处理单元。
7.根据权利要求6所述的方法,其特征在于,所述对所述样本数据集进行矩阵抽样处理,得到训练数据集,包括:
对所述样本数据集中每个矩阵的样本数量进行计算处理,得到矩阵样本数量;
根据所述矩阵样本数量对所述样本数据集进行比例抽样处理,得到训练数据集。
8.一种稀疏矩阵求解系统,其特征在于,所述系统包括:
第一模块,用于获取电路网络的稀疏矩阵;
第二模块,用于将所述稀疏矩阵输入现场可编程门阵列以进行并行计算处理,所述现场可编程门阵列包括处理单元集合,所述处理单元集合包括多个预训练的处理单元,所述处理单元采用自适应乘法进行计算;
第三模块,用于通过所述处理单元集合对所述稀疏矩阵进行分解处理,得到分解结果。
9.一种电子设备,其特征在于,所述电子设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现权利要求1至7任一项所述的方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311831240.1A CN117786299A (zh) | 2023-12-27 | 2023-12-27 | 一种稀疏矩阵求解方法、系统、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311831240.1A CN117786299A (zh) | 2023-12-27 | 2023-12-27 | 一种稀疏矩阵求解方法、系统、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117786299A true CN117786299A (zh) | 2024-03-29 |
Family
ID=90397831
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311831240.1A Pending CN117786299A (zh) | 2023-12-27 | 2023-12-27 | 一种稀疏矩阵求解方法、系统、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117786299A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118378074A (zh) * | 2024-06-26 | 2024-07-23 | 中国人民解放军国防科技大学 | 一种稀疏矩阵求解过程中进行排序算法调度的方法及系统 |
CN118378074B (zh) * | 2024-06-26 | 2024-10-29 | 中国人民解放军国防科技大学 | 一种稀疏矩阵求解过程中进行排序算法调度的方法及系统 |
-
2023
- 2023-12-27 CN CN202311831240.1A patent/CN117786299A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118378074A (zh) * | 2024-06-26 | 2024-07-23 | 中国人民解放军国防科技大学 | 一种稀疏矩阵求解过程中进行排序算法调度的方法及系统 |
CN118378074B (zh) * | 2024-06-26 | 2024-10-29 | 中国人民解放军国防科技大学 | 一种稀疏矩阵求解过程中进行排序算法调度的方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Ramírez-Gallego et al. | An information theory-based feature selection framework for big data under apache spark | |
Zhang et al. | BoostGCN: A framework for optimizing GCN inference on FPGA | |
US10552119B2 (en) | Dynamic management of numerical representation in a distributed matrix processor architecture | |
Zhao et al. | Parallel k-means clustering based on mapreduce | |
Qian et al. | Parallel attribute reduction algorithms using MapReduce | |
Benson et al. | Direct QR factorizations for tall-and-skinny matrices in MapReduce architectures | |
WO2020142193A1 (en) | Adjusting precision and topology parameters for neural network training based on a performance metric | |
EP3788559A1 (en) | Quantization for dnn accelerators | |
CN108170639B (zh) | 基于分布式环境的张量cp分解实现方法 | |
García-Gil et al. | Principal components analysis random discretization ensemble for big data | |
CN110826708B (zh) | 一种用多核处理器实现神经网络模型拆分方法及相关产品 | |
CN108197656B (zh) | 一种基于cuda的属性约简方法 | |
Inaba et al. | DGR-ELM–distributed generalized regularized ELM for classification | |
Nasridinov et al. | Decision tree construction on GPU: ubiquitous parallel computing approach | |
Arnaiz-González et al. | MR-DIS: democratic instance selection for big data by MapReduce | |
Nagarajan et al. | Accelerating machine-learning algorithms on FPGAs using pattern-based decomposition | |
JP2022533704A (ja) | 機械学習ベースの符号化を使用した電子回路レイアウト内のパターンの分類 | |
CN113971224A (zh) | 图像检索系统、方法和相关设备 | |
CN106599122B (zh) | 一种基于垂直分解的并行频繁闭序列挖掘方法 | |
Wang et al. | A novel parallel algorithm for sparse tensor matrix chain multiplication via tcu-acceleration | |
Raha et al. | Efficient hardware acceleration of emerging neural networks for embedded machine learning: An industry perspective | |
Zhan et al. | Field programmable gate array‐based all‐layer accelerator with quantization neural networks for sustainable cyber‐physical systems | |
CN117786299A (zh) | 一种稀疏矩阵求解方法、系统、设备及介质 | |
US20220343145A1 (en) | Method and system for graph neural network acceleration | |
CN111860824A (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 |