基于协处理器的面向数组的数据库处理的制作方法

文档序号:9476206阅读:195来源:国知局
基于协处理器的面向数组的数据库处理的制作方法
【专利说明】
【背景技术】
[0001]数组(array)处理在包括机器学习、图表分析和图像处理的许多领域中具有广泛的应用。这样的数组的重要性已经导致新的存储和分析系统,诸如面向数组的数据库(AODB)t3AODB是基于多维数组数据模型来组织的并且支持具有要在数组上执行的数学操作符(诸如合并数组操作、筛选数组操作等等)的结构化查询语言(SQL)类型的查询。AODB已经应用于宽泛范围的应用,包括地震分析、基因组测序、算法贸易和保险覆盖范围分析。
【附图说明】
[0002]图1是根据示例实现方式的面向数组的数据库(AODB)系统的示意图。
[0003]图2是根据示例实现方式的由图1的AODB系统使用的处理工作流的图示。
[0004]图3是作为组块大小的函数的供中央处理单元(CPU)和协处理器处理数据组块的时间的图示。
[0005]图4和5图示了根据示例实现方式的由图2的AODB系统执行以调节用于由协处理器处理的数据的示例格式转换。
[0006]图6是根据示例实现方式的基于协处理器的处理和基于CPU的处理的性能对工作负载类型的图示。
[0007]图7和8是描绘了根据示例实现方式的通过选择性地使用基于CPU的处理和基于协处理器的处理来处理对AODB系统的用户输入的技术的流程图。
【具体实施方式】
[0008]对于诸如涉及稠密矩阵乘法、K均值聚类、稀疏矩阵计算和图像处理(仅举几个示例)的分析之类的复杂多维分析而言,面向数组的数据库(AODB)可能比传统数据库相对更加高效。然而,AODB可能变得被算法复杂度和数据集大小所压垮。本文公开了通过将查询的处理分布在中央处理单元(CPU)和协处理器之间以用于高效处理对基于AODB的系统的查询的目的的系统和技术。
[0009]—般而言,协处理器受CPU监管,因为协处理器可能在其执行一些CPU式功能(诸如例如从系统存储器检索指令)的能力方面受限。然而,在对基于AODB的系统的查询的处理中包括一个或多个协处理器利用了协处理器执行基于数组的计算的能力。以此方式,相比于CPU,协处理器可以具有相对大数目的处理核。例如,诸如NVIDIA Tesla M2090图形处理单元(GPU)之类的协处理器可以具有16个多处理器,其中每一个具有32个处理核,总计512个处理核。将这与给定CPU相比,给定CPU可能具有例如8或16个处理核。尽管给定CPU处理核可能拥有比给定协处理器处理核显著更多的处理能力,但是与协处理器的处理核并行处理数据的能力结合的协处理器的处理核的相对大的数目使得协处理器相当适合于数组计算,数组计算通常涉及在大数目的数组条目上执行相同的操作。
[0010]对于本文所公开的示例实现方式,协处理器是图形处理单元(GPU),尽管依照另外的实现方式可以使用其它类型的协处理器(数字信号处理(DSP)协处理器、浮点算术协处理器等等)。
[0011]依照示例实现方式,AODB系统的(一个或多个)GPU和(一个或多个)CPU可以部署在至少一个计算机(服务器、客户端、超极本计算机、台式计算机等等)上。更具体地,GPU可以部署在计算机的扩展卡上并且可以与计算机的组件通过诸如例如快速外围组件互连(PCIe)总线之类的扩展总线通信。扩展卡可以包含本地存储器,其与计算机的主系统存储器分离;并且计算机的CPU可以使用PCIe总线以用于向GPU的本地存储器递送数据和指令的目的,使得GPU可以访问指令和数据以用于处理。此外,当GPU产生作为该处理的结果的数据时,数据被存储在GPU的本地存储器中,并且CPU可以同样地使用PCIe总线通信来指导数据从GPU的本地存储器到系统存储器的递送。
[0012]在另外的实现方式中,GPU可以位于除PCIe总线之外的总线上。此外,在另外的实现方式中,GPU可以是集成到计算机中的芯片或芯片组,并且照此,GPU可以不被部署在扩展卡上。
[0013]图1描绘了根据示例实现方式的基于AODB的数据库系统100的示例实现方式。系统100被构造成处理描述基于数组的操作的用户输入150。作为示例,依照示例实现方式,系统100可以被构造成处理SciDB类型的查询,其中“SciDB”是指特定开源数组管理和分析数据库。以此方式,依照一些示例实现方式,用户输入150可以是数组查询语言(AQL)查询(类似于SQL查询但是指定数学操作)或者数组函数语言(AFL)查询。此外,用户输入150可以例如通过诸如R之类的基于数组的编程语言来生成。
[0014]—般而言,用户输入150可以是查询或用户定义的函数。无论其特定形式如何,用户输入150定义要由数据库系统100执行的操作。以此方式,一般而言,查询可以使用作为由AODB定义的操作符集的部分的操作符,而用户定义的函数允许用户指定定制算法和/或数组数据上的操作。
[0015]给定用户输入150可以与本文称为“数据组块”的数据的一个或多个单元相关联。作为示例,由用户输入150描述的给定数组操作可以与一个或多个数组的分区相关联,并且每一个组块对应于分区之一。系统100在系统100的一个或多个CPU 112和一个或多个GPU 114之间分布针对数据组块的计算任务。在该上下文中,“计算任务”可以被视为用于给定数据组块的计算内核。每一个CPU 112可以具有一个或多个处理核(作为示例,8或16个处理核),并且每一个CPU处理核是用于运行线程以执行给定计算任务的潜在候选。每一个GPU 114也可以包含一个或多个处理核(作为示例,512个处理核),并且GPU 114的处理核可以并行执行指派给GPU 114的给定计算任务。
[0016]对于前述示例,假定AODB系统100由诸如示例物理机110_1之类的一个或多个物理机110形成。一般而言,物理机110是由实际硬件和实际机器可执行指令或“软件”构成的实际机器。在这方面,如图1中所描绘的,物理机110-1包括如一个或多个CPU 112 ;一个或多个GPU 114 ;主系统存储器130 (即用于机器110-1的工作存储器);与储存器117 (—个或多个硬盘驱动器、固态驱动器、光学驱动器等等)通信的储存器接口 116 ;网络接口等等这样的硬件,如技术人员可以领会的那样。
[0017]如图1中所描绘的,每一个GPU 114具有本地存储器115,其(例如经由PCIe总线递送)从系统存储器130接收要由GPU 114处理的指令和数据组块并且存储从GPU的处理得出的数据组块,所述数据组块(经由例如PCIe总线递送)被递送回到系统存储器130中。此外,CPU 112中的一个或多个可以运行机器可执行指令以形成基于AODB的数据库120的模块或组件以用于处理用户输入150的目的。
[0018]对于图1中所描绘的示例实现方式,AODB数据库120包括解析用户输入150的解析器122 ;并且作为该解析的结果,解析器122标识要被处理的一个或多个数据组块和要在(一个或多个)数据组块上执行的一个或计算任务。AODB数据库120还包括调度要由(一个或多个)CPU 112和(一个或多个)6?1] 114执行的计算任务的调度器134。以此方式,调度器134将指示计算任务的数据放置在运行器126的队列127中并且对该数据加标签以指示哪些计算任务要由(一个或多个)CPU 112执行以及哪些计算任务要由(一个或多个)GPU 114执行。
[0019]基于由队列127中的数据所指示的调度,运行器126从储存器117检索对应数据组块118并且将组块118存储在系统存储器130中。对于CPU运行的计算任务,运行器126发起由(一个或多个)CPU 112对计算任务的运行;并且(一个或多个)CPU 112从系统存储器130存取数据组块以用于执行相关联的计算任务的目的。对于GPU运行的任务,运行器126可以将适当的数据组块从系统存储器130递送至GPU的本地存储器115中(例如经由PCIe总线递送)。
[0020]AODB数据库120还包括大小调整器或大小优化器124,其调整用于计算任务处理的数据组块大小。以此方式,尽管数据组块118可以被定尺寸以用于来自储存器117的组块118的高效递送(和用于经处理的数据组块到储存器117的高效递送),但是数据组块118的大小对于通过CPU 112或GPU 114的处理而言可能不是最优的。此外,用于CPU处理的数据组块的最优大小可能不同于用于GPU处理的数据组块的最优大小。
[0021]依照一些实现方式,AODB数据库120识别出组块大小影响计算任务处理的性能。以此方式,为了高效GPU处理,相对大的组块由于(作为示例)数据递送开销中的减少而可能是有益的,因为相对较大的组块更高效地递送到GPU的本地存储器115中和从其递送出来(例如经由PCIe总线递送);并且相对较大的组块增强GPU处理效率,因为GPU的处理核具有要并行处理的相对大量数据。这与用于CPU处理的组块大小形成对照,因为较小的组块大小可以增强分配数据局部性并且减少访问要在CPU 112线程之中处理的数据的开销。
[0022]大小优化器124基于在该组块上执行有关计算任务的处理实体而调整数据组块大小。例如,大小优化器124可以从储存器117加载相对大的数据组块118并且将相对大的数据组块存储在储存器117中以用于加速该数据去往和来自储存器117的传送的目的。大小优化器124基于处理这些组块的处理实体而选择性地合并和划分数据组块118以产生经修改大小的数据组块。以此方式,依照示例实现方式,大小优化器124在这些组块对应于由CPU 112执行的计算任务时将数据组块118划分成多个较小的数据组块,并且将这些经划分的块连同对应的CPU标签一起存储在队列127中。相反,大小优化器124可以将两个或更多数据组块118合并在一起以产生相对较大的数据组块以用于基于GPU的处理;并且大小优化器124可以将该经合并的组块连同适当的GPU标签一起存储在队列127中。
[0023]图3是根据示例实现方式的相对CPU和GPU响应时间对组块大小的图示300。在
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1