使用图形处理单元的统计分析的制作方法

文档序号:8344608阅读:222来源:国知局
使用图形处理单元的统计分析的制作方法
【技术领域】
[0001] 大规模或庞大规模统计分析(有时被称作MaSSA)可以涉及:一次检查大量数据。 例如,在天文学、物理学、遥感、海洋学和生物学中使用的科学仪器可以产生较大数据量。高 效处理这种大量数据可能是富有挑战性的。
【附图说明】
[0002] 关于下面的附图来描述一些实施例: 图1是根据示例实施方式的系统的示意图。
[0003] 图2是根据示例实施方式的系统的示意工作流图。
[0004] 图3是根据示例实施方式的数据结构的示意图。
[0005] 图4是描绘了根据示例实施方式的用于在GPU上执行指令的技术的流程图。
[0006] 图5是描绘了根据示例实施方式的用于使用GPU执行统计分析的技术的流程图。
【具体实施方式】
[0007] 传统数据库系统可能在为大规模统计分析处理数据时遭遇某些困难。当前数据库 系统可以接近于以元素粒度存储数据。例如,诸如矩阵之类的数据结构可以被存储在阵列 中,并且该矩阵中的每个数据元素可以对应于该阵列中的元素。具有许多元素的密集阵列 (例如,表示大矩阵的阵列)可以占用大量存储空间,并在一些情况下可以大于可用的存储 器。
[0008] 此外,数据库查询引擎使用迭代执行模型来逐元素地对所存储的数据执行函数。 由此,迭代遍历数据结构中的每个元素以满足复杂的查询请求可能是相对低效的。在较大 数据集的上下文中,可能加剧在执行这种查询请求时的低效,从而使数据库系统的性能降 级。
[0009] 图1是根据一些实施方式的示例系统100的示意图。系统100的数据库子系统 105可以包括彼此通信的处理器110、存储器120和储存器130。储存器130可以存储用户 定义数据135,其在下文中更详细描述。在一些实施方式中,用户定义数据135还可以被存 储在存储器120中。尽管在一些实施方式中对数据库子系统进行参考,但是注意,本文描述 的技术或机制还可以被用在其他系统中。
[0010] 数据库子系统105还可以与图形处理单元(GPU) 140进行通信。GPU 140可以耦 合至GPU存储器150, GPU存储器150可以存储GPU库160。GPU 140可以是能够执行传统 地由诸如处理器110之类的中央处理单元(CPU)执行的特定计算的图形处理单元。该能力 可以被称作图形处理单元中的通用计算(GPGPU)。这种能力可以附加于GPU 140的执行用 于计算机图形的计算的能力,计算机图形提供用于在显示设备(未示出)中显示的图像。
[0011] GPU库160可以提供接口以供数据库子系统105访问GPU 140,以便执行传统地由 CPU (例如,处理器110)执行的特定计算。的确,GPU库160可以提供对用于GPU 140以及 GPU存储器150的指令集的访问。例如,通过GPU库160,开发者可能能够使用标准编程语 言(诸如C)来对指令进行编码以在GPU 140上执行,以便利用GPU 140的并行处理架构。
[0012] 在一些实施方式中,GPU 140可以具有多个处理核,其中,每个核能够同时处理多 个线程。GPU 140可以具有相对较高的并行处理能力,这可以有益于诸如由大规模统计分析 产生的那些数据集之类的较大数据集上的操作。GPU 140内的某些处理核可以具有相对较 高的浮点计算能力,这可以在大规模统计分析中合适。其他处理核可以具有相对较低的浮 点计算能力并可以仅用于处理图形数据。例如,在矩阵上执行的代数运算(例如矩阵乘法、 转置、加法等)可以有助于由GPU 140提供的并行处理架构和浮点计算能力。
[0013] 在一些实施方式中,用户定义数据135可以包括用于将数据结构划分成多个段并 将这些段存储为表或阵列中的数据元素的指令。关于图3更详细地描述这种表。此外,用 户定义数据135还可以包括用于逐段地而不是逐元素地对数据结构执行操作的用户定义 函数。为了执行该操作,用户定义函数可以引用GPU库160以指示GPU 140执行该函数。
[0014] 图2提供了根据一些实施方式的数据库系统200的示意工作流图。数据库系统200 可以包括用于接收查询202并返回查询202的结果204的数据库引擎210。在一些实施方 式中,数据库引擎210可以包括与图1的数据库子系统105类似的部件,诸如处理器110和 存储器120。
[0015] 如图2中所示,数据库引擎210可以响应于接收到查询202而访问用户定义数据 220 (类似于图1中的用户定义数据135)。用户定义数据220可以包括在储存器230中存 储的数据元素上操作的用户定义函数。此外,这些数据元素可以被包含在大规模统计分析 中使用的大型数据结构内。由此,GPU 240中的GPU库250可以被调用或引用以执行用户 定义函数,以便利用GPU 240的并行处理能力。
[0016] 在一些实例中,数据库引擎210可以是使用PostgreSQL来实现的,PostgreSQL提 供了开源对象关系数据库管理系统(ORDBMS)。PostgreSQL可以提供框架以供开发者通过 使用各种用户定义的定义来扩展ORDBMS。例如,用户定义类型(UDT)可以使开发者能够在 PostgreSQL内创建唯一数据结构。类似地,用户定义函数(UDF)可以实现对在UDT上操作 的函数的创建。用户定义聚合体(UDA)可以是对一组值执行计算并返回单个值的UDF的 类型。因此,不是创建完全新的编程语言以管理大规模数据分析中的许多数据,而是诸如 PostgreSQL之类的现有数据库框架可以被简单地扩展以通过使用UDT、UDF和UDA来提供 期望的功能。
[0017] 例如,可以创建UDT数据结构,其用于将矩阵存储为子矩阵的集合,而不是矩阵中 的个体数据元素的集合。可以创建各种UDF和UDA,其可以在上面创建的UDT数据结构上操 作。例如,开发者可以创建对UDT数据结构执行矩阵乘法(即,以子矩阵粒度而不是以数据 元素粒度)的UDF。当与逐元素地操作的函数相比时该级别的抽象可以实现数据库系统200 中精简的输入/输出(I/O)操作。
[0018] 在一些实施方式中,GPU库250可以依照计算统一数据架构(CUDA)、开放计算语言 (OpenCL)或其组合。OpenCL可以提供用于编写可跨包括CPU、GPU和其他类型的处理器的异 构平台执行的程序的标准。因此,在OpenCL下编写的程序可以生成可由处理器110和GPU 140二者执行的指令。CUDA可以是有NVIDIA公司开发以具体管理NVIDIA GPU的并行计算 架构。使用CUDA,开发者可以使用"C"编程语言来调用CUDA库中的函数以执行NVIDIA GPU 上的指令。因此,在一些示例中,GPU 140可以是与CUDA库相关联的NVIDIA GPU。
[0019] 图3是描绘了根据一些实施方式的数据结构的示意图。在一些实例中,数据结构 可以是诸如矩阵A 310之类的矩阵。例如,矩阵A 310可以是具有16个数据元素的4X4 矩阵,并可以被划分成四个段P11 320、P12 330、P21 340和P22 350。P11 320可以表示矩阵A 310的左上段,P12 330可以表示右上段,P21 340可以表示左下段,并且P22 350可以表示右 下段。因此,每个段可以是矩阵A 310的2X2子矩阵。在一些实施方式中,段可以被称作 "组块"。
[0020] 然后,在将矩阵A 310划分成这四个段之后,然后可以由矩阵A' 360表示矩阵A, 矩阵A' 360可以包括每个段320-350或子矩阵作为数据元素。然后,可以将矩阵A' 360 存储成阵列,诸如表A 370,该阵列可以由计算机或其他处理设备识别。在一些实例中,可以 使用PostgreSQL中的UDT来定义表A 350以具体地在表A 350中将矩阵A 310存储为其 段320-250的集合而不是其个体元素的集合。
[0021] 此外,在一些实施方式中,可以以列优先形式将矩阵A 310存储在存储 器(例如,图1中的存储器120和/或GPU存储器150)中。列优先形式可以提 供用于将多维矩阵或其他数据结构线性化成一维数据结构或设备(诸如存储器 120/150)的技术,该一维数据结构或设备可以串行地存储数据。例如,考虑矩阵 以列优先形式,可以将该矩阵存储在一维矩阵中作为{1,4,2,5,3, 6}。此外, 以列优先形式存储数据可以适于促进某些GPU计算技术。然而,其他储存方法也是可能的, 诸如行优先、Z-序等。
[0022] 如前所提及,还可以创建某些UDF或UDA来在诸如表A 370之类的UDT数据结构 上操作。在一些实施方式中,表A 370可以将矩阵A 310概念化成两个行和两个列。因此, 表A 370的索引I 372可以表示矩阵A 310的行,而索引J 374可以表示矩阵A 310的列。 值376可以对应于由索引I 372和索引J 374的每个组合表示的子矩阵320-350。例如,子 矩阵P21 340是与索引1=2且索引J=I时相对应的值376。
[0023] 对于UD
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1