CN115398423A - 使用多核处理单元的集合运算 - Google Patents
使用多核处理单元的集合运算 Download PDFInfo
- Publication number
- CN115398423A CN115398423A CN202180028120.0A CN202180028120A CN115398423A CN 115398423 A CN115398423 A CN 115398423A CN 202180028120 A CN202180028120 A CN 202180028120A CN 115398423 A CN115398423 A CN 115398423A
- Authority
- CN
- China
- Prior art keywords
- matrix
- key
- representing
- inputs
- value
- 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
Images
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2237—Vectors, bitmaps or matrices
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Algebra (AREA)
- Computing Systems (AREA)
- Complex Calculations (AREA)
Abstract
使用由多核处理单元(诸如图形处理单元)提供的稀疏矩阵运算来执行集合运算。在使用哈希表之前,集合运算被转换为运算对象矩阵和稀疏矩阵运算。输入集合被转换为矩阵,标识对应于集合运算的矩阵运算,并且集合运算的一个或多个运算对象也被表示在矩阵内。然后对这些矩阵执行矩阵运算以获得输出矩阵,然后将该输出矩阵转换为输出集合。
Description
背景技术
处理单元可以具有多个核,每个核能够彼此并行地执行任务。传统的中央处理单元(或CPU)具有多个复杂的核,每个复杂的核可以执行复杂的任务。另一方面,图形处理单元(GPU)具有相对较大数目的相对较小的核。因此,GPU有助于以非常高程度的并行度和效率执行较大量的较简单的任务。
GPU制造商通常提供GPU函数库,GPU制造商预期该GPU函数库由GPU来执行将是很有用的。这些功能包括矩阵运算。因此,GPU库通常提供可以在一维或二维矩阵上执行的矩阵运算功能。这些矩阵运算包括针对稀疏矩阵(大部分由零构成的矩阵)以及密集矩阵(大部分由非零值构成的矩阵)的运算。然而,GPU库不包括集合运算。
集合是支持两种主要运算的数据项集(有序的或无序的):插入和查询(或查找)。每个数据项可以是任何数据项,诸如单个值或键值对。在图形处理单元上实现集合和集合运算的一种方式是以哈希表的形式表示该集合。GPU上的工业标准哈希表实现提供了有界哈希表(基本哈希表/紧凑哈希表/多值哈希表)的略微不同的变型,但是所有这些变型具有一个共同点——固定大小(32位)的键和值。这将可以存储在单个哈希表中的元素的域限制为大约2^32(或将近40亿)。这种限制的原因的主要因素是相对较小的设备存储器大小。这种限制使得高度并行的、尤其针对大数据量的GPU算法的开发具有挑战性。而且,哈希的存在给哈希集合的插入/检索逻辑增加了显著的开销。
发明内容
提供本发明内容以便以简化形式介绍将在以下具体实施方式中进一步描述的一些概念。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
本文中描述的原理涉及使用由多核处理单元(诸如图形处理单元)提供的稀疏矩阵运算来执行集合运算。此外,在不使用哈希表来存储集合的情况下,并且在不使用哈希运算以便对该哈希表执行集合运算(诸如插入和查询)的情况下,执行集合运算。进行这样的哈希运算通常需要在哈希表上放置锁,从而一次通过有限的哈希运算集合。
因此,通过将集合运算转换为稀疏矩阵运算,并且在使用哈希表之前,可以以高并行度并且因此非常高效和快速地来执行集合运算。作为示例,可以将多个元素添加到极大的集合,或者可以使用单个并且快速的运算从大的集合中查询多个元素。此外,由于集合运算被转换为稀疏矩阵运算,所以即使在多核处理单元的库中不提供集合运算,这种集合运算也可以由多核处理单元来执行。因此,本文中所描述的原理还解锁了多核处理单元的潜力以高效并且快速地执行集合运算。
根据本文中描述的原理,输入集合被表示为第一矩阵集,该第一矩阵集包括至少第一矩阵,第一矩阵具有在具有与输入集合相同值的索引的每个位置处的比特值。然后,系统标识集合运算以及要使用集合运算执行的一个或多个运算对象(operand)。这些一个或多个运算对象则以第二矩阵集的形式来表示,该第二矩阵集包括第二矩阵,第二矩阵具有在具有与一个或多个运算对象中的任意运算对象相同值的索引的每个位置处的比特值。然后标识与集合运算相对应的稀疏矩阵运算。然后,多核处理单元使用第一矩阵集和第二矩阵集执行稀疏矩阵运算,从而获得输出矩阵。然后,将该输出矩阵转换为输出集合,该输出集合表示对输入集执行集合运算以产生输出集合的结果。
附加的特征和优点将在以下的描述中阐述,并且从该描述中部分附加的特征和优点将是明显的,或者可以通过实践本文的教导而获知。本发明的特征和优点可以通过所附权利要求中特别指出的手段和组合来实现和获得。本发明的特征将从以下描述和所附权利要求中变得更完全地显而易见,或者可以通过如下所述的本发明的实践来获知。
附图说明
为了描述可以获得上述以及其他优点和特征的方式,将通过参考在附图中示出的具体实施例来呈现对以上简要描述的主题的更具体的描述。应理解,这些附图仅描绘了典型的实施例并且因此不应被认为是对范围的限制,将通过使用附图以附加的特征和细节来描述和解释实施例,在附图中:
图1说明了示例计算系统,在该示例计算系统中可采用本文中所描述的原理;
图2说明了根据本文所述原理的用于使用多核处理单元的稀疏矩阵库来执行集合运算的方法的流程图;以及
图3说明了包括多核处理单元的计算环境,并且可以执行图2的方法。
具体实施方式
本文描述的原理涉及使用由多核处理单元(诸如图形处理单元)提供的稀疏矩阵运算来执行集合运算。此外,在不使用哈希表来存储集合的情况下,并且在不使用哈希运算以便对该哈希表执行集合运算(诸如插入和查询)的情况下,执行集合运算。进行这样的哈希运算通常需要在哈希表上放置锁,从而一次通过有限的哈希运算集合。
因此,通过将集合运算转换为稀疏矩阵运算,并且在使用哈希表之前,可以以高并行度并且因此非常高效和快速地执行集合运算。作为示例,可以将多个元素添加到极大的集合,或者可以使用单个并且快速的运算从大的集合中查询多个元素。此外,由于集合运算被转换为稀疏矩阵运算,所以即使多核处理单元的库中不提供集合运算,这种集合运算也可以由多核处理单元来执行。因此,本文所中所描述的原理还解锁了多核处理单元的潜力以高效且快速地执行集合运算。
根据本文中描述的原理,输入集合被表示为第一矩阵集,该第一矩阵集包括至少第一矩阵,第一矩阵具有在具有与输入集合相同值的索引的每个位置处的比特值。然后,系统标识集合运算以及要使用集合运算执行的一个或多个运算对象。这些一个或多个运算对象则以第二矩阵集的形式来表示,该第二矩阵集包括第二矩阵,第二矩阵具有在与一个或多个运算对象中的任意运算对象具有相同值的索引的每个位置处的比特值。然后标识与集合运算相对应的稀疏矩阵运算。然后,多核处理单元使用第一矩阵集和第二矩阵集执行稀疏矩阵运算,从而获得输出矩阵。然后将该输出矩阵转换为输出集合,该输出集合表示对输入集执行集合运算以产生输出集合的结果。
因为在本文中描述的原理是在计算系统的上下文中执行的,所以将参考图1来呈现计算系统的一些介绍性讨论。然后,将参照图2和图3来描述使用多核处理单元的矩阵运算来执行集合运算。
现在,计算系统越来越多地采用各种各样的形式。例如,计算系统可以是手持设备、家用电器、笔记本计算机、台式计算机、大型机、分布式计算系统、数据中心或者甚至是传统上不被认为是计算系统的设备,诸如可穿戴设备(例如,眼镜)。在本说明书和权利要求书中,术语“计算系统”被广泛地限定为包括任何设备或系统(或其组合),该设备或系统包括至少一个物理的并且有形的处理器,以及其上能够具有可由处理器执行的计算机可执行指令的物理的并且有形的存储器。存储器可以采用任何形式,并且可以取决于计算系统的性质和形式。计算系统可以被分布在网络环境上,并且可以包括多组分(constituent)计算系统。
如图1所说明的,在其最基本的配置中,计算系统100包括至少一个硬件处理单元102和存储器104。处理单元102包括通用处理器。尽管不是必需的,但是处理单元102还可以包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)或任何其他专用电路。在一个实施例中,存储器104包括物理系统存储器。该物理系统存储器可以是易失性的、非易失性的或两者的一些组合。在第二实施例中,存储器是诸如物理存储介质的非易失性大容量存储器。如果计算系统是分布式的,则处理、存储器和/或存储能力也可以是分布式的。
计算系统100上还具有通常被称为“可执行组件”的多个结构。例如,计算系统100的存储器104被说明为包括可执行组件106。术语“可执行组件”是计算领域的普通技术人员所公知的结构的名称,该结构可以是软件、硬件或其组合。例如,在以软件实现时,本领域的普通技术人员将理解,可执行组件的结构可以包括可以在计算系统上执行的软件对象、例程、方法等。这种可执行组件存在于大量计算系统中、计算机可读存储介质中或其组合中。
本领域普通技术人员将认识到,可执行组件的结构存在于计算机可读介质上,使得在由计算系统的一个或多个处理器(例如,由处理器线程)来解释执行时,使计算系统执行功能。这种结构可以是计算机可读的,直接由处理器来读取(如可执行组件是二进制的情况)。备选地,该结构可以被构造为可解释的和/或经编译的(无论是在单级中还是在多级中),以便生成这种可以由处理器直接解释的二进制。在使用术语“可执行组件”时,对可执行组件的示例结构的这种理解完全在计算领域的普通技术人员的理解内。
术语“可执行组件”也被普通技术人员很好地理解为包括诸如硬编码或硬布线逻辑门的结构,该结构专有地或接近专有地以硬件实现,诸如在现场可编程门阵列(FPGA)、专用集成电路(ASIC)或任何其他专用电路内。因此,术语“可执行组件”是针对计算领域的普通技术人员所熟知的结构的术语,无论是以软件、硬件还是组合来实现。
在以下描述中,参考由一个或多个计算系统执行的动作来描述实施例。如果这种动作以软件实现,则响应于构成可执行组件的计算机可执行指令已经执行,(执行该动作的相关联的计算系统的)一个或多个处理器指示计算系统的操作。例如,这种计算机可执行指令可以被包括在形成计算机程序产品的一个或多个计算机可读介质上。这种操作的示例涉及数据的处理。如果这种动作专有地或接近专有地在硬件中(诸如在FPGA或ASIC中)实现,则计算机可执行指令可以是硬编码或硬连线逻辑门。计算机可执行指令(和操纵的数据)可以存储在计算系统100的存储器104中。计算系统100还可以包括允许计算系统100通过例如网络110与其他计算系统通信的通信信道108。
虽然并非所有计算系统都需要用户界面,但在一些实施例中,计算系统100包括用于与用户交互的用户界面系统112。用户界面系统112可以包括输出机构112A以及输入机构112B。本文中描述的原理不限于精确的输出机构112A或输入机构112B,因为这将取决于设备的性质。然而,输出机构112A可以包括例如扬声器、显示器、触觉输出、虚拟或增强现实、全息图等。输入机构112B的示例可以包括例如麦克风、触摸屏、虚拟或增强现实、全息图、摄像头、键盘、鼠标或其他指针输入、任何类型的传感器等。
本文中描述的实施例可以包括或利用包括计算机硬件的专用或通用计算系统,诸如例如一个或多个处理器和系统存储器,如下文更详细讨论的。本文中描述的实施例还包括用于承载或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。这种计算机可读介质可以是可由通用或专用计算系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理存储介质。承载计算机可执行指令的计算机可读介质是传输介质。因此,作为示例而非限制,本发明的实施例可以包括至少两种截然不同类型的计算机可读介质:存储介质和传输介质。
计算机可读存储介质包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储器、磁盘存储器、或其他磁存储设备、或任何其他物理的并且有形的存储介质,该存储介质可以用于以计算机可执行指令或数据结构的形式存储所需程序代码装置,并且可以由通用或专用计算系统访问。
“网络”被限定为能够在计算系统和/或模块和/或其他电子设备之间传输电子数据的一个或多个数据链接。在通过网络或另一通信连接(硬接线、无线或者硬接线或无线的组合)将信息传送或提供给计算系统时,计算系统适当地将该连接视为传输介质。传输介质可以包括网络和/或数据链接,该网络和/或数据链接可以用于承载计算机可执行指令或数据结构形式的所需程序代码装置,并且该网络和/或数据链接可以由通用或专用计算系统访问。上述的组合也应当被包括在计算机可读介质的范围内。
此外,在到达各种计算系统组件时,可以将计算机可执行指令或数据结构形式的程序代码装置从传输介质自动传送到存储介质(反之亦然)。例如,通过网络或数据链接接收的计算机可执行指令或数据结构可以被缓存在网络接口模块(例如,“NIC”)内的RAM中,然后最终被传送到计算系统RAM和/或计算系统处的较不易失性存储介质。因此,应当理解,存储介质可以被包括在还(或甚至主要)利用传输介质的计算系统组件中。
例如,计算机可执行指令包括当在处理器处被执行时使得通用计算系统、专用计算系统或专用处理设备执行特定的一个功能或一组功能的指令和数据。备选地或附加地,计算机可执行指令可以将计算系统配置为执行特定的一个功能或一组功能。例如,计算机可执行指令可以是二进制指令,或甚至是在由处理器直接执行之前经历一些翻译(例如编译)的指令,诸如中间格式指令(诸如汇编语言),或甚至是源代码。
尽管已经用特定于结构性特征和/或方法论的动作的语言描述了本主题,但是应当理解,所附权利要求中限定的主题不必限于上述特征或动作。相反,所描述的特征和动作是作为实现权利要求的示例形式来公开的。
本领域的技术人员将理解,本发明可以在具有多种类型的计算系统配置的网络计算环境中实践,包括个人计算机、台式计算机、笔记本计算机、消息处理器、手持设备、多处理器系统、基于微处理器的或可编程消费电子产品、网络PC、小型计算机、大型计算机,移动电话、PDA、寻呼机、路由器、交换机、数据中心、可穿戴设备(诸如眼镜)等。本发明还可以在分布式系统环境中实施,其中通过网络链接(通过硬连线数据链接、无线数据链接或通过硬连线和无线数据链接的组合)的本地和远程计算系统两者均执行任务。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设备两者中。
本领域技术人员还将理解,本发明可以在云计算环境中实施。云计算环境可以是分布式的,尽管这不是必需的。在分布时,云计算环境可以在一个组织和/或具有跨多个组织拥有的组件内被国际性地分布。在本说明书和所附权利要求中,“云计算”被限定为用于实现对可配置计算资源(例如,网络、服务器、存储器、应用和服务)的共享池的按需网络访问的模型。“云计算”的定义不限于在适当部署时可以从这种模型获得的其他众多优点中的任何优点。
针对本文中所公开的过程和方法,在该过程和方法中执行的操作可以以不同的顺序实现。此外,所概述的操作仅作为示例提供,这些操作中的一些操作可以是可选的、组合为更少的步骤和操作、补充进一步的操作或扩展为附加的操作而不减损所公开的实施例的本质。
图2说明了根据本文中所述原理的用于使用多核处理单元的稀疏矩阵库来执行集合运算的方法200的流程图。在一个实施例中,方法200由诸如图1的计算系统100的计算系统来执行。作为示例,图形处理单元在方法200内执行动作230,而另一更通用的处理单元执行方法200的其余部分。作为示例,动作201、202、211、221、222和240可以由诸如图1的计算系统100等计算系统来执行。在此情况下,响应于至少一个硬件处理单元102(该硬件助理单元102可以是不同于执行动作230的图形处理单元的通用处理单元)执行存储在存储器104中的一个或多个计算机可执行指令,这些动作可以被执行。特定地,计算机可执行指令被构造为在由至少一个硬件处理单元102执行时,使计算系统100执行方法200。
图3图示了包括多核处理单元350的计算环境300。在所图示的情况下,多核处理单元具有四个核351到354。然而,省略号355表示可以存在更多多核处理单元350的核。作为示例,多核处理单元350可以是包括数百或数千个不同核的图形处理单元,每个核能够并行地执行任务。
多核处理单元350包括函数库360,函数库360通常与多核处理单元350一起提供,并且程序员可以从中提取函数库360以便操作多核处理单元。作为示例,图形处理单元通常具有矩阵库(诸如矩阵库361),以及可能的其他功能(如省略号362所表示)。常规图形处理单元的矩阵库通常包括密集矩阵功能和稀疏矩阵功能。此外,针对密集矩阵和稀疏矩阵类别中的每个,矩阵库具有对一维矩阵以及二维矩阵进行运算的功能。这种矩阵通常在每个维度上具有高达2^32(或大约40亿)的域。
环境300还包括多个可执行组件,每个可执行组件如上文针对图1的可执行组件106所描述的那样被构造。例如,环境300包括集合/矩阵转换组件310、通用集合/矩阵运算转换组件330、运算对象/矩阵转换组件340以及矩阵/集合转换组件380。由于图2的方法200可以在图3的环境300中执行,现在将经常性地参考图3的环境300来描述图2的方法200。
参考图2,方法200包括获得输入集合(动作201)。在图3中,该输入集合被表示为输入集合301。正是该输入集合将经受特定的集合运算。在下文中称为“简单示例”的一个经简化的示例中,假设输入集合是{1,3},{1,3}是具有两个元素的集合,一个元素的值是1以及一个元素的值是3。该简单示例仅用于说明的目的。该主题示例在多个方面是简单的,即集合中元素的数目非常少,并且元素的值也在小范围内(即,从1到3)。实际的输入集合可以非常大并且包括任何数目的值。但是为了适当地理解,将参照主题示例来描述原理,并说明如何将原理扩展到更复杂的示例。
再次参考图2,方法200则包括将输入集合表示为至少包括第一矩阵的第一矩阵集(动作211)。在图3中,集合/矩阵转换组件310使用输入集合301来生成第一矩阵集311,该第一矩阵集311包括第一矩阵311A以及由省略号311B表示的可能的其他矩阵。在一个示例中,输入集合中的每个元素是一个值,在这种情况下,第一矩阵集311仅包括第一矩阵311A。然而,在下文进一步详细讨论的另一示例中,输入集合中的每个元素是键值对。在这种情况下,第一矩阵集311将包括针对键的第一矩阵和针对相应值的另一矩阵。
现在,假设输入集合仅包括值作为元素。在输入集合是{1,3}的简单示例中就是这种情况。在这种情况下,第一矩阵集311仅包括第一矩阵311A。具体地,第一矩阵包括在具有与输入集合的元素具有相同值的索引的每个位置处的比特值(例如,二进制1),否则具有相反的二进制值(例如,二进制0)。在我们的示例中,输入集合{1,3}内的元素的值落入0到3的范围内。因此,输入集合{1,3}被转换成矩阵[0101]。
这里,在第一位置处存在二进制1,其表示输入集合{1,3}中的第一元素(具有值1)。在这里的惯例中,集合中最左边的元素是在第零位置。在第三位置处同样存在二进制1,其表示输入集合{1,3}中的第二元素(值为3)。第一矩阵[0101]的第零个索引位置处的值是二进制0,其表示在输入集合{1,3}中不存在值为0的元素。同样地,第一矩阵[0101]的第二索引位置处的值也是二进制0,表示在输入集合{1,3}中不存在值为0的元素。因此,在简单示例中,输入集合{1,3}是输入集合301的示例,并且第一矩阵[0101]是对应的第一矩阵311A的示例。
在该简单示例中,第一矩阵是仅具有四个元素的一维矩阵。然而,第一矩阵集中的每个矩阵应当以多核处理单元接受该矩阵作为输入的方式来构造。例如,如果多核处理单元要对大小为2^32的一维稀疏矩阵执行功能,则第一矩阵将采取在索引位置1和3处具有二进制1并且在所有其他位置处具有二进制0的稀疏矩阵的形式。
特定的集合运算在输入集合上被执行。因此,方法200包括获得该特定集合的运算(动作202)。参考图3,特定集合运算302被图示为包括通用集合运算303以及一个或多个运算对象304。作为示例,通用集合运算303可以是插入或查询。(多个)运算对象304标识根据通用集合运算,什么元素将被运算。作为示例,假设“将2插入到集合中”的特定集合运算。这可以被分解为通用集合运算“插入”和运算对象“2”。
参考图2,对应于通用集合运算的矩阵运算被标识(动作221)。此外,在包括第二矩阵的第二矩阵集中表示特定集合运算的(多个)运算对象(动作222)。例如,在环境300中,特定集合运算302的通用集合运算303被提供给通用集合/矩阵运算转换组件330以生成通用矩阵运算331。该转换可以是运算的简单映射。例如,插入集合运算被映射到按位逻辑“或(OR)”稀疏矩阵运算。另一方面,查询集合运算被映射到按位逻辑“与(AND)”稀疏矩阵运算。
此外,在包括第二矩阵的第二矩阵集中表示特定集合运算的所标识的(多个)运算对象(动作222)。例如,在图3中,特定集合运算302的(多个)运算对象304被提供给运算对象/矩阵转换组件340,该运算对象/矩阵转换组件生成第二矩阵集341,第二矩阵集341包括第二矩阵341A以及由省略号341B表示的可能的其他矩阵。在输入集合包括的元素仅是值的情况下,第二矩阵集341仅包括第二矩阵341A。如果输入集合包括的元素是键值对,则可能存在第二矩阵集341内还包括其他矩阵的情况(取决于通用矩阵运算)。
为了说明,在输入集合是{1,3}的简单示例中,假设特定集合运算是将2插入到集合中。这里,如前所述,通用集合运算是插入集合运算,而相应的矩阵运算是按位逻辑“或”矩阵运算。此外,生成第二矩阵,使得在具有与任何运算对象具有相同值的索引的每个位置处具有比特值(例如,二进制1),否则在第二矩阵的其他索引位置处具有相反的比特值(例如,二进制0)。因此,再次假设具有四个索引位置0、1、2和3的矩阵,第二索引位置处的值被设置为二进制1(表示在这种情况下具有值2的元素将被运算——被插入),并且其他索引位置处的值每个都被设置为逻辑0。因此,如果要将2插入到输入集合{1,3}中,则第二矩阵采用形式[0010]。
针对多核处理单元的矩阵输入现在已准备好。因此,多核处理单元对第一矩阵集和第二矩阵集执行所标识的稀疏矩阵运算以生成输出矩阵(动作230)。在图3中,第一矩阵集311和第二矩阵集341被提供给多核处理单元350,多核处理单元对这两个矩阵集311和341执行通用矩阵运算331,从而产生输出矩阵371。在将2插入到输入集合{1,3}的简单示例中,多核处理单元将矩阵[0101]与矩阵[0010]按位逻辑“或”以获得输出矩阵[0111]。
返回图2,然后将输出矩阵转换为输出集合(动作240),从而完成对输入集合的特定集合运算的执行。参考图3,矩阵/集合转换组件380将输出矩阵371转换为输出集合381。在简单的示例中,利用具有对应于具有比特值(例如,二进制1)的输出矩阵的任何索引位置的值的元素来生成输出集合。因此,在简单示例中,输出矩阵[0111]被转换为输出集合{1,2,3}。
针对不同的输入集合和不同的特定集合运算重复方法200。例如,假设集合运算“查询集合是否具有1”将被应用于输入集合{1,2,3}。这里,通过将输入集合{1,2,3}表示为矩阵[0111]来获得第一矩阵。对应于“查询”的通用集合运算的通用矩阵运算是按位逻辑“与”。此外,运算对象是“1”,因此第二矩阵是[0100]。对两个矩阵[0111]和[0100]进行按位逻辑“与”产生输出矩阵[0100]。该输出矩阵被解释为“是,在输入集合中存在1”,因为在对应于值1的索引位置(在第一索引位置)存在二进制1。
刚刚描述的原理可以应用于增加复杂度的集合,并且可以应用于存在多个(以及可能大量的)运算对象的情况。取输入集合是{0,4,5,9,15}的情况,该输入集合以第一稀疏矩阵[1000110001000001]表示。现在假设集合运算是将10、13和14插入到输入集合中。第二矩阵将是[0000000000100110],在索引位置10、13和14处具有二进制1。用于插入集合运算的相应通用矩阵运算是按位逻辑“或”。因此,多核处理单元将对两个矩阵[1000110001000001]与[0000000000100110]进行按位逻辑“或”,得到输出矩阵[1000110001100111],该输出矩阵转换为{0,4,5,9,10,13,14,15}的输出集合。相似地,为了查询在该输出集合中是否存在6和10,输入集合{0,4,5,9,10,13,14,15}将被表示为第一矩阵[1000110001100111],并且与第二矩阵[0000001000100000]进行逻辑“与”以获得输出矩阵[0000000000100000],以推断出在输入集合中不存在6,但是在输入集合中存在10。
现在,考虑输入集合可以具有映射到2^32的值中的任何一个值。在这种情况下,输入集合被转换为一维稀疏矩阵,运算对象也被转换为一维稀疏矩阵。针对插入运算,这两个稀疏矩阵被按位逻辑“或”,而针对查询运算,这两个稀疏矩阵被按位逻辑“与”。如果输入集合可以具有映射到2^64的值中的任何一个值,则输入集合和运算对象集合被转换成维度2^32乘2^32的二维稀疏矩阵。然后,利用使用多核处理单元(尤其是如果使用图形处理单元)的一个快速运算来将多个值快速插入到即使如此大的集合中,或从如此大的集合中快速查询多个值。
在以上示例中,输入集合是值的集合。在这种情况下,第一矩阵集仅是第一矩阵,表示运算对象的第二矩阵集仅是第二矩阵。此外,通过对第一矩阵和第二矩阵进行按位逻辑“或”来执行插入运算,以及通过对第一矩阵和第二矩阵进行按位逻辑“与”来执行查询运算。然而,输入集合也可以是键值对集合。在该情况下,第一矩阵集包括表示键的第一矩阵和表示相应值的另一矩阵(我们将其称为“第三矩阵”)。此外,第二矩阵集包括第二矩阵以及取决于通用集合运算的另一矩阵(我们将其称为“第四矩阵”)。
仅出于说明性目的,我们将使用输入集合{b=5,d=6},该输入集合在本文中将被称为“简单键值示例”。这里,第一矩阵在存在相应键的每个位置处具有二进制1。例如,假设当且仅当输入集合存在具有键“a”的元素时,第零索引位置是二进制1;当且仅当输入集合存在具有键“b”的元素时,第一位置处是二进制1;当且仅当输入集合存在具有键“c”的元素时,第二位置处是二进制1,等等。因此,在这种情况下,第一矩阵集包括表示键的第一矩阵,其中第一矩阵具有对应于输入集合中存在键的位置的比特值(例如,二进制1)。这里,输入集合{b=5,d=6}中的键是与索引位置1相对应的“b”和与索引位置3相对应的“d”。因此,第一矩阵将是[0101]。此外,第一矩阵集还将包括表示对应的值的第三矩阵。第三矩阵包括在具有与该值的对应键相同位置的索引的每个位置处的值。因此,在输入集合为{b=5,d=6}的该简单示例中,第三矩阵将为[0506]。因此,参考图3,在该示例中,第一矩阵集311包括表示键的第一矩阵[0101]和表示值的第三矩阵[0506]。
在该简单键值示例中,假设集合运算是将对应于一个或多个键的值写入输入集合的写入运算。在该情况下,第二矩阵集的第二矩阵包括对应于要被写入的一个或多个键中的任意键的每个位置处的比特值,以及表示一个或多个键的对应值的第四矩阵,其中第四矩阵包括在具有与针对该值的对应键具有相同位置的索引的每个位置处的值。
作为说明性示例,假设简单键值示例被扩展以展示如果有将a=4和c=7写入输入集合的写命令将发生什么。这里,两个新键值对(a=4和c=7)被添加到输入集合。由于a和c是写入运算的运算对象,因此第二矩阵变为[1010]。此外,第四矩阵变为[4070],其表示要写入的“a”和“c”的值。矩阵运算包括将第一矩阵[0101]与第二矩阵[1010]进行按位逻辑“或”,以获得第一中间矩阵[1111]。该第一中间矩阵表示输出集合将包括针对a、b、c和d的键。此外,矩阵运算还包括将第三矩阵[0506]与第四矩阵[4070]相加,以获得第二中间矩阵[4576]。由此,输出集合可以被填充为{a=4,b=5,c=7,d=6}。换句话说,输出集合被表示为具有对应于第一中间矩阵[1111]的二进制1位置的键(或a、b、c和d),并且针对每个键,键的值被表示为对应于第二中间矩阵内的索引,该索引在与第一中间矩阵中的对应键相同的位置处。
继续该说明性示例,假设下一集合运算是从输入集合{a=4,b=5,c=7,d=6}中读取a和b。这里,第一矩阵[1111]表示键,以及第三矩阵[4576]表示对应的值。运算对象是a和b,因此第二矩阵是[1100],二进制1在与要读取的键相对应的位置处。矩阵运算将包括将第一矩阵与第二矩阵进行按位逻辑“与”,以生成第一中间矩阵,在此情况下第一中间矩阵将是[1100]。此外,第三矩阵(例如,[4576]与第一矩阵[1111]相乘,以获得第二中间矩阵(在这种情况下第二中间矩阵将是[4500]。然后通过两个矩阵(键矩阵和值矩阵)来获得输出集合。键矩阵是第一中间矩阵[1100]并且表示被读取的键值对的键(a和b)。值矩阵是表示正被读取的键的对应值的第二中间矩阵[4500]。因此,读取运算将读取包括a=4和b=5的两个键值对。
继续该说明性示例,现在假设将从输入集合中删除a=4和b=5键值对。这里,第一矩阵将再次包括对应于输入集合的键的每个位置处的比特值(例如,二进制1)。由于键a、b、c和d都存在于输入集合的键值对{a=4,b=5,c=7,d=6}中,因此第一矩阵将再次为[1111]。第二矩阵包括在与要删除的键相对应的每个位置处的比特值(例如,二进制1)。在此情况下,由于要删除a=4和b=5,所以第二矩阵将是[1100]。找到第二矩阵的按位补码[0011],并且对第一矩阵和第二矩阵的补码应用按位逻辑“与”以获得[0011]。这是表示对应的输出集合中的键的第一中间矩阵。然后,对第二矩阵[0011]的补码应用第三矩阵[4576]的乘法,以获得表示输出集合的值的第二中间矩阵[0076]。因此,从表示键的第一中间矩阵[0011]和表示值的第二中间矩阵[0076]导出输出集合,从而输出集合是{c=7,d=6}。注意,已经删除了a=4和b=5。
现在,考虑输入集合可以具有映射到2^32个键值对中的任何一个的值。在这种情况下,输入集合被转换为两个一维稀疏矩阵(一个针对键以及一个针对值),并且运算对象也被转换为一个或两个一维稀疏矩阵。刚刚描述的原理可以扩展到在如此大的输入集合中插入和查询多个项目的运算。如果输入集合可以具有映射到2^64个值中的任何一个的值,则输入集合和运算对象集合被转换为维度2^32乘2^32的二维稀疏矩阵。然后,利用使用多核处理单元(尤其是如果使用图形处理单元)的一个快速运算来将多个值快速插入到即使如此大的集合中,或从如此大的集合中快速查询多个值。
因此,这里描述的原理有利地利用多核处理单元(诸如图形处理单元)来对大输入集合执行非常快的集合运算。在不脱离本发明的精神或特征的情况下,本发明可以以其他特定形式实施。所描述的实施例在所有方面仅被认为是说明性的而非限制性的。因此,本发明的范围由所附权利要求而不是由前面的描述来指示。在权利要求的等同物的含义和范围内的所有变化都包含在其范围内。
Claims (10)
1.一种计算系统,包括:
一个或多个处理器;以及
一个或多个计算机可读介质,其上具有计算机可执行指令,所述计算机可执行指令被构造使得在由所述一个或多个处理器执行时,使所述计算系统使用由多核处理单元提供的矩阵运算通过执行以下操作来执行集合运算:
将输入集合表示为包括至少第一矩阵的第一矩阵集,所述第一矩阵包括在具有与所述输入集合的元素具有相同值的索引的每个位置处的比特值;
标识要在所述输入集合上被执行的集合运算;
标识被用于在所述输入集合上的所标识的所述运算集合中的一个或多个运算对象;
使用包括第二矩阵集的第二集合来表示所述一个或多个运算对象,所述第二矩阵集包括至少第二矩阵,所述第二矩阵包括在具有与所述一个或多个运算对象中的任意运算对象具有相同值的索引的每个位置处的比特值;
标识与所述集合运算相对应的稀疏矩阵运算;
使用多核处理单元对所述第一矩阵和所述第二矩阵执行所述稀疏矩阵运算,从而获得输出矩阵;以及
将所述输出矩阵表示为输出集合,所述输出集合表示对所述输入集合执行所述集合运算的结果。
2.根据权利要求1所述的计算系统,所述输入集合是值集合。
3.根据权利要求2所述的计算系统,所述集合运算包括将一个或多个值插入到所述输入集合以生成所述输出集合的插入运算,所述一个或多个运算对象是要被插入的所述一个或多个值,所述矩阵运算包括按位逻辑“或”运算。
4.根据权利要求2所述的计算系统,所述集合运算包括查询所述输入集合是否包括一个或多个值的查询运算,所述一个或多个运算对象是要被查询的所述一个或多个值,所述矩阵运算包括按位逻辑“与”运算。
5.根据权利要求1所述的计算系统,所述输入集合包括键值对集合,将输入集合表示为第一矩阵集包括将所述输入集合表示为表示键的第一矩阵,所述第一矩阵包括在对应于所述输入集合的键的每个位置处的比特值,所述第一矩阵集还包括表示对应值的第三矩阵,所述第三矩阵包括在具有与针对所述值的对应的所述键具有相同位置的索引的每个位置处的所述值。
6.根据权利要求5所述的计算系统,所述集合运算包括写入运算,以写入与来自所述输入集合的一个或多个键相对应的值,所述第二矩阵包括在与所述一个或多个键中的任意键相对应的每个位置处的比特值,所述第二矩阵集包括表示所述一个或多个键的对应的值的第四矩阵,所述第四矩阵包括在具有与针对所述值的对应的所述键具有相同位置的索引的每个位置处的所述值,
所述矩阵运算包括对所述第一矩阵与所述第二矩阵进行按位逻辑“或”以生成第一中间矩阵,以及对所述第三矩阵与所述第四矩阵的加法以生成第二中间矩阵,
将所述输出矩阵表示为输出集合包括:
将所述输出集合表示为具有与所述第一中间矩阵的位置相对应的键;以及
针对所述键中的每个键,将所述键的所述值表示为与所述第二中间矩阵内的所述索引相对应,所述索引在与所述第一中间矩阵中对应的所述键的相同位置处。
7.根据权利要求1所述的计算系统,所述输入集合包括键值对集合并且所述第一矩阵表示所述键值对集合中的键,所述第一矩阵包括在与所述输入集合的键相对应的每个位置处的比特值,所述集合运算包括从所述键值对集合中读取一个或多个键值对的读取运算,所述第二矩阵包括与要从所述键值对集合中被读取的所述键值对的所述键中的任意键相对应的每个位置处的比特值,
所述矩阵运算包括对所述第一矩阵与所述第二矩阵进行按位逻辑“与”以生成第一中间矩阵,以及对所述第三矩阵和所述第一矩阵的乘法以生成第二中间矩阵,
将所述输出矩阵表示为输出集合包括:
将所述输出集合表示为具有与所述第一中间矩阵的位置相对应的键;以及
针对所述键中的每个键,将所述键的所述值表示为与所述第二中间矩阵中的所述索引位置相对应,所述索引位置在与所述第一中间矩阵中对应的所述键的相同位置处。
8.根据权利要求1所述的计算系统,所述输入集合包括键值对集合,并且所述第一矩阵表示所述键值对集合中的键,所述第一矩阵包括在与所述输入集合的键相对应的每个位置处的比特值,所述集合运算包括从所述键值对集合中删除一个或多个键值对的删除运算,所述第二矩阵包括与从所述键值对集合中要被删除的所述键值对的所述键中的任意键相对应的每个位置处的比特值,所述矩阵运算包括对所述第一矩阵与所述第二矩阵进行按位逻辑“与”以生成表示替换键集合的输出矩阵。
9.根据权利要求1所述的计算系统,所述多核处理单元是图形处理单元。
10.一种用于使用处理器的稀疏矩阵库以使用由多核处理单元提供的矩阵运算来执行集合运算的方法,所述方法包括:
将输入集合表示为包括至少第一矩阵的第一矩阵集,所述第一矩阵包括在具有与所述输入集合的元素具有相同值的索引的每个位置处的比特值;
标识要在所述输入集合上被执行的集合运算;
标识被用于在所述输入集合上的所标识的所述运算集合中的一个或多个运算对象;
使用包括第二矩阵集的第二集合来表示所述一个或多个运算对象,所述第二矩阵集包括至少第二矩阵,所述第二矩阵包括在具有与所述一个或多个运算对象中的任运算对象具有相同值的索引的每个位置处的比特值;
标识与所述集合运算相对应的稀疏矩阵运算;
使用多核处理单元对所述第一矩阵和所述第二矩阵执行所述稀疏矩阵运算,从而获得输出矩阵;以及
将所述输出矩阵表示为输出集合,所述输出集合表示对所述输入集合执行所述集合运算的结果。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/848,395 | 2020-04-14 | ||
US16/848,395 US11494463B2 (en) | 2020-04-14 | 2020-04-14 | Set operations using multi-core processing unit |
PCT/US2021/018084 WO2021211199A1 (en) | 2020-04-14 | 2021-02-15 | Set operations using multi-core processing unit |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115398423A true CN115398423A (zh) | 2022-11-25 |
Family
ID=74860535
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180028120.0A Pending CN115398423A (zh) | 2020-04-14 | 2021-02-15 | 使用多核处理单元的集合运算 |
Country Status (4)
Country | Link |
---|---|
US (3) | US11494463B2 (zh) |
EP (1) | EP4136551A1 (zh) |
CN (1) | CN115398423A (zh) |
WO (1) | WO2021211199A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11494463B2 (en) * | 2020-04-14 | 2022-11-08 | Microsoft Technology Licensing, Llc | Set operations using multi-core processing unit |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7197620B1 (en) | 2002-12-10 | 2007-03-27 | Unisys Corporation | Sparse matrix paging system |
US8775495B2 (en) | 2006-02-13 | 2014-07-08 | Indiana University Research And Technology | Compression system and method for accelerating sparse matrix computations |
EP2058740A1 (en) | 2006-08-30 | 2009-05-13 | Fujitsu Limited | High-speed calculation process method of combination equation based on finite element method and boundary element method |
US8862653B2 (en) | 2011-04-26 | 2014-10-14 | University Of South Carolina | System and method for sparse matrix vector multiplication processing |
US20130226535A1 (en) | 2012-02-24 | 2013-08-29 | Jeh-Fu Tuan | Concurrent simulation system using graphic processing units (gpu) and method thereof |
CN102750262A (zh) | 2012-06-26 | 2012-10-24 | 清华大学 | 基于omp算法在gpu上实现稀疏信号恢复的方法 |
CN104123452B (zh) | 2014-07-18 | 2017-10-10 | 西北工业大学 | 基于模糊决策的gpu负载综合评判方法 |
JP2019148969A (ja) * | 2018-02-27 | 2019-09-05 | 富士通株式会社 | 行列演算装置、行列演算方法および行列演算プログラム |
US11392376B2 (en) * | 2019-04-11 | 2022-07-19 | Arm Limited | Processor for sparse matrix computation |
US11494463B2 (en) * | 2020-04-14 | 2022-11-08 | Microsoft Technology Licensing, Llc | Set operations using multi-core processing unit |
-
2020
- 2020-04-14 US US16/848,395 patent/US11494463B2/en active Active
-
2021
- 2021-02-15 EP EP21710793.7A patent/EP4136551A1/en active Pending
- 2021-02-15 CN CN202180028120.0A patent/CN115398423A/zh active Pending
- 2021-02-15 WO PCT/US2021/018084 patent/WO2021211199A1/en unknown
-
2022
- 2022-09-30 US US17/958,000 patent/US11941078B2/en active Active
-
2024
- 2024-02-22 US US18/584,678 patent/US20240193229A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4136551A1 (en) | 2023-02-22 |
US11494463B2 (en) | 2022-11-08 |
US11941078B2 (en) | 2024-03-26 |
US20240193229A1 (en) | 2024-06-13 |
WO2021211199A1 (en) | 2021-10-21 |
US20230028789A1 (en) | 2023-01-26 |
US20210319078A1 (en) | 2021-10-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3797387A1 (en) | Exercising artificial intelligence by refining model output | |
US11106437B2 (en) | Lookup table optimization for programming languages that target synchronous digital circuits | |
US11449761B2 (en) | Efficient value lookup in a set of scalar intervals | |
US11144286B2 (en) | Generating synchronous digital circuits from source code constructs that map to circuit implementations | |
US20240193229A1 (en) | Set operations using multi-core processing unit | |
US20230078918A1 (en) | Devices and methods for efficient execution of rules using pre-compiled directed acyclic graphs | |
Sadredini et al. | FlexAmata: A universal and efficient adaption of applications to spatial automata processing accelerators | |
Blanco et al. | Cstf: Large-scale sparse tensor factorizations on distributed platforms | |
Freksen et al. | On using Toeplitz and Circulant matrices for Johnson–Lindenstrauss transforms | |
Stehle et al. | ParPaRaw: Massively parallel parsing of delimiter-separated raw data | |
WO2023146737A1 (en) | Multi-variate anomalous access detection | |
Gupta et al. | A study of big data analytics using apache spark with Python and Scala | |
CN112286594B (zh) | 对象序列化和反序列化方法及设备、电子设备和介质 | |
CN111357203A (zh) | 用于将大数据变换成较小的表示的系统和方法 | |
Sklyarov et al. | Multi-core DSP-based vector set bits counters/comparators | |
WO2022103521A1 (en) | Data leak detection using similarity mapping | |
EP4199361A1 (en) | Compressed graph notation | |
Luo et al. | P-DOT: A model of computation for big data | |
Grout et al. | Processing in Memory for Mathematics of Arrays Operations | |
US7333032B1 (en) | System, method and computer program product for word-level computations and storage | |
Gonzalez et al. | Arrangements for communicating data in a computing system using multiple processors | |
Sun et al. | FPGA-based acceleration architecture for Apache Spark operators | |
US11487467B1 (en) | Layered memory mapped file technology | |
Rump | Mathematically rigorous global optimization in floating-point arithmetic | |
US11093218B2 (en) | Dynamic pattern matching code generation |
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 |