当前位置: 首页 > 专利查询>辉达公司专利>正文

使用多个GPU对散列表有效且可扩展地构建和探测制造技术

技术编号:29600976 阅读:25 留言:0更新日期:2021-08-06 20:05
所描述的方法提供了使用多个GPU来有效地且可扩展地构建和探测散列表并物化探测的结果。由GPU进行的用于构建和/或探测散列表的随机存储器访问可以分布在GPU上并且使用全局位置标识符并发地执行。全局位置标识符可从条目的数据计算并使用该条目来标识用于插入和/或探测的全局位置。全局位置标识符可由GPU使用以确定是否使用条目执行插入或探测和/或在哪里执行插入或探测。为了在物化探测散列表的结果时协调GPU,可以在GPU中的每个GPU可访问的存储器中维护到全局输出缓冲区的全局偏移,或者GPU可以使用本地输出缓冲区大小的排他和来计算全局偏移。

【技术实现步骤摘要】
【国外来华专利技术】使用多个GPU对散列表有效且可扩展地构建和探测
技术介绍
数据可以通过多个表存储在关系数据库中。表格根据数据库模式(诸如星形模式)彼此引用。可以提交查询——诸如SQL查询——以针对表格进行处理,以便返回所请求的数据。该处理可涉及任何数量的操作,其可实现关系代数,其示例包括连接(join)、分组(groupby)、排序(orderby)等。在许多系统中,处理查询时的性能瓶颈在于执行关系的联合。一个这样的示例是在在线分析处理(OLAP)中,其允许用户从多个视角交互地分析多维数据。已经发现,在使用图形处理单元(GPU)的系统中,可以显著加速大关系的联合。在基于散列的联合算法中,GPU可以使用构建表(其还可以被称为“维度表”)来在构建阶段中创建散列表,然后在探测阶段中用来自探测表(其也可以被称为“事实表”并且通常大于构建表)的条目来探测散列表。构建阶段可涉及从构建表读取行,对其连接键(joinkey)上的行进行散列以计算散列值,以及将其有效载荷(以及可选地其键或指向键的指针)插入到散列表中对应于散列值的位置处。在探测阶段期间,GPU可从探测表读取行,对其连接键上的行进行散列以计算散列值,且使用所述行的散列值来探测散列表中的匹配行。然而,虽然使用GPU可加速此过程,但由于单个GPU的速度或存储器容量,单个GPU可能不总是足以足够快地或根本不足以连接输入表。例如,单个GPU可能不具有足够的存储器来存储用于连接的散列表,或可能由于用于建立和/或探测散列表的随机存储器访问的数目而比所想要的更慢地执行连接。
技术实现思路
本公开的实施例提供了使用多个GPU对散列表的有效且可扩展的构建和探测。具体地,本公开提供了用于有效地和可扩展地使用多个GPU来构建散列表、探测散列表和物化(materialize)探测散列表的结果的方法,其可以用于实现多GPU连接。虽然常规方法提供用于使用单个GPU来实现表的连接,但本公开描述了用于利用多个GPU来实现表的连接的解决方案。描述了用于建立散列表、探测散列表和物化探测的结果的不同方法,这些方法中的一些可以结合其他方法或与其他方法一起使用。所公开的方法可在处理连接操作中利用多个GPU的存储器,以增加系统可用的有效存储器容量。所公开的方法还可在处理连接操作时利用并行执行的多个GPU的处理能力,以相对于常规方法减少连接的运行时间。在不同示例中,可以使用全局位置标识符(ID)在多个GPU上并行地执行构建和/或探测散列表所需的随机存储器访问。全局位置ID可从条目的数据(从条目的一个或更多个键)计算并且标识与条目相关联的全局位置(例如,在散列表中)。在构建散列表时,可向每个GPU分配散列表的一个或更多个部分(例如,分区),且GPU可从构建表中的条目计算全局位置ID,以针对一条目确定是否使用所述条目执行插入和/或要在何处执行插入。在探测散列表时,GPU可从探测表中的条目计算全局位置ID,以针对条目确定是否使用条目执行探测和/或要在何处执行探测。本公开进一步描述用于在物化散列连接操作的探测阶段中的结果时协调GPU的方法,这可允许对全局输出缓冲区的并行写入。在一些方法中,在GPU中的每个GPU可访问的存储器中维持到全局输出缓冲区的全局偏移,以指示每个GPU应将结果的一部分写入何处。当GPU用于写入结果的一部分(例如,直接地,没有本地缓存)时,可递增全局偏移以考虑全局偏移缓冲区中的结果的该部分的大小。在其他方法中,GPU可将结果的部分写入到本地或初始输出缓冲区。为了将结果的部分物化到全局输出缓冲区,GPU可以计算本地或初始输出缓冲区大小的排斥和(exclusivesum)。排斥和可向每个本地或初始输出缓冲区提供到全局输出缓冲区的全局偏移,以指示应将来自本地或初始输出缓冲区的结果的部分写入到全局输出缓冲区中的何处。附图说明1.以下参照所附附图详细描述用于使用多个GPU对散列表有效且可扩展地构建和探测的本系统和方法,其中:2.图1是根据本公开的一些实施例的多GPU分布式处理系统的示例系统图;3.图2是示出了根据本公开的一些实施例的使用多个GPU的散列表的分布式构建的示例的示图;4.图3是示出了根据本公开的一些实施例的将散列表复制到多个GPU的示例的示图;5.图4是示出了根据本公开的一些实施例的使用多个GPU和固定散列表分区对散列表进行分布式探测的示例的示图;6.图5是示出了根据本公开的一些实施例的使用多个GPU和固定探测表部分来对散列表进行分布式探测的示例的示图;7.图6是示出了根据本公开的一些实施例的使用多个GPU和全局偏移变量对散列表的分布式探测的结果进行物化的示例的示图;8.图7是示出了根据本公开的一些实施例的使用多个GPU和本地输出缓冲区的大小来物化散列表的分布式探测的结果的示例的示图;9.图8是示出了根据本公开的一些实施例的用于使用多个GPU分布式构建散列表的方法的流程图,其中构建表条目与本地散列表分区相关联;10.图9是示出了根据本公开的一些实施例的用于使用多个分布式构建散列表的方法的流程图,其中构建表条目与远程散列表分区相关联;11.图10是示出了根据本公开的一些实施例的用于使用多个GPU对散列表进行分布式探测的方法的流程图,其中探测表条目与本地散列表分区相关联;12.图11是示出了根据本公开的一些实施例的用于使用多个GPU对散列表进行分布式探测的方法的流程图,其中探测表条目与远程散列表分区相关联;13.图12是示出了根据本公开的一些实施例的用于使用多个GPU和全局偏移变量对散列表的分布式探测的结果进行物化的方法的流程图;14.图13是示出了根据本公开的一些实施例的用于使用多个GPU和本地偏移缓冲区的大小来物化散列表的分布式探测的结果的方法的流程图;以及15.图14是适合用于实现本公开一些实施例的示例计算设备的框图。具体实施方式本公开提供了使用多个GPU对散列表的有效且可扩展的构建和探测。在各个方面,本公开提供了用于使用多个GPU来有效地和可扩展地构建散列表、探测散列表和物化探测散列表的结果的方法,其可以用于实现多GPU连接或涉及散列表的构建和/或探测的其他操作。在不同示例中,可以使用全局位置标识符(ID)在多个GPU上并行地执行构建和/或探测散列表所需的随机存储器访问。全局位置ID可从条目的数据(从条目的一个或更多个键)计算且识别与条目相关联的全局位置(例如,在散列表中和/或在特定GPU处)。例如,散列值可从每个条目的键计算,且用于导出条目的全局位置ID。全局位置ID的示例包括散列表的全局散列值索引、散列表的全局桶ID、GPUID和/或散列表分区ID。在构建散列表时,可向每个GPU分配散列表的一个或更多个部分(例如,分区),且GPU可从构建表中的条目计算全局位置ID,以针对一条目确定是否使用条目执行插入和/或要在何处执行插入。在一些方法中——为了使用多个GPU以分布式方式构建散列表——每个GPU可以被指派或分配散列表的分区,并且用于操作的构建表可以跨本文档来自技高网...

