CN105593843A - 稀疏矩阵数据结构 - Google Patents
稀疏矩阵数据结构 Download PDFInfo
- Publication number
- CN105593843A CN105593843A CN201480047872.1A CN201480047872A CN105593843A CN 105593843 A CN105593843 A CN 105593843A CN 201480047872 A CN201480047872 A CN 201480047872A CN 105593843 A CN105593843 A CN 105593843A
- Authority
- CN
- China
- Prior art keywords
- array
- row
- sparse matrix
- data structure
- sparse
- 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.)
- Granted
Links
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)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
提供了涉及将稀疏矩阵编码成可经由计算系统的并行处理高效处理的数据结构格式的各实施例。在一个实施例中,可接收稀疏矩阵。可遍历所述稀疏矩阵中的一组指定行,直到所述稀疏矩阵中的所有非零元素已被放置在第一阵列中。每当所述组中的一行被遍历时,该行中的下一个非零元素可被放置在第一阵列中。如果所述一组指定行的一个给定行的所有非零元素都已被放置在所述第一阵列中,则该组指定行中该给定行可被替换为所述稀疏矩阵的下一个未经处理的行。所述稀疏矩阵被编码于其中的数据结构可被输出。所述数据结构可包括所述第一阵列。
Description
背景
稀疏矩阵和稀疏向量可被编码以降低存储要求并且提高处理效率。例如,通过仅存储稀疏矩阵和稀疏向量的非零元素,可实现存储要求的降低。这一编码格式的一个示例是压缩稀疏行(CSR)编码格式。在一些情况下,编码格式的处理性能可高度取决于使用以该格式编码的稀疏矩阵和稀疏向量来执行计算的设备的架构。例如,将稀疏矩阵中一行的全部元素连续地放置在编码阵列中的编码格式(诸如CSR编码格式)可被能够并行地处理稀疏矩阵的多行的计算设备低效率地处理。附加地或替代地,计算设备可要求附加的逻辑、配线、和/或缓冲器来足够高效地处理该编码以完全利用通信接口带宽。
概述
提供了涉及将稀疏矩阵编码成可经由并行处理高效处理的数据结构格式的各实施例。在一个实施例中,可接收稀疏矩阵。可根据确定性顺序(例如,单循环)遍历所述稀疏矩阵中的一组指定行,直到所述稀疏矩阵中的所有非零元素已被放置在第一阵列中。每当根据所述确定性顺序遍历所述组中的一行时,该行中的下一个非零元素可被放置在所述第一阵列中,并且所述组中的每一行可将第一个非零元素放置在所述第一阵列中,接着将来自该行的第二个元素放置在所述第一阵列中。如果所述一组指定行的一个给定行的所有非零元素都已被放置在所述第一阵列中,则该组指定行中该给定行可被替换为所述稀疏矩阵的下一个未经处理的行。所述稀疏矩阵被编码于其中的数据结构可被输出。所述数据结构可包括所述第一阵列。
提供本概述以便以简化的形式介绍以下在详细描述中进一步描述的一些概念。本概述并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。而且,所要求保护的主题不限于解决该公开的任一部分中所注的任何或全部缺点的实现方式。
附图简述
图1示意性地示出根据本公开的一实施例的计算系统。
图2示出根据本公开的实施例的稀疏矩阵的示例。
图3示出根据本公开的实施例的稀疏向量的示例。
图4-5示出根据本公开的实施例的用于将稀疏矩阵编码成数据结构的方法。
图6示出根据图4-5中所示的方法编码成数据结构的图2中所示的稀疏矩阵。
图7示出根据本公开的实施例的被编码成数据结构的图3中的稀疏向量的示例。
详细描述
本公开涉及用于将稀疏矩阵表示为数据结构的方法。更具体地,本公开涉及用于以允许并行处理稀疏矩阵的各行的专用硬件计算设备对稀疏矩阵进行高效的处理的方式将稀疏矩阵编码成数据结构的方法。
在一个示例中,根据本公开的数据结构可包括第一阵列,其中稀疏矩阵的非零元素可根据稀疏矩阵的一组指定行被“预复用”或“交织”。例如,非零元素可基于计算设备并行处理的行的数目被交织到第一阵列中。换言之,可根据确定性顺序遍历所述稀疏矩阵的对应于并行处理的行的数目的一组指定行,直到所述稀疏矩阵中的所有非零元素已被放置在所述第一阵列中。每当根据确定性顺序遍历到所述组中的一行时,该行中的下一个非零元素可被放置在第一阵列中。如果所述一组指定行的一个给定行的所有非零元素都已被放置在所述第一阵列中,则在该组指定行中该给定行可被替换为所述稀疏矩阵的下一个未经处理的行。
通过将稀疏矩阵的非零元素交织到第一阵列中,计算设备的并行处理单元可在计算设备接收到一行的每一个元素之前开始处理该行。此外,稀疏矩阵的多个行可被不同的并行处理单元同时处理。相应地,以此方式编码的稀疏矩阵可被更高效地处理,并且相对于其中行的所有元素被毗连地存储在阵列中的稀疏矩阵编码(诸如压缩稀疏行(CSR)编码格式),计算设备的复杂布线网络可被简化。
此外,根据本公开的表示稀疏矩阵的数据结构可包括第二阵列,第二阵列包括映射到存储稀疏向量的计算设备的数据缓冲器的数据缓冲器地址的列索引。列索引对应于被放置在第一阵列中的稀疏矩阵的非零元素。稀疏向量可被用于执行与稀疏矩阵的计算(例如,稀疏矩阵-向量乘法计算)。通过经由将稀疏矩阵的非零元素的列索引映射到存储稀疏向量的数据缓冲器的地址来重构稀疏向量,在计算设备访问稀疏向量元素时不需要转换,因为向量缓冲器地址可能已被存储在编码中。以此方式,相对于处理不将稀疏矩阵中的非零元素的列索引映射到存储稀疏向量的数据缓冲器的地址的编码的配置,片上缓冲存储可被缩小。
虽然用于填充第一阵列的预复用技术以及用于填充第二阵列的重构或映射技术被讨论为在同一数据结构中实现,但是将会理解,各技术可被独立地实现。在一个示例中,数据结构包括具有预复用元素的第一阵列并且不包括具有重构元素的第二阵列。相反,数据结构可包括具有表示以不同方式组织的第一阵列的值的位置的元素的第二阵列。在另一示例中,数据结构包括具有重构元素的第二阵列并且不包括具有复用元素的第一阵列。相反,数据结构可包括具有表示以不同方式组织的值的元素的第一阵列。
将会理解,稀疏矩阵的编码和对应数据结构可被用于任何适合的计算。例如,经编码的稀疏矩阵可被用于稀疏矩阵-向量乘法、涉及某种形式的稀疏矩阵元素和稀疏向量元素的组合的另一操作、和/或使用编码在稀疏矩阵中的信息来定位稀疏向量的元素的操作。在另一示例中,此处描述的技术可被应用于稀疏矩阵-矩阵乘法。将会理解,在稀疏矩阵的密集表示被编码到该数据结构中时,稀疏矩阵可经受转换过程,该转换过程得到能够由硬件计算设备经由并行处理更快速地处理的表示稀疏矩阵的信息。在一个示例中,稀疏矩阵表示可实现计算设备的操作的效率的提高以完全利用高带宽通信能力。此外,效率的提高可允许计算设备能够被用于实时机器学习应用,其中计算设备可能被连续地调用以快速地执行计算。这样的机器学习可适用于图像识别、语音识别、网页排名、以及自然语言处理和文本搜索。在一个示例中,计算设备可被用于训练和评估深度神经网络。在另一示例中,计算设备可被用于分解大数字,以及其它应用。
图1示意性地示出计算系统100的实施例。计算系统100可被配置成处理表示稀疏矩阵和稀疏向量的数据结构。计算系统100可采取以下形式:一个或多个个人计算机、服务器计算机、平板计算机、家庭娱乐计算机、网络计算设备、游戏设备、移动计算设备(例如,平板)、移动通信设备(例如,智能手机)、和/或其他计算设备。计算系统100可包括经由通信接口108与大容量存储设备104和片外存储设备106通信的处理器102。
处理器102可包括一个或多个处理器核,并且在其上执行的指令可被配置用于顺序、并行、和/或分布式处理。处理器的个体组件可任选地分布在两个或更多个分开的设备之间,所述设备可以位于远程以及/或者被配置用于协同处理。处理器的各方面可由以云计算配置进行配置的可远程访问的联网计算设备来虚拟化和执行。
处理器102可包括被配置成执行指令的一个或多个物理设备。例如,处理器可以被配置成执行指令,所述指令是一个或多个应用、服务、程序、例程、库、对象、部件、数据结构或其他逻辑构造的一部分。这种指令可被实现以执行任务、实现数据类型、转换一个或多个部件的状态、实现技术效果、或以其他方式得到期望结果。
大容量存储设备104可包括被配置成保存可由处理器102执行的指令的一个或多个物理设备。当实现这样的指令时,大容量存储设备104的状态可以被变换,例如以保存不同的数据。大容量存储设备104可以包括可移动和/或内置设备。大容量存储设备104可包括光学存储器、半导体存储器、和/或磁存储器等。大容量存储设备104可以包括易失性的、非易失性的、动态的、静态的、读/写的、只读的、随机存取的、依序存取的、位置可定址的、文件可定址的和/或内容可定址的设备。
存储在大容量存储设备104中的指令可由处理器102使用片外存储设备106的各部分来执行。片外存储设备106可包括被配置成保存用于实现指令执行的数据、并在适用时存储结果的一个或多个物理设备。例如,片外存储设备可包括一个或多个易失性存储器设备。在一个特定示例中,片外存储设备104包括动态随机存取存储器(DRAM)。应当理解,片外存储设备可包括任何适合类型的存储设备而不背离本说明书的范围。
在一个示例中,指令可作为软件程序的一部分来执行,该软件程序可使用各种计算作为执行的一部分。由此,计算系统100可包括被配置成以非常快速和高效的方式来执行特定计算的专用计算设备110。计算设备110可被实现在专用硬件中作为与处理器102不同的逻辑电路,并且通过通信接口108链接到处理器102。例如,处理器102可执行指令,该指令调用计算设备110来执行该指令所指定的计算。计算设备110可被配置成从软件程序接收执行计算的指令、从片外存储设备106检索数据元素来进行该计算、处理该计算、以及将该计算的结果返回给片外存储设备。这一例程可在整个软件程序的执行期间被重复地或者连续地进行,使得数据可从片外存储设备流传输到计算设备。
此外,处理器102可被配置成执行将稀疏矩阵编码到数据结构中的指令,该数据结构可被存储在片外存储设备106中并且被发送给计算设备110以执行计算,如将在以下更详细地讨论的。例如,稀疏矩阵可以密集格式(例如,包括零和非零元素)存储在大容量存储设备104、片外存储设备106中,或者可从可与计算系统100物理上不同的另一计算设备接收。处理器102所执行的软件程序可被配置成将稀疏矩阵的密集表示转换成数据结构。该数据结构可被输出到片外存储设备106并且被发送给计算设备110以执行一个或多个计算。
其中实现计算设备110的硬件可以是集成电路,诸如可编程逻辑器件(PLD)或者专用集成电路(ASIC)。现场可编程门阵列(FPGA)和复杂可编程逻辑器件(CPLD)是可被用于实现计算设备110的适合的PLD的两个示例。计算设备110可与处理器102逻辑地分开,并且可包括片上计算单元112和片上存储单元114。在一些实施例中,片上计算单元112可包括被配置成并行地处理稀疏矩阵的不同行作为执行计算的一部分的多个并行处理单元。此外,片上存储设备114可被形成为与片外存储设备106分开。注意,在一些实例中,“片上”表示组件与计算设备物理上集成在一起,而“片外”表示组件与计算设备物理上不同。
在一些实施例中,计算设备110可被实现为片上系统(“SoC”)。在SoC实现中,处理器102、片外存储设备106、以及计算设备110通常被形成为单个SoC集成电路内的分开的逻辑单元,并且通信接口108包括片上通信接口子系统以实现这些分开的逻辑单元之间的通信。在一些实施例中,处理器102和计算设备110可被物理地集成在相同的芯片中。此外,片外存储可以或可以不集成在该芯片中。在一些实施例中,计算设备110可与物理上与片外存储设备106分开的专用片外存储设备120通信。在一些实施例中,专用片外存储设备120可仅可由计算设备110访问。在一个示例中,片外存储设备120包括计算设备110专用的DRAM。在其它实施例中,片外存储设备106和专用片外存储设备120可以是同一设备。
通信接口108一般指的是被提供用于实现计算系统100的各组件之间的通信的一个或多个通信子系统。通信接口108可包括一个或多个单独的I/O路径,各自潜在地使用分开的协议、编码、和/或物理接口。具体来说,通信接口108可被配置成提供片外存储设备106和计算设备110之间的高带宽通信,使得数据元素可被连续地在多个数据流中从片外存储设备流传输到计算设备以执行计算。更具体地,每个数据流可从片外存储设备106发送到计算设备110的多个并行处理单元116中的一个不同的并行处理单元。在一个特定示例中,通信接口在片外存储设备106和计算设备110之间提供多达32个分开的数据流。应当理解,通信接口可在片外存储设备和计算设备之间提供任意适当数目个数据流而不背离本说明书的范围。
在一个示例中,计算设备110可被配置成执行稀疏矩阵-向量乘法形式的计算。具体来说,稀疏矩阵-向量乘法计算可包括将稀疏矩阵的每一行乘以一个向量。稀疏矩阵可被编码在可被存储在片外存储设备106中的数据结构中。数据结构可根据通信接口108的带宽能力从片外存储设备106流传输到计算设备110。例如,稀疏矩阵的每一行可作为一个不同的数据流发送。更具体地,每个数据流可从片外存储设备106发送到多个并行处理单元116中的一个不同的并行处理单元。在一些实施例中,并行处理单元可处理稀疏矩阵的一个给定行中的每一个行值,并且每一个并行处理单元可并行地处理一个不同行。在一个特定示例中,通信接口108可以能够并行流传输多达32个稀疏矩阵行。
此外,向量可被存储在计算设备110的片上存储设备114中。更具体地,向量可被存储在片上存储设备114的数据缓冲器118中。在一个示例中,数据缓冲器118是堆式(banked)数据缓冲器,其中每一个堆可被独立地寻址。在一些实施例中,数据缓冲器的寻址方案和向量的稀疏结构可在计算之前被固定和知晓,以允许映射到向量缓冲器的地址的适当的稀疏矩阵的编码。注意,尽管在处理稀疏矩阵期间,向量元素被存储在片上存储设备中,但是将会理解,向量元素可被偶尔从片外存储设备或大容量存储设备中取出到片上存储设备。例如,在操作切换成执行涉及第二向量的计算时,第一向量的值可在数据缓冲器中被替换为来自第二不同向量的值。
为了使稀疏矩阵-向量乘法计算并行化,稀疏矩阵的多行元素可被并行地乘以向量的元素。具体来说,当表示稀疏矩阵的数据结构被计算设备接收时,片上处理器112可被配置成将数据结构解析成稀疏矩阵的不同行,并且片上处理器112的多个并行处理单元116中的每一个可被配置成并行地处理稀疏矩阵的一个不同行。
图2示出根据本公开的实施例的稀疏矩阵200的示例。稀疏矩阵200被示出为密集表示,其中包括了零和非零元素。在这一示例中,稀疏矩阵200包括由行索引202指示的八个行,以及由列索引204指示的九个列。一般来说,行可被从上至下地遍历,而列可被从左至右地遍历。将会理解,稀疏矩阵可包括任何适当数量个行和列。所解说的稀疏矩阵的示例可在本文以下在将稀疏矩阵编码到数据结构中的上下文中被提及。
图3示出根据本公开的实施例的稀疏向量300的示例。稀疏向量300被示出为密集表示,其中包括了零和非零元素。在这一示例中,稀疏向量300包括由索引302指示的9个行或者位置。具体来说,索引标识了元素在稀疏向量中的位置。一般来说,行或位置可从上至下地遍历(或者从第一个到最后一个)。将会理解,稀疏向量可包括任何适当数量个行或位置。所解说的稀疏向量的示例可在后文以下在将稀疏矩阵编码到数据结构中的上下文中被提及。
图4-5示出根据本公开的实施例的用于将稀疏矩阵编码成数据结构的方法400。例如,该方法400可由图1中示出的计算系统100来执行。图6和7示出可被用于执行方法400和/或由方法400产生的数据结构。
图6示出根据图4中所示的方法编码到数据结构600中的图2中所示的稀疏矩阵200的示例。数据结构600包括第一阵列602,其中可存储稀疏矩阵的非零元素。出于清楚的目的示出了非零元素的列索引604,但是列索引604并不实际被作为数据结构600的一部分被存储。数据结构600包括第二阵列606,其中可存储数据缓冲器118的地址,非零元素的列索引604被映射到该地址。数据结构600包括第三阵列608,其包括稀疏矩阵的每一行的计数值。替代地,在一些实施例中,第三阵列608可包括指示稀疏矩阵的新行在第一和第二阵列中的何处开始的偏移或指针。在所解说的示例中,稀疏矩阵包括八个行,且第三阵列包括八个计数值。计数值指示多少个非零元素被包括在稀疏矩阵的每一行中。所解说的数据结构的实施例包括三个阵列,但是将会理解,数据结构可包括任意适合数量个阵列而不背离本公开的范围。注意,在一些实施例中,第一、第二、和/或第三阵列中的一个或多个可被实现为不止一个阵列。例如,第一阵列可被拆分成两个阵列。
图7示出可被编码在可被存储在图1中所示的数据缓冲器118中的数据结构700中的稀疏向量300的示例。稀疏矩阵的数据结构700可被用于将稀疏矩阵200编码在数据结构600中。出于清楚的目的,示出了数据缓冲器118中保持稀疏元素向量的地址位置702以及被存储在数据缓冲器中的稀疏向量元素的索引704,但是它们实际上并不作为和数据结构700的一部分被存储。数据结构700包括第一阵列706,其中可存储稀疏向量的元素(例如,值)。稀疏向量的元素可通过从上至下地遍历稀疏向量的各行而与数据缓冲器的地址相关联(例如,第一个元素被存储在第一个地址)。
由于要被并行处理的行的数量、向量缓冲器的编址方案以及向量的稀疏性结构可在编码被使用时被固定,并且在对稀疏矩阵和稀疏向量进行编码之前被知晓,所以这一先验知识可被利用以跳过将元素存储在数据结构中以便缩小数据结构的存储大小,而且还对并行处理单元进行了高效的利用。在所解说的示例中,可假设稀疏向量的行1、2和7中的元素将始终为零。由此,这些元素可被忽略在数据结构700之外。将会理解,任何适合数目个元素可如此处所描述的基于稀疏向量(和/或稀疏矩阵)的先验知识而被跳过以不被存储在数据结构中,而不背离本公开的范围。图6中示出的编码在数据结构600中的稀疏矩阵200和图7中示出的编码在数据结构700中的稀疏向量300将在整个对方法400的讨论中被提及。
在402,方法400可包括接收稀疏矩阵。例如,稀疏矩阵可以密集格式(例如,包括零和非零元素)存储在大容量存储设备104、片外存储设备106中,或者可从可与图1中所示的计算系统100物理上不同的另一计算设备接收。
在一些实施例中,稀疏矩阵可以不同格式编码,并且接收稀疏矩阵可包括在将稀疏矩阵编码到数据结构中之前将稀疏矩阵从其它格式中解码。在另一示例中,稀疏矩阵可直接从另一格式转换成本公开的编码。
在404,方法400可包括将稀疏向量的元素和对应的索引映射到数据缓冲器的地址。注意,在实践中,稀疏向量值仅在运行时知晓,而行索引对地址的映射在运行时之前被知晓。稀疏矩阵的列地址的重新索引允许稀疏矩阵被更高效地处理。
注意,在图7中示出的示例中,稀疏向量300的行1、2和7中的元素根据所存储的指示那些元素始终为零的稀疏向量的先验知识的数据而被忽略在数据结构700之外。
可选地或附加地,在406,方法400可包括对稀疏矩阵的各行重新排序以优化稀疏矩阵的处理。例如,对各行重新排序可包括将最长的行排在第一以减少在处理的末尾处的不平衡。在另一示例中,对各行重新排序可包括对输入向量元素重新排序以减少数据缓冲器的各堆之间的冲突。
在408,方法400可包括将第一阵列、第二阵列、以及第三阵列中的第一行初始化为稀疏矩阵的第一行。通过将各阵列中的第一行初始化为稀疏矩阵中的第一行,可建立一个起始点来追踪当根据确定性顺序(例如,单循环)遍历稀疏矩阵时矩阵中的每一行何时被遍历和处理。将会理解,任何适合的确定性顺序可被用来遍历稀疏矩阵。
在410,方法400可包括确定稀疏矩阵中的所有非零元素是否已被放置在数据结构600的第一阵列602中。如果稀疏矩阵中的所有非零元素已被放置在第一阵列中,则方法400移至434。否则,方法400移至412。
在412,方法400可包括前进到一组指定的行中的下一行。例如,在该组中被指定的行的数目可对应于图1中示出的计算设备110可被配置成并行处理的行的数目。在所解说的示例中,出于简单和便于理解的目的,该组包括4个行。将会理解,该组可包括任何适合数目个行而不背离本说明书的范围。当前进到该组指定行中的下一行时,可根据确定性顺序遍历各行。例如,可在该组中以单循环方式从上至下遍历各行,但是该组所指向的行可以是与阵列顺序不同的顺序。将会理解,可以任何适合的方式遍历各行而不背离本说明书的范围。此外,将会理解,多个行可被同时访问。
在414,方法400可包括确定该行中的所有非零元素是否已被放置在第一阵列602中。如果该行中的所有非零元素已被放置在第一阵列中,则方法400移至420。否则,方法400移至416。
在416,方法400可包括将该行中的下一个非零元素放置在第一阵列602中。在放置该行的下一个非零元素时,该行中的元素可被从左至右遍历。然而,可以不同的方式遍历各元素而不背离本说明书的范围。
在418,方法400可包括将该下一个非零元素的列索引处的向量值被映射到的数据缓冲器中的地址放置在第二阵列606的对应位置中。替代地,在一些实施例中,类似于CSR编码格式的第二阵列,地址可被替换为列索引。相应地,方法可包括将该下一个非零元素的列索引放置在第二阵列606中的对应位置中。
在420,方法400可包括将完成的行中的非零计数值放置在第三阵列608中。替代地,在一些实施例中,类似于CSR编码格式的第三阵列,非零元素计数值可被替换为元素索引编码。具体来说,第三阵列可包括值稀疏矩阵的每一行在哪里开始的值索引的列表的列表。换言之,索引将稀疏矩阵中的每一行的第一个元素映射到值阵列中的一个位置。相应地,方法可包括对于稀疏矩阵中的每一行,将对应于该行的第一个非零元素在第一阵列中的位置的值放置在第三阵列中。
在422,方法400可包括确定稀疏矩阵中的任何未经处理的行是否不在该组指定行中。在一个示例中,未处理行可被定义为尚未将任何非零元素放置在第一阵列中并且未被包括在该组指定行中的行。如果在稀疏矩阵中存在任何未经处理的行,则方法400移至424。否则,方法400移至430。
在424,方法400可包括在该组指定行中将完成的行替换为稀疏矩阵中的下一未经处理的行。在一个示例中,完成的行可被定义为其中所有非零元素已被放置在第一阵列602中的行。此外,如果该行被包括在该组指定行中并且该行的并不是所有的非零元素都已被放置在第一阵列602中,则该行可被视为正被处理。注意,如果一个行不具有非零元素,则该行可被替换为具有非零元素的下一行。取决于数据结构的实施例,不具有非零元素的行可以或可以不用第三阵列中的空计数器来表示。
在426,方法400可包括将该行中的下一个非零元素放置在第一阵列602中。
在428,方法400可包括将该下一个非零元素的列索引处的向量值被映射到的数据缓冲器中的地址放置在第二阵列606的对应位置中。替代地,在一些实施例中,类似于CSR编码格式的第二阵列,地址可被替换为列索引。相应地,方法可包括将该下一个非零元素的列索引放置在第二阵列606中的对应位置中。接着,方法返回410以继续向第一阵列填充非零元素并且向第二阵列填充映射到数据缓冲器地址的非零元素的对应列索引。
在430,方法400可包括确定少于该组所有的行是否正被处理。换言之,可确定该组中是否存在不能被替换的任何完成的行,因为稀疏矩阵中的所有其它行已被完成了。如果存在任何已完成的行,则方法400移至432。否则,方法400返回410以继续填充第一和第二阵列。
在432,方法400可包括将无效条目放置在第一阵列和第二阵列中以维持每个组的阵列条目数。例如,如果该组包括四个行而只有三个行仍然在被处理,则表示第四行的无效条目可被添加到第一和第二阵列。在一个示例中,无效条目包括零。通过在少于组中的所有行正被处理时添加无效条目,可在阵列中维持恰当的复用或间隔,使得在对数据结构解码期间,合适的元素可被发送给合适的并行处理单元。接着,方法返回404以继续向第一阵列填充非零元素并且向第二阵列填充映射到数据缓冲器地址的非零元素的对应列索引。
在434,方法400可包括输出其中编码了稀疏矩阵的数据结构。数据结构可包括第一阵列、第二阵列、以及第三阵列。例如,数据结构可被输出到计算系统100的存储位置,诸如片外存储设备106。在一些实施例中,数据结构可被输出给计算设备110以使用表示稀疏矩阵和稀疏向量的数据结构来执行计算,诸如稀疏矩阵-向量乘法计算。
方法可被执行以将稀疏矩阵的密集表示转换成数据结构。数据结构可允许经由并行处理来对稀疏矩阵更高效地处理,诸如通过图1中示出的计算设备110。具体来说,通过遍历组中的各行来将各元素放置在第一阵列中,各元素可根据计算设备的并行处理配置而在编码中被交织。换言之,通过以此顺序将各元素放置在第一阵列中,元素可被从存储器中加载到并行处理单元中并且被更连续和直接地处理以提高计算设备的效率。
此外,由于第一阵列中的元素的列索引被映射到数据缓冲器的寻址方案,因此在编码中的逻辑块和计算设备中的物理块之间存在一一对应。相应地,计算设备的硬件可变得没那么复杂。
将方法400应用于稀疏矩阵200可得到数据结构600的第一阵列602、第二阵列606、以及第三阵列608,该数据结构600以图6中所示的顺序填充各值。具体来说,该组指定行初始地包括稀疏矩阵200的行1-4。以行1开始(即,组中的下一行),该行中的下一非零元素(即值1)被放置在第一阵列中作为第一个元素。该非零元素的列索引是列9,其映射到数据缓冲器的地址6。因此,值6被放置在第二阵列中作为第一个元素。
接着,行2被遍历并且该行中的下一个非零元素(即,值2)被放置在第一阵列中作为第二个元素。该非零元素的列索引是列5,其映射到数据缓冲器的地址3。因此,值3被放置在第二阵列中作为第二个元素。
接着,行3被遍历并且该行中的下一个非零元素(即,值3)被放置在第一阵列中作为第三个元素。该非零元素的列索引是列3,其映射到数据缓冲器的地址1。因此,值1被放置在第二阵列中作为第三个元素。
接着,行4被遍历并且该行中的下一个非零元素(即,值9)被放置在第一阵列中作为第四个元素。该非零元素的列索引是列9,其映射到数据缓冲器的地址6。因此,值6被放置在第二阵列中作为第四个元素。
由于行4是组中的最后一行,因此行遍历返回到组中的第一行,即行1。由于在行1中没有更多非零元素,在该组中行1被替换为稀疏矩阵200下一个未经处理的行(即行5)。由于第一行被完成,因此第一行的非零计数值可被放置在第三阵列中。此时,该组指定行包括行5、2、3和4。接着,行5被遍历并且该行中的下一非零元素(即,值8)被放置在第一阵列中作为第五个元素。该非零元素的列索引是列5,其映射到数据缓冲器的地址3。因此,值3被放置在第二阵列中作为第五个元素。
接着,行2被遍历,并且由于行2中没有更多非零元素,在该组中行2被替换为稀疏矩阵200的下一未经处理的行(即行6)。由于第二行被完成,因此第二行的非零计数值可被放置在第三阵列中。此时,该组指定行包括5、6、3和4。接着,行6被遍历并且该行中的下一非零元素(即,值1)被放置在第一阵列中作为第六个元素。该非零元素的列索引是列3,其映射到数据缓冲器的地址1。因此,值1被放置在第二阵列中作为第六个元素。
接着,行3被遍历并且该行中的下一个非零元素(即,值4)被放置在第一阵列中作为第七个元素。该非零元素的列索引是列4,其映射到数据缓冲器的地址2。因此,值4被放置在第二阵列中作为第七个元素。
接着,行4被遍历,并且由于行4中没有更多非零元素,在该组中行4被替换为稀疏矩阵200的下一个未经处理的行(即行7)。由于第四行被完成,因此第四行的非零计数值可被放置在第三阵列中。此时,该组指定行包括5、6、3和7。接着,行7被遍历并且该行中的下一个非零元素(即,值6)被放置在第一阵列中作为第八个元素。该非零元素的列索引是列9,其映射到数据缓冲器的地址6。因此,值6被放置在第二阵列中作为第八个元素。
接着,行5被遍历,并且由于行5中没有更多非零元素,该组中行5被替换为稀疏矩阵200的下一个未经处理的行(即行8)。由于第五行被完成,因此第五行的非零计数值可被放置在第三阵列中。此时,该组指定行包括8、6、3和7。接着,行8被遍历并且该行中的下一个非零元素(即,值7)被放置在第一阵列中作为第九个元素。该非零元素的列索引是列5,其映射到数据缓冲器的地址3。因此,值3被放置在第二阵列中作为第九个元素。
接着,行6被遍历并且该行中的下一个非零元素(即,值3)被放置在第一阵列中作为第十个元素。该非零元素的列索引是列4,其映射到数据缓冲器的地址2。因此,值2被放置在第二阵列中作为第十个元素。
接着,行3被遍历并且该行中的下一非零元素(即,值5)被放置在第一阵列中作为第十一个元素。该非零元素的列索引是列6,其映射到数据缓冲器的地址4。因此,值4被放置在第二阵列中作为第十一个元素。
接着,行7被遍历并且由于在行7中不存在更多非零元素并且稀疏矩阵中没有更多的未经处理的行要被添加到该组,因此零形式的无效条目被放置在第一和第二阵列中作为第十二个元素。零被放置在阵列中以维持组内元素的正确复用以便与处理稀疏矩阵的各行的并行处理单元的数目(例如,4个)对齐。由于第七行被完成,因此第七行的非零计数值可被放置在第三阵列中。
接着,行8被遍历并且由于在行8中不存在更多非零元素并且稀疏矩阵中没有更多的未经处理的行,因此零形式的无效条目被放置在第一和第二阵列中作为第十三个元素。由于第八行被完成,因此第八行的非零计数值可被放置在第三阵列中。接着,行6被遍历并且该行中的下一非零元素(即,值2)被放置在第一阵列中作为第十四个元素。该非零元素的列索引是列6,其映射到数据缓冲器的地址4。因此,值4被放置在第二阵列中作为第十四个元素。
接着,行3被遍历并且该行中的下一非零元素(即,值7)被放置在第一阵列中作为第十五个元素。该非零元素的列索引是列8,其映射到数据缓冲器的地址5。因此,值5被放置在第二阵列中作为第十四个元素。
由于组中的其它行已被完成,零被放置在第一和第二阵列中作为第十六和第十七个元素以维持恰当的复用。稀疏矩阵的编码以此方式继续,直到稀疏矩阵的所有非零元素已被放置在第一阵列中。
通过统计稀疏矩阵的每一行中的非零元素的数目来填充第三阵列。例如,第一行包括一个非零元素,因此值1被放置在第三阵列中作为第一个元素。第二行包括一个非零元素,因此值1被放置在第三阵列中作为第二个元素。第三行包括五个非零元素,因此值5被放置在第三阵列中作为第三个元素,以此类推,直到稀疏矩阵的所有行都已在第三阵列中被说明。
将会理解,虽然零被用作为阵列中的初始标记,但是可使用任何适合的符号而不背离本公开的范围,并且此处所描述的用于编码稀疏矩阵的方法可被广泛地适用于这样的稀疏矩阵。
虽然稀疏矩阵编码方法是在通过包括多个并行处理单元的计算设备来处理的上下文中讨论的,但是将会理解,该稀疏矩阵编码方法可由任何适合的计算系统来处理而不背离本公开的范围。例如,编码还可由CPU、具有向量单元的CPU、GPU、以及其它适合类型的计算设备来使用。
虽然稀疏矩阵编码方法是在训练和评估深度神经网络的上下文中讨论的,但是将会理解,该稀疏矩阵编码方法可被用于任何适合的处理操作而不背离本公开的范围。
将会理解,此处描述的配置和/或方法本质是示例性的,这些具体实施例或示例不应被视为限制性的,因为许多变体是可能的。此处描述的具体例程或方法可以表示任何数量的处理策略中的一个或多个。如此,所示和/或所述的各种动作可以以所示和/或所述顺序、以其他顺序、并行地执行,或者被省略。同样,上述过程的次序可以改变。
本公开的主题包括各种过程、系统和配置以及此处公开的其他特征、功能、动作和/或属性、以及它们的任一和全部等价物的所有新颖且非显而易见的组合和子组合。
Claims (15)
1.一种用于将稀疏矩阵编码成数据结构的方法,所述数据结构包括第一阵列,所述方法包括:
接收所述稀疏矩阵;
根据确定性顺序遍历所述稀疏矩阵中的一组指定行,直到所述稀疏矩阵中的所有非零元素已被放置在所述第一阵列中;
每当根据所述确定性顺序遍历所述组中的一行时,将该行中的下一个非零元素放置在所述第一阵列中,其中所述组中的每一行将第一个非零元素放置在所述第一阵列中,接着将来自该行的第二个元素放置在所述第一阵列中;
如果所述一组指定行的给定行的所有非零元素都已被放置在所述第一阵列中,则将所述一组指定行中的该给定行替换为所述稀疏矩阵的下一个未经处理的行;以及
输出所述稀疏矩阵被编码于其中的数据结构;
其中所述稀疏矩阵被计算设备用于执行计算,并且所述组中指定行的数目对应于所述计算设备的并行处理单元的数目。
2.如权利要求1所述的方法,其特征在于,所述数据结构还包括第二阵列,并且所述方法还包括:
将稀疏向量的元素和对应索引映射到数据缓冲器的地址,其中所述稀疏向量被选择以执行与所述稀疏矩阵的计算;以及
每当下一个非零元素被放置在所述第一阵列中时,将所述数据缓冲器中该下一个非零元素的列索引处的向量值所映射的地址放置在所述第二阵列中的对应位置。
3.如权利要求2所述的方法,其特征在于,所述组中的指定行的数目、所述数据缓冲器的寻址方案、以及所述向量的结构是预先知晓的。
4.如权利要求1所述的方法,其特征在于,所述数据结构还包括第二阵列,并且所述方法还包括每当下一个非零元素被放置在所述第一阵列中时,将该下一个非零元素的列索引放置在所述第二阵列的对应位置。
5.如权利要求4所述的方法,其特征在于,进一步包括:
将无效元素放置在所述第一阵列和/或所述第二阵列中以维持对应于所述组中的行的数目的条目数目。
6.如权利要求1所述的方法,其特征在于,所述数据结构进一步包括第三阵列,并且所述方法进一步包括对于所述稀疏矩阵的每一行,将对应于该行中非零元素的数目的值放置在所述第三阵列中。
7.如权利要求1所述的方法,其特征在于,所述数据结构进一步包括第三阵列,并且所述方法进一步包括对于所述稀疏矩阵的每一行,将对应于该行中的第一个非零元素在所述第一阵列中的位置的值放置在所述第三阵列中。
8.如权利要求1所述的方法,其特征在于,进一步包括:
在将非零元素放置在所述第一阵列中之前对所述稀疏矩阵的一个或多个行重新排序。
9.一种计算系统,包括:
处理器;
保持指令的存储设备,所述指令可由所述处理器执行用以:
接收稀疏矩阵;
根据确定性顺序遍历所述稀疏矩阵中的一组指定行,直到所述稀疏矩阵中的所有非零元素已被放置在第一阵列中;
每当根据所述确定性顺序遍历所述组中的一行时,将该行中的下一个非零元素放置在所述第一阵列中,其中所述组中的每一行将第一个非零元素放置在所述第一阵列中,接着将来自该行的第二个元素放置在所述第一阵列中;以及
如果所述一组指定行的给定行的所有非零元素都已被放置在所述第一阵列中,则将所述一组指定行中的该给定行替换为所述稀疏矩阵的下一个未经处理的行;以及
输出所述稀疏矩阵被编码于其中的数据结构,其中所述数据结构包括所述第一阵列;以及
与所述处理器物理上不同的计算设备,所述计算设备被配置成使用所述稀疏矩阵来执行计算,并且所述组中指定行的数目对应于所述计算设备的并行处理单元的数目。
10.如权利要求11所述的计算系统,其特征在于,所述存储设备进一步保持可由所述处理器执行的指令用以:
将稀疏向量的元素和对应索引映射到数据缓冲器的地址,以及
每当下一个非零元素被放置在所述第一阵列中时,将所述数据缓冲器中该下一个非零元素的列索引处的向量值所映射的地址放置在所述第二阵列中的对应位置,其中所述数据结构包括所述第二阵列。
11.如权利要求10所述的计算系统,其特征在于,所述组中的指定行的数目、所述数据缓冲器的寻址方案、以及所述向量的结构是预先知晓的。
12.如权利要求9所述的计算系统,其特征在于,所述存储设备进一步保持可由所述处理器执行的指令用以:
每当下一个非零元素被放置在所述第一阵列中时,将该下一个非零元素的列索引放置在所述第二阵列的对应位置,其中所述数据结构包括所述第二阵列。
13.如权利要求12所述的计算系统,其特征在于,所述存储设备进一步保持可由所述处理器执行的指令用以:
将无效元素放置在所述第一阵列和/或所述第二阵列中以维持对应于所述组中的行的数目的条目数目。
14.如权利要求9所述的计算系统,其特征在于,所述存储设备进一步保持可由所述处理器执行的指令用以:
对于所述稀疏矩阵的每一行,将对应于该行中非零元素的数目的值放置在所述第三阵列中,其中所述数据结构包括所述第三阵列。
15.如权利要求9所述的计算系统,其特征在于,所述存储设备进一步保持可由所述处理器执行的指令用以:
对于所述稀疏矩阵的每一行,将对应于该行中的第一个非零元素在所述第一阵列中的位置的值放置在所述第三阵列中,其中所述数据结构包括所述第三阵列。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/015,894 US9367519B2 (en) | 2013-08-30 | 2013-08-30 | Sparse matrix data structure |
US14/015,894 | 2013-08-30 | ||
PCT/US2014/053316 WO2015031700A2 (en) | 2013-08-30 | 2014-08-29 | Sparse matrix data structure |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105593843A true CN105593843A (zh) | 2016-05-18 |
CN105593843B CN105593843B (zh) | 2018-11-16 |
Family
ID=51539374
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480047872.1A Active CN105593843B (zh) | 2013-08-30 | 2014-08-29 | 稀疏矩阵数据结构 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9367519B2 (zh) |
EP (1) | EP3039570B1 (zh) |
CN (1) | CN105593843B (zh) |
WO (1) | WO2015031700A2 (zh) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106407158A (zh) * | 2016-09-12 | 2017-02-15 | 东南大学 | 一种gpu加速的批处理同构稀疏矩阵乘满向量的处理方法 |
CN107239825A (zh) * | 2016-08-22 | 2017-10-10 | 北京深鉴智能科技有限公司 | 考虑负载均衡的深度神经网络压缩方法 |
CN107729996A (zh) * | 2016-08-11 | 2018-02-23 | 图芯芯片技术有限公司 | 零系数跳过卷积神经网络引擎 |
CN110334067A (zh) * | 2019-06-17 | 2019-10-15 | 腾讯科技(深圳)有限公司 | 一种稀疏矩阵压缩方法、装置、设备及存储介质 |
CN110489428A (zh) * | 2019-08-26 | 2019-11-22 | 上海燧原智能科技有限公司 | 多维稀疏矩阵压缩方法、解压缩方法、装置、设备及介质 |
CN110580675A (zh) * | 2019-09-11 | 2019-12-17 | 北京华大九天软件有限公司 | 一种适用于gpu硬件的矩阵存储与计算方法 |
CN111079082A (zh) * | 2019-12-20 | 2020-04-28 | 支付宝(杭州)信息技术有限公司 | 一种提高涉及稀疏矩阵计算速率的方法和系统 |
CN111240744A (zh) * | 2020-01-03 | 2020-06-05 | 支付宝(杭州)信息技术有限公司 | 一种提高涉及稀疏矩阵并行计算效率的方法和系统 |
CN111788583A (zh) * | 2018-02-09 | 2020-10-16 | 渊慧科技有限公司 | 连续稀疏性模式神经网络 |
CN112116098A (zh) * | 2017-04-09 | 2020-12-22 | 英特尔公司 | 机器学习稀疏计算机制 |
CN112292816A (zh) * | 2018-06-11 | 2021-01-29 | 滕斯托伦特股份有限公司 | 处理核心数据压缩和存储系统 |
CN113190791A (zh) * | 2018-08-06 | 2021-07-30 | 华为技术有限公司 | 矩阵的处理方法、装置及逻辑电路 |
CN113961876A (zh) * | 2017-01-22 | 2022-01-21 | Gsi 科技公司 | 关联存储器设备中的稀疏矩阵乘法 |
CN114138231A (zh) * | 2018-11-20 | 2022-03-04 | 华为技术有限公司 | 执行矩阵乘法运算的方法、电路及soc |
CN114696946A (zh) * | 2020-12-28 | 2022-07-01 | 郑州大学 | 数据编码及解码方法、装置、电子设备及存储介质 |
CN114817845A (zh) * | 2022-05-20 | 2022-07-29 | 昆仑芯(北京)科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9396164B2 (en) | 2013-10-21 | 2016-07-19 | International Business Machines Corporation | Sparsity-driven matrix representation to optimize operational and storage efficiency |
US10339447B2 (en) * | 2014-01-23 | 2019-07-02 | Qualcomm Incorporated | Configuring sparse neuronal networks |
US10275479B2 (en) * | 2014-02-27 | 2019-04-30 | Sas Institute Inc. | Sparse matrix storage in a database |
US9805001B2 (en) * | 2016-02-05 | 2017-10-31 | Google Inc. | Matrix processing apparatus |
US9898441B2 (en) * | 2016-02-05 | 2018-02-20 | Google Llc | Matrix processing apparatus |
WO2018070376A1 (ja) * | 2016-10-11 | 2018-04-19 | 日本電気株式会社 | 領域確保装置、領域確保方法、及び、領域確保プログラムが記録された記録媒体 |
US10489063B2 (en) * | 2016-12-19 | 2019-11-26 | Intel Corporation | Memory-to-memory instructions to accelerate sparse-matrix by dense-vector and sparse-vector by dense-vector multiplication |
US10871964B2 (en) | 2016-12-29 | 2020-12-22 | Qualcomm Incorporated | Architecture for sparse neural network acceleration |
US10332234B2 (en) | 2017-02-14 | 2019-06-25 | International Business Machines Corporation | Matrix factorization with approximate computing |
US10403003B2 (en) | 2017-04-24 | 2019-09-03 | Intel Corporation | Compression mechanism |
US10409732B2 (en) | 2017-05-31 | 2019-09-10 | Nxp Usa, Inc. | Sparse matrix accelerator |
US11321604B2 (en) | 2017-06-21 | 2022-05-03 | Arm Ltd. | Systems and devices for compressing neural network parameters |
US11275996B2 (en) | 2017-06-21 | 2022-03-15 | Arm Ltd. | Systems and devices for formatting neural network parameters |
TWI680409B (zh) * | 2017-07-08 | 2019-12-21 | 英屬開曼群島商意騰科技股份有限公司 | 適用於人工神經網路之矩陣及向量相乘的方法 |
US10691610B2 (en) | 2017-09-27 | 2020-06-23 | Apple Inc. | System control using sparse data |
CN109840585B (zh) * | 2018-01-10 | 2023-04-18 | 中国科学院计算技术研究所 | 一种面向稀疏二维卷积的运算方法和系统 |
CN108388446A (zh) | 2018-02-05 | 2018-08-10 | 上海寒武纪信息科技有限公司 | 运算模块以及方法 |
KR102555057B1 (ko) | 2018-05-09 | 2023-07-12 | 에스케이하이닉스 주식회사 | 웨이트 매트릭스를 포맷하는 방법, 포맷된 데이터를 사용하는 가속기 및 이를 포함하는 시스템 |
US11216732B2 (en) * | 2018-05-31 | 2022-01-04 | Neuralmagic Inc. | Systems and methods for generation of sparse code for convolutional neural networks |
US10620951B2 (en) * | 2018-06-22 | 2020-04-14 | Intel Corporation | Matrix multiplication acceleration of sparse matrices using column folding and squeezing |
US11061738B2 (en) * | 2019-02-28 | 2021-07-13 | Movidius Limited | Methods and apparatus to store and access multi dimensional data |
US11126690B2 (en) | 2019-03-29 | 2021-09-21 | Intel Corporation | Machine learning architecture support for block sparsity |
CN110456983A (zh) * | 2019-04-17 | 2019-11-15 | 上海酷芯微电子有限公司 | 面向深度学习芯片稀疏计算的数据存储结构和方法 |
US10936311B1 (en) * | 2019-07-09 | 2021-03-02 | Xilinx, Inc. | Sparse matrix processing circuitry |
US10997116B2 (en) | 2019-08-06 | 2021-05-04 | Microsoft Technology Licensing, Llc | Tensor-based hardware accelerator including a scalar-processing unit |
WO2021040921A1 (en) * | 2019-08-29 | 2021-03-04 | Alibaba Group Holding Limited | Systems and methods for providing vector-wise sparsity in a neural network |
CN112540718A (zh) * | 2019-09-23 | 2021-03-23 | 无锡江南计算技术研究所 | 面向申威众核架构的稀疏矩阵存储方法 |
US11490135B2 (en) * | 2020-06-19 | 2022-11-01 | Micron Technology, Inc. | Surveillance camera upgrade via removable media having deep learning accelerator and random access memory |
CN112261023A (zh) * | 2020-10-15 | 2021-01-22 | 苏州浪潮智能科技有限公司 | 一种卷积神经网络的数据传输方法和装置 |
CN116417998A (zh) * | 2021-12-30 | 2023-07-11 | 南京南瑞继保电气有限公司 | 同时计算检修方式的交流系统谐波阻抗扫描方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101533387A (zh) * | 2009-04-24 | 2009-09-16 | 西安电子科技大学 | 基于fpga的边角块稀疏矩阵并行lu分解器 |
WO2012076379A2 (en) * | 2010-12-06 | 2012-06-14 | International Business Machines Corporation | Data structure for tiling and packetizing a sparse matrix |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8775495B2 (en) * | 2006-02-13 | 2014-07-08 | Indiana University Research And Technology | Compression system and method for accelerating sparse matrix computations |
WO2009037684A2 (en) | 2007-09-19 | 2009-03-26 | Provost Fellows And Scholars Of The College Of The Holy And Undivided Trinity Of Queen Elizabeth Near Dublin | Sparse matrix by vector multiplication |
US8751556B2 (en) * | 2010-06-11 | 2014-06-10 | Massachusetts Institute Of Technology | Processor for large graph algorithm computations and matrix operations |
GB2489526A (en) * | 2011-04-01 | 2012-10-03 | Schlumberger Holdings | Representing and calculating with sparse matrixes in simulating incompressible fluid flows. |
US8862653B2 (en) | 2011-04-26 | 2014-10-14 | University Of South Carolina | System and method for sparse matrix vector multiplication processing |
US9317482B2 (en) * | 2012-10-14 | 2016-04-19 | Microsoft Technology Licensing, Llc | Universal FPGA/ASIC matrix-vector multiplication architecture |
JP6083300B2 (ja) * | 2013-03-29 | 2017-02-22 | 富士通株式会社 | プログラム、並列演算方法および情報処理装置 |
-
2013
- 2013-08-30 US US14/015,894 patent/US9367519B2/en active Active
-
2014
- 2014-08-29 CN CN201480047872.1A patent/CN105593843B/zh active Active
- 2014-08-29 EP EP14766075.7A patent/EP3039570B1/en active Active
- 2014-08-29 WO PCT/US2014/053316 patent/WO2015031700A2/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101533387A (zh) * | 2009-04-24 | 2009-09-16 | 西安电子科技大学 | 基于fpga的边角块稀疏矩阵并行lu分解器 |
WO2012076379A2 (en) * | 2010-12-06 | 2012-06-14 | International Business Machines Corporation | Data structure for tiling and packetizing a sparse matrix |
Non-Patent Citations (3)
Title |
---|
ALEXANDER MONAKOV等: "Automatically tuning Sparse Matrix-Vector Multiplication for GPU Architecture", 《HIGH PERFORMANCE EMBEDDED ARCHITECTURES AND COMPILERS》 * |
MANFRED LIEBMANN: "Efficient PDE Solvers on Modern Hardware with applications in medical and technical Sciences", 《HTTP://WWW.UNI-GRAZ.AT/~LIEBMA/PHD/DOSSERTATION.PDF》 * |
WRC 2010-4TH HIPEAC WORKSHOP ON RECONFIGURABLE COMPUTING: "Row-interleaved streaming data flow implementation of Sparse Matrix Vector Multiplication in FPGA", 《WRC 2010-4TH HIPEAC WORKSHOP ON RECONFIGURABLE COMPUTING》 * |
Cited By (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107729996B (zh) * | 2016-08-11 | 2023-07-14 | 图芯芯片技术有限公司 | 零系数跳过卷积神经网络引擎 |
CN107729996A (zh) * | 2016-08-11 | 2018-02-23 | 图芯芯片技术有限公司 | 零系数跳过卷积神经网络引擎 |
CN107239825A (zh) * | 2016-08-22 | 2017-10-10 | 北京深鉴智能科技有限公司 | 考虑负载均衡的深度神经网络压缩方法 |
CN107239825B (zh) * | 2016-08-22 | 2021-04-09 | 赛灵思电子科技(北京)有限公司 | 考虑负载均衡的深度神经网络压缩方法 |
CN106407158B (zh) * | 2016-09-12 | 2019-01-29 | 东南大学 | 一种gpu加速的批处理同构稀疏矩阵乘满向量的处理方法 |
CN106407158A (zh) * | 2016-09-12 | 2017-02-15 | 东南大学 | 一种gpu加速的批处理同构稀疏矩阵乘满向量的处理方法 |
CN113961876B (zh) * | 2017-01-22 | 2024-01-30 | Gsi 科技公司 | 关联存储器设备中的稀疏矩阵乘法 |
CN113961876A (zh) * | 2017-01-22 | 2022-01-21 | Gsi 科技公司 | 关联存储器设备中的稀疏矩阵乘法 |
CN112116098A (zh) * | 2017-04-09 | 2020-12-22 | 英特尔公司 | 机器学习稀疏计算机制 |
CN111788583A (zh) * | 2018-02-09 | 2020-10-16 | 渊慧科技有限公司 | 连续稀疏性模式神经网络 |
CN112292816A (zh) * | 2018-06-11 | 2021-01-29 | 滕斯托伦特股份有限公司 | 处理核心数据压缩和存储系统 |
CN112292816B (zh) * | 2018-06-11 | 2024-04-05 | 滕斯托伦特股份有限公司 | 处理核心数据压缩和存储系统 |
US11250108B2 (en) | 2018-08-06 | 2022-02-15 | Huawei Technologies Co., Ltd. | Matrix processing method and apparatus, and logic circuit |
US11734386B2 (en) | 2018-08-06 | 2023-08-22 | Huawei Technologies Co., Ltd. | Matrix processing method and apparatus, and logic circuit |
CN113190791A (zh) * | 2018-08-06 | 2021-07-30 | 华为技术有限公司 | 矩阵的处理方法、装置及逻辑电路 |
US11860970B2 (en) | 2018-11-20 | 2024-01-02 | Huawei Technologies Co., Ltd. | Method, circuit, and SOC for performing matrix multiplication operation |
CN114138231A (zh) * | 2018-11-20 | 2022-03-04 | 华为技术有限公司 | 执行矩阵乘法运算的方法、电路及soc |
US11397791B2 (en) | 2018-11-20 | 2022-07-26 | Huawei Technologies Co., Ltd. | Method, circuit, and SOC for performing matrix multiplication operation |
CN110334067A (zh) * | 2019-06-17 | 2019-10-15 | 腾讯科技(深圳)有限公司 | 一种稀疏矩阵压缩方法、装置、设备及存储介质 |
CN110334067B (zh) * | 2019-06-17 | 2023-12-12 | 腾讯科技(深圳)有限公司 | 一种稀疏矩阵压缩方法、装置、设备及存储介质 |
CN110489428A (zh) * | 2019-08-26 | 2019-11-22 | 上海燧原智能科技有限公司 | 多维稀疏矩阵压缩方法、解压缩方法、装置、设备及介质 |
CN110489428B (zh) * | 2019-08-26 | 2020-05-22 | 上海燧原智能科技有限公司 | 多维稀疏矩阵压缩方法、解压缩方法、装置、设备及介质 |
CN110580675A (zh) * | 2019-09-11 | 2019-12-17 | 北京华大九天软件有限公司 | 一种适用于gpu硬件的矩阵存储与计算方法 |
CN111079082A (zh) * | 2019-12-20 | 2020-04-28 | 支付宝(杭州)信息技术有限公司 | 一种提高涉及稀疏矩阵计算速率的方法和系统 |
CN111079082B (zh) * | 2019-12-20 | 2023-03-10 | 支付宝(杭州)信息技术有限公司 | 一种提高涉及稀疏矩阵计算速率的方法和系统 |
CN111240744B (zh) * | 2020-01-03 | 2022-03-22 | 支付宝(杭州)信息技术有限公司 | 一种提高涉及稀疏矩阵并行计算效率的方法和系统 |
CN111240744A (zh) * | 2020-01-03 | 2020-06-05 | 支付宝(杭州)信息技术有限公司 | 一种提高涉及稀疏矩阵并行计算效率的方法和系统 |
CN114696946B (zh) * | 2020-12-28 | 2023-07-14 | 郑州大学 | 数据编码及解码方法、装置、电子设备及存储介质 |
CN114696946A (zh) * | 2020-12-28 | 2022-07-01 | 郑州大学 | 数据编码及解码方法、装置、电子设备及存储介质 |
CN114817845A (zh) * | 2022-05-20 | 2022-07-29 | 昆仑芯(北京)科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US9367519B2 (en) | 2016-06-14 |
US20150067009A1 (en) | 2015-03-05 |
EP3039570A2 (en) | 2016-07-06 |
WO2015031700A3 (en) | 2015-05-07 |
WO2015031700A2 (en) | 2015-03-05 |
EP3039570B1 (en) | 2020-11-25 |
CN105593843B (zh) | 2018-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105593843A (zh) | 稀疏矩阵数据结构 | |
CN110546654B (zh) | 通过构造接口的带宽控制来增强dnn模块的处理性能 | |
CN109416702A (zh) | 基于掩码的稀疏矩阵压缩的方法、系统以及程序产品 | |
CN106599900A (zh) | 一种识别图像中的字符串的方法和装置 | |
CN105518625A (zh) | 具有高带宽存储器接口的计算硬件 | |
CN104077279B (zh) | 一种并行社区发现方法和装置 | |
CN105407356B (zh) | 高速实时jpeg2000解码方法 | |
US20230068450A1 (en) | Method and apparatus for processing sparse data | |
CN110147252A (zh) | 一种卷积神经网络的并行计算方法及装置 | |
RU2015151125A (ru) | Процессоры, способы и системы для осуществления доступа к набору регистров либо как к множеству малых регистров, либо как к объединенному большому регистру | |
CN111353591A (zh) | 一种计算装置及相关产品 | |
CN113261015A (zh) | 神经网络系统及数据处理技术 | |
CN113626612A (zh) | 一种基于知识图谱推理的预测方法和系统 | |
CN106796587B (zh) | 用于验证分析结果的方法和系统 | |
CN111886605B (zh) | 针对多个输入数据集的处理 | |
CN103955443A (zh) | 一种基于gpu加速的蚁群算法优化方法 | |
US11550736B1 (en) | Tensorized direct memory access descriptors | |
CN113222160A (zh) | 一种量子态的转换方法及装置 | |
US10372770B1 (en) | Cloud-based platform for semantic indexing of web objects | |
CN101751356A (zh) | 用于改进直接存储器存取传送效率的方法、系统和装置 | |
US11210105B1 (en) | Data transmission between memory and on chip memory of inference engine for machine learning via a single data gathering instruction | |
CN106100790A (zh) | 一种数据传输方法及系统 | |
CN107294948A (zh) | 处理媒体数据的计算机实现方法、装置及数据处理系统 | |
US11983128B1 (en) | Multidimensional and multiblock tensorized direct memory access descriptors | |
US12008368B2 (en) | Programmable compute engine having transpose operations |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |