稀疏矩阵数据结构的制作方法

文档序号:9829920阅读:331来源:国知局
稀疏矩阵数据结构的制作方法
【专利说明】稀疏矩阵数据结构
[0001 ] 背景
[0002]稀疏矩阵和稀疏向量可被编码以降低存储要求并且提高处理效率。例如,通过仅存储稀疏矩阵和稀疏向量的非零元素,可实现存储要求的降低。这一编码格式的一个示例是压缩稀疏行(CSR)编码格式。在一些情况下,编码格式的处理性能可高度取决于使用以该格式编码的稀疏矩阵和稀疏向量来执行计算的设备的架构。例如,将稀疏矩阵中一行的全部元素连续地放置在编码阵列中的编码格式(诸如CSR编码格式)可被能够并行地处理稀疏矩阵的多行的计算设备低效率地处理。附加地或替代地,计算设备可要求附加的逻辑、配线、和/或缓冲器来足够高效地处理该编码以完全利用通信接口带宽。
[0003]概述
[0004]提供了涉及将稀疏矩阵编码成可经由并行处理高效处理的数据结构格式的各实施例。在一个实施例中,可接收稀疏矩阵。可根据确定性顺序(例如,单循环)遍历所述稀疏矩阵中的一组指定行,直到所述稀疏矩阵中的所有非零元素已被放置在第一阵列中。每当根据所述确定性顺序遍历所述组中的一行时,该行中的下一个非零元素可被放置在所述第一阵列中,并且所述组中的每一行可将第一个非零元素放置在所述第一阵列中,接着将来自该行的第二个元素放置在所述第一阵列中。如果所述一组指定行的一个给定行的所有非零元素都已被放置在所述第一阵列中,则该组指定行中该给定行可被替换为所述稀疏矩阵的下一个未经处理的行。所述稀疏矩阵被编码于其中的数据结构可被输出。所述数据结构可包括所述第一阵列。
[0005]提供本概述以便以简化的形式介绍以下在详细描述中进一步描述的一些概念。本概述并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。而且,所要求保护的主题不限于解决该公开的任一部分中所注的任何或全部缺点的实现方式。
[0006]附图简述
[0007]图1示意性地示出根据本公开的一实施例的计算系统。
[0008]图2示出根据本公开的实施例的稀疏矩阵的示例。
[0009 ]图3示出根据本公开的实施例的稀疏向量的示例。
[0010]图4一5示出根据本公开的实施例的用于将稀疏矩阵编码成数据结构的方法。
[0011]图6示出根据图4一5中所示的方法编码成数据结构的图2中所示的稀疏矩阵。
[0012]图7示出根据本公开的实施例的被编码成数据结构的图3中的稀疏向量的示例。
[0013]详细描述
[0014]本公开涉及用于将稀疏矩阵表示为数据结构的方法。更具体地,本公开涉及用于以允许并行处理稀疏矩阵的各行的专用硬件计算设备对稀疏矩阵进行高效的处理的方式将稀疏矩阵编码成数据结构的方法。
[0015]在一个示例中,根据本公开的数据结构可包括第一阵列,其中稀疏矩阵的非零元素可根据稀疏矩阵的一组指定行被“预复用”或“交织”。例如,非零元素可基于计算设备并行处理的行的数目被交织到第一阵列中。换言之,可根据确定性顺序遍历所述稀疏矩阵的对应于并行处理的行的数目的一组指定行,直到所述稀疏矩阵中的所有非零元素已被放置在所述第一阵列中。每当根据确定性顺序遍历到所述组中的一行时,该行中的下一个非零元素可被放置在第一阵列中。如果所述一组指定行的一个给定行的所有非零元素都已被放置在所述第一阵列中,则在该组指定行中该给定行可被替换为所述稀疏矩阵的下一个未经处理的行。
[0016]通过将稀疏矩阵的非零元素交织到第一阵列中,计算设备的并行处理单元可在计算设备接收到一行的每一个元素之前开始处理该行。此外,稀疏矩阵的多个行可被不同的并行处理单元同时处理。相应地,以此方式编码的稀疏矩阵可被更高效地处理,并且相对于其中行的所有元素被毗连地存储在阵列中的稀疏矩阵编码(诸如压缩稀疏行(CSR)编码格式),计算设备的复杂布线网络可被简化。
[0017]此外,根据本公开的表示稀疏矩阵的数据结构可包括第二阵列,第二阵列包括映射到存储稀疏向量的计算设备的数据缓冲器的数据缓冲器地址的列索引。列索引对应于被放置在第一阵列中的稀疏矩阵的非零元素。稀疏向量可被用于执行与稀疏矩阵的计算(例如,稀疏矩阵一向量乘法计算)。通过经由将稀疏矩阵的非零元素的列索引映射到存储稀疏向量的数据缓冲器的地址来重构稀疏向量,在计算设备访问稀疏向量元素时不需要转换,因为向量缓冲器地址可能已被存储在编码中。以此方式,相对于处理不将稀疏矩阵中的非零元素的列索引映射到存储稀疏向量的数据缓冲器的地址的编码的配置,片上缓冲存储可被缩小。
[0018]虽然用于填充第一阵列的预复用技术以及用于填充第二阵列的重构或映射技术被讨论为在同一数据结构中实现,但是将会理解,各技术可被独立地实现。在一个示例中,数据结构包括具有预复用元素的第一阵列并且不包括具有重构元素的第二阵列。相反,数据结构可包括具有表示以不同方式组织的第一阵列的值的位置的元素的第二阵列。在另一示例中,数据结构包括具有重构元素的第二阵列并且不包括具有复用元素的第一阵列。相反,数据结构可包括具有表示以不同方式组织的值的元素的第一阵列。
[0019]将会理解,稀疏矩阵的编码和对应数据结构可被用于任何适合的计算。例如,经编码的稀疏矩阵可被用于稀疏矩阵一向量乘法、涉及某种形式的稀疏矩阵元素和稀疏向量元素的组合的另一操作、和/或使用编码在稀疏矩阵中的信息来定位稀疏向量的元素的操作。在另一示例中,此处描述的技术可被应用于稀疏矩阵一矩阵乘法。将会理解,在稀疏矩阵的密集表示被编码到该数据结构中时,稀疏矩阵可经受转换过程,该转换过程得到能够由硬件计算设备经由并行处理更快速地处理的表示稀疏矩阵的信息。在一个示例中,稀疏矩阵表示可实现计算设备的操作的效率的提高以完全利用高带宽通信能力。此外,效率的提高可允许计算设备能够被用于实时机器学习应用,其中计算设备可能被连续地调用以快速地执行计算。这样的机器学习可适用于图像识别、语音识别、网页排名、以及自然语言处理和文本搜索。在一个示例中,计算设备可被用于训练和评估深度神经网络。在另一示例中,计算设备可被用于分解大数字,以及其它应用。
[0020]图1示意性地示出计算系统100的实施例。计算系统100可被配置成处理表示稀疏矩阵和稀疏向量的数据结构。计算系统100可采取以下形式:一个或多个个人计算机、服务器计算机、平板计算机、家庭娱乐计算机、网络计算设备、游戏设备、移动计算设备(例如,平板)、移动通信设备(例如,智能手机)、和/或其他计算设备。计算系统100可包括经由通信接口 108与大容量存储设备104和片外存储设备106通信的处理器102。
[0021]处理器102可包括一个或多个处理器核,并且在其上执行的指令可被配置用于顺序、并行、和/或分布式处理。处理器的个体组件可任选地分布在两个或更多个分开的设备之间,所述设备可以位于远程以及/或者被配置用于协同处理。处理器的各方面可由以云计算配置进行配置的可远程访问的联网计算设备来虚拟化和执行。
[0022]处理器102可包括被配置成执行指令的一个或多个物理设备。例如,处理器可以被配置成执行指令,所述指令是一个或多个应用、服务、程序、例程、库、对象、部件、数据结构或其他逻辑构造的一部分。这种指令可被实现以执行任务、实现数据类型、转换一个或多个部件的状态、实现技术效果、或以其他方式得到期望结果。
[0023]大容量存储设备104可包括被配置成保存可由处理器102执行的指令的一个或多个物理设备。当实现这样的指令时,大容量存储设备104的状态可以被变换,例如以保存不同的数据。大容量存储设备104可以包括可移动和/或内置设备。大容量存储设备104可包括光学存储器、半导体存储器、和/或磁存储器等。大容量存储设备104可以包括易失性的、非易失性的、动态的、静态的、读/写的、只读的、随机存取的、依序存取的、位置可定址的、文件可定址的和/或内容可定址的设备。
[0024]存储在大容量存储设备104中的指令可由处理器102使用片外存储设备106的各部分来执行。片外存储设备106可包括被配置成保存用于实现指令执行的数据、并在适用时存储结果的一个或多个物理设备。例如,片外存储设备可包括一个或多个易失性存储器设备。在一个特定示例中,片外存储设备104包括动态随机存取存储器(DRAM)。应当理解,片外存储设备可包括任何适合类型的存储设备而不背离本说明书的范围。
[0025]在一个示例中,指令可作为软件程序的一部分来执行,该软件程序可使用各种计算作为执行的一部分。由此,计算系统100可包括被配置成以非常快速和高效的方式来执行特定计算的专用计算设备110。计算设备110可被实现在专用硬件中作为与处理器102不同的逻辑电路,并且通过通信接口 108链接到处理器102。例如,处理器102可执行指令,该指令调用计算设备110来执行该指令所指定的计算。计算设备110可被配置成从软件程序接收执行计算的指令、从片外存储设备106检索数据元素来进行该计算、处理该计算、以及将该计算的结果返回给片外存储设备。这一例程可在整个软件程序的执行期间被重复地或者连续地进行,使得数据可从片外存储设备流传输到计算设备。
[0026]此外,处理器102可被配置成执行将稀疏矩阵编码到数据结构中的指令,该数据结构可被存储在片外存储设备106中并且被发送给计算设备110以执行计算,如将在以下更详细地讨论的。例如,稀疏矩阵可以密集格式(例如,包括零和非零元素)存储在大容量存储设备104、片外存储设备106中,或者可从可与计算系统100物理上不同的另一计算设备接收。处理器102所执行的软件程序可
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1