【技术保护点】
1.一种方法,包括:由图形处理单元(GPU)接收构建表的部分;从所述构建表的所述部分中的条目计算全局位置标识符,所述全局位置标识符将来自多个GPU的指定GPU识别为被分配用于插入所述条目的散列表的散列表分区;由所述GPU基于所述全局位置标识符执行所述条目在所述散列表分区中的所述插入;以及由所述GPU使用探测表的至少一部分来探测所述散列表的至少一部分以产生一个或更多个结果。/n

【技术特征摘要】
【国外来华专利技术】20181023 US 62/749,5111.一种方法,包括:由图形处理单元(GPU)接收构建表的部分;从所述构建表的所述部分中的条目计算全局位置标识符,所述全局位置标识符将来自多个GPU的指定GPU识别为被分配用于插入所述条目的散列表的散列表分区;由所述GPU基于所述全局位置标识符执行所述条目在所述散列表分区中的所述插入;以及由所述GPU使用探测表的至少一部分来探测所述散列表的至少一部分以产生一个或更多个结果。


2.根据权利要求1所述的方法,其中所述一个或更多个结果包括作为对关系数据库执行查询的部分而执行的联合操作的输出。


3.根据权利要求1所述的方法,其中所述插入的所述执行是基于确定所述条目的一个或更多个键的散列值落在分配给所述GPU的所述散列表分区内。


