MapD开源了一款支持多GPU的数据库

原文:MapD Open Sources GPU-Powered Database
作者:Todd Mostak
翻译:雁惊寒

MapD Open Sources GPU-Powered Database

今天,我们非常高兴地宣布,MapD Core数据库及其可视化库开源了。

项目的代码托管在Github上,基于Apache 2.0协议。它能够构建全功能版的MapD Core数据库,该数据库能够在多GPU的服务器上对数十亿条记录进行二次查询。我们所有的核心技术,包括分层缓存系统和LLVM查询编译引擎,都包含在今天发布的这个开源版本中。

这样做是因为我们对开源软件的变革力量具有强烈的信念。无论是在Hadoop还是在深度学习的生态系统中,开源项目都带来了巨大的创新,这些都不是封闭软件所能带来的。

我的目标一直都是要向世界开放MapD,但是在最初的时候,由于代码库尚未成熟,我一直在犹豫是否要开源。所以我建立了这个产品,扩大了公司规模,并做了其他一些事情。

然而,在NEA(最近带领我们进行了2500万美元的B轮融资)与Greg Papadopoulos和Forest Baskett的第一次见面中,我们共同认识到开源的破坏性潜力,特别是在分析领域。我们注意到,虽然基于GPU加速的机器学习正在进入人们的视线,但是在GPU上运行的分析栈却无人涉及。几乎整个GPU机器学习和深度学习都是开源的,但是却没有一个开源的数据处理引擎来协助它。而我们就是来做这个的。

作为开源软件,该项目能够与生态系统中的其他部分进行集成,这是封闭系统所无法做到的。我们今天同时也很高兴地宣布,与Continuum AnalyticsH2O.ai一起组建地GPU开放分析计划(GPU Open Analytics Initiative,简称GOAI)基金会成立。并且,我们共同发布了我们的第一个项目,GPU数据帧(GPU Data Frame,简称GDF)项目。GPU数据帧允许在GPU进程之间传递数据,而不会增加复制数据或者将数据传递给CPU带来的开销。我们希望这个项目能为在GPU上实现一个开放的端到端管道迈出一步。

今天开放下面这些源码:

  • MapD Core开源数据库:根据Apache 2许可证提供的MapD Core数据库的源代码。该代码提供了多GPU加速SQL查询功能。

  • MapD可视化库:MapD提供的开源JavaScript库,允许用户创建支持MapD Core数据库的基于Web的可视化应用程序。这个库包含了图表生成、交叉过滤数据和MapD Core数据库连接管理等功能。其中,图表和crossfilter库基于流行的DC.js Dimensional Charting项目

我们同时还推出了包含MapD Core数据库、MapD Core GPU渲染引擎和MapD Immerse可视化分析客户端的MapD分析平台企业版(MapD Analytics Platform Enterprise Edition)。它包含了不在开源版本中的分布式横向扩展、高可用性(HA)、LDAP和ODBC功能。

我们还提供了社区版本的二进制文件下载,其中包含MapD Core数据库、GPU渲染引擎和MapD Immerse可视化分析客户端,这些文件都基于非商业的学术许可。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
由于内存数据库具有比基于磁盘的数据库更高的查询响应速度和并发度,其被广泛应用于银行、证券交易所和在线购物等数据量庞大并且实时性要求高的商业领域。索引能够有效降低数据的搜索空间、提高内存数据库的查询效率,然而当前它却受到性能和效率的挑战。 基于图形处理器的通用计算(GPGPU)在多个领域具有重要的研究价值和应用前景,也是当前研究的热点。目前图形处理器(GPU)上索引技术的研究已有一定的相关成果,然而这些研究成果存在着诸如:并行算法未充分利用硬件的资源、并行度不高,算法缺乏可扩展性且不能解决索引数据的更新等问题。因此,本文以如何充分利用 GPU 的硬件资源、最大限度地提高内存数据库索引的操作性能为主要研究内容,在相关研究的基础上,本文主要做了以下工作: 1. 对目前内存数据库索引技术的研究成果进行总结归纳,并且对 GPU 的硬件特点和编程技术做了相关综述。 2. 提出一种基于 GPU T-树索引的并行计算方案,该方案通过分析 T-树的节点间的父子关系,在 GPU 上实现对 T-树的最大并行度构建。设计在 GPU 上 T-树索引数据可任意伸缩的动态数组,解决 GPU 上尚无动态分配显存空间的问题;通过对各种构建 T-树方案的理论和实验分析,提出的并行建树方案较传统的建树方案,在操作效率和空间利用率上均有明显的性能优势。为解决 CUDA 程序数据传输的瓶颈问题,通过页锁定内存的方式提高 CPU 和 GPU 间的数据传输速率;为适应未来硬件发展的需求,对算法的可扩展性进行相关研究;为验证方案的正确性,提出基于 GPU T-树的遍历算法; 为验证提出的并行方案的有效性,进行相关的实验论证。 3. 为加速多维数据的操作性能,提出一种基于 GPU 多维线性哈希索引的并行处理方案。该方案通过对传统哈希索引数据结构的扩展,利用 2 层的数据结构可实现哈希表在 GPU 上的任意收缩,从而解决多维数据GPU 上无法有效更新的问题。在哈希表的记录并行批量插入算法中,采用并行分裂哈希桶的方式可加速哈希表分裂的处理 速度,从而提高了插入的效率;设计一个灵活的溢出桶管理机制,可提高多维哈希索引在 GPU 上的存储空间利用率;对提出的记录并行批量插入方案进行算法时间和空间复杂度的分析,并与传统的 CPU 算法进行相关对比;在各种硬件平台上对多维线性哈希索引记录的并行批量插入、批量删除和查询的操作性能进行相关的实验论证。 4. 提出一种基于 GPU 缓存敏感 CSB+-树索引的无锁并行处理方案,该方案通过对传统的 CSB+-树的结构改进,可实现 CSB+-树的索引数据GPU 上动态更新。在 GPU上提出基于树层和基于节点索引键 CSB+-树两种并行构建算法,其中后者可实现对CSB+-树的最大并行度构建;通过在 CSB+-树的内部节点添加填充位的方式,可减少GPU 线程块里的线程分支数,从而提高 CSB+-树的查询性能;通过对 CSB+-树的查询算法使用共享存储器的可行性分析,指出传统的缓存敏感技术的思想在复杂的 GPU 内存框架中并不适合使用。为验证提出的并行方案的有效性,在多个硬件平台上进行相关的实验论证。 5.在 GPU 平台上提出一种 BD-树索引的并行计算方案,该方案通过修改传统 BD-树的哈希函数,可实现对 BD-树索引的并行处理。通过对传统 BD-树的数据结构改进,可实现 BD-树索引数据GPU 上的更新操作;通过分析 BD-树的树形结构,可实现基于内部节点键的并行度方式构建 BD-树;通过增加额外的空间开销,减少 GPU 原子函数的调用次数,可显著提高 BD-树哈希表的数据插入效率;对 BD-树并行构建算法进行空间复杂度的分析,与传统的构建算法相比,提出算法的空间利用率明显得到提高。同样,为验证提出方案的有效性,进行相关的实验论证。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值