4.根据权利要求1所述的方法,其中所述全局位置标识符是标识所述条目在所述散列表中的位置的全局散列索引。


5.根据权利要求1所述的方法,还包括:由所述GPU基于所述全局位置标识符从所述构建表的所述部分中过滤条目,并且生成所述构建表的不包括针对所述GPU的条目的经过滤的部分;以及将所述构建表的所述经过滤的部分发送至所述多个GPU中的不同GPU,所述发送引起所述构建表的所述经过滤的部分中的一个或更多个条目在所述散列表中的一个或更多个插入。


6.根据权利要求1所述的方法,还包括:在将所述条目插入所述散列表分区中之后,跨所述多个GPU合并所述散列表的散列表分区,以在所述多个GPU中的每个GPU上形成所述散列表的完全复制副本,其中所述探测中使用的所述散列表的所述至少一部分是所述GPU上的所述散列表的所述完全复制副本。


7.根据权利要求1所述的方法,其中在所述探测中使用的所述散列表的所述至少一部分是所述GPU处的所述散列表分区。


8.根据权利要求1所述的方法,其中所述构建表的所述部分是基于将所述GPU标识为所述指定GPU的所述全局位置标识符从所述多个GPU中的不同GPU接收的。


9.根据权利要求1所述的方法,其中:所述接收构建表的部分是在所述GPU的第一缓冲区中,所述第一缓冲区用于在所述GPU的迭代中分析所述条目,所述GPU迭代地分析所述构建表的条目以便插入到所述散列表中,并且所述方法还包括:在所述GPU的第二缓冲区处从所述多个GPU中的不同GPU接收所述构建表的不同部分,所述第二缓冲区在所述迭代中用作用于所述GPU迭代地分析所述构建表的条目以插入到所述散列表中的后续迭代的分级缓冲区。


10.一种方法,包括:由第一图形处理单元(GPU)接收构建表的部分,所述第一GPU来自多个GPU;从所述构建表的所述部分中的条目计算全局位置标识符,所述全局位置标识符将...

【专利技术属性】
技术研发人员:T·卡尔德魏J·J·克劳斯N·萨哈尼赫
申请(专利权)人:辉达公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1