Hadoop + GPU:提高性能的大数据项目50 - 200 x ?

Hadoop是一个开源框架,支持分布式计算,已经改变了我们处理大数据的方式。并行处理与这组工具可以提高性能的好几倍。问题是,我们可以让它工作得更快吗?如何卸载计算从CPU图形处理单元(GPU)旨在执行复杂的3 d和数学任务吗?理论上,如果流程优化的并行计算,GPU可以执行计算50 - 100倍的速度比CPU。

这篇文章,写的研发团队Altoros系统大数据专家平台即服务推动者,探讨了什么是可能的,你可以试试这个大规模的系统。

[2.0版:大量新的Hadoop应用做好准备]

这个想法本身并不新鲜。多年来曾试图把Hadoop或科学项目MapReduce方法与GPU的能力。火星似乎是第一个成功的MapReduce框架图形处理器。项目取得了1.5 x-16x时提高性能分析网络数据(搜索/日志)和处理Web文档(包括矩阵乘法)。

在火星的基础,其他科研机构开发了类似的工具来加速他们的数据密集型系统。用例包括分子动力学,数学建模(例如,蒙特卡洛方法),基于块的矩阵乘法、金融分析、图像处理等。

最重要的是,有BOINC飞速发展,志愿者为网格计算中间件系统。虽然它不使用Hadoop, BOINC已经成为加速许多科学项目的基础。例如,GPUGRID依赖于BOINC的GPU和分布式计算进行分子模拟,帮助“了解蛋白质的功能在健康和疾病。”Most of其他BOINC项目相关医学、物理学、数学、生物学等可以使用Hadoop + GPU实现,。

所以,并行计算系统与gpu加速的需求确实存在。机构投资于超级计算机与gpu或开发自己的解决方案。硬件厂商,比如克雷,已经发布了机器使用Hadoop配备gpu和预配置。亚马逊也推出了弹性MapReduce亚马逊(EMR),使Hadoop与gpu的云服务器。

但一种尺寸适合所有人吗?超级计算机提供最高的性能,但花费数百万美元。使用Amazon EMR是可行的只有在项目持续几个月。大科学项目(两至三年),投资于自己的硬件可能更划算。即使你增加的速度计算在您的Hadoop集群中使用GPU,有关数据传输性能瓶颈呢?让我们详细探讨这个。

它是如何工作的

数据处理意味着硬盘之间的数据交换,DRAM, CPU和GPU。图1显示了如何传输数据,当一个商品机执行CPU和GPU的计算。

图像alt文本

图1

组件之间的数据交换的商品电脑当执行一个任务

  • 箭头:传输数据从硬盘DRAM(一种常见的初始步骤对CPU和GPU计算)
  • 箭头B:处理数据和CPU(传输数据:DRAM→芯片组→CPU)
  • 箭头C:处理数据和GPU(传输数据:DRAM→CPU芯片→→芯片组→GPU→GDRAM→GPU)

因此,总额的时间我们需要完成任何任务包括:

  • 所需的时间为一个CPU或GPU进行计算
  • 加的时间花在所有的组件之间的数据传输

根据汤姆的硬件(CPU图表2012),平均CPU的性能范围从15到130 GFLOPS。与此同时,Nvidia gpu的性能,例如,在100 - 3000范围内变化+ GFLOPS (2012年比较)。这些测量都是近似的,很大程度上取决于任务的类型和算法。无论如何,在某些场景中,一个GPU可以加快计算每个节点近5到25倍。一些开发者声称,如果集群包括几个节点,可以加速性能50 - 200 x。例如,的创造者密特拉项目取得了254倍。

然而,数据传输的影响呢?不同类型的硬件以不同的速度传输数据。尽管超级计算机是最有可能的优化使用gpu,普通的电脑或服务器交换数据时可能会慢得多。

同时传输数据的速率之间的平均CPU,芯片组10-20GBps(见点Y图1),一个GPU交流的速度数据和DRAM 1-10GBps(见X)。虽然有些系统可能达到~ 10 GBps (作为PCIe v3),在大多数标准配置数据流之间的GPU的DRAM (GDRAM)和计算机的DRAM的速度~ 1 gbps。(建议测量实际值在实际硬件,因为CPU内存带宽(X, Y)和相应的数据传输速率(C和B)可以是相同或不同的10倍)。

因此,尽管GPU提供更快的计算,主要的瓶颈是缓慢的GPU内存和CPU内存之间的数据传输(X)。因此,对于每一个特定的项目,你需要测量数据传输所花费的时间从/到GPU (箭头С由于GPU加速对节省时间)。因此,最好的方法是评估实际的性能在一个小的集群,然后估计系统将如何在更大的规模。

你可以看一下2010年的研究英特尔提供性能结果14类型的典型用例。根据英特尔的数据,很难达到10 x - 1000 x每单节点性能的增加,相反,2.5 x将更为现实。的总改进集群可能会更小。

所以,因为数据传输的速度可能很慢,理想的用例是当每个GPU的输入/输出数据量相对较小而数量的计算。重要的是要记住,首先,任务的类型应与GPU的能力;第二,这个任务可以分为使用Hadoop并行独立的子过程。

一些这样的任务的例子可能包括复杂的数学计算公式(例如,矩阵乘法),生成大组随机值,或其他类似的科学建模任务通用的GPU的应用程序

工具使用

创建一个原型,并加速你的大数据系统使用Hadoop加上GPU,你必须使用一些图书馆或绑定,允许访问GPU。今天,使用的主要工具,您可以使用GPU的功能如下:

* JCUDA。JCUDA项目提供的Java绑定Nvidia CUDA和相关的库,如JCublas JCusparse(图书馆使用矩阵),JCufft (Java绑定用于常规信号处理),JCurand (GPU用于生成随机数的图书馆),等等。但是,这只会工作由Nvidia GPU。

Java Aparapi *。Aparapi在运行时将Java字节码转换为OpenCL并执行GPU。在所有系统使用gpu的计算使用Hadoop, Aparapi OpenCL方法似乎最好的长期视角。Aparapi是由AMD JavaLabs, AMD的实验室。在2011年发布的一个开源产品,项目正在迅速增长。你可以看看一些现实生活中的用例这种技术在AMD Fusion开发者峰会会议的官方网站。

OpenCL是一个开放的、跨平台的标准支持大量的硬件供应商,允许写相同的代码基的CPU和GPU。如果没有安装在一个特定的机器,GPU OpenCL雇佣其CPU。

Khronos集团的标准是由一个行业协会,其中包括约100 AMD等公司,英特尔、英伟达,阿尔特拉,Xilinx,等。使用这个框架编写的代码可以在cpu上执行支持的品牌(AMD和英特尔),以及由AMD和Nvidia gpu制造。新的解决方案兼容OpenCL每年出现,这是一个很大的优势。

*创建本地代码访问GPU。这是一个好主意使用本机代码进行复杂的数学计算,需要一个强大的GPU。由此产生的性能将大大快于使用绑定和连接器的解决方案。然而,如果您需要在最短的时间内交付解决方案,您可能选择Aparapi这样的框架。然后,如果你不满意自己的表现,原来Aparapi代码可以部分或完全替换为本机代码。最终的产品将速度更快也更灵活。

您可以使用C语言API (Nvidia CUDA或OpenCL)来创建本地代码,使通过JNA Hadoop使用GPU(如果您的应用程序是用Java编写的)或Hadoop流(如果您的应用程序是用C编写的)。

GPU-Hadoop框架

你也可以尝试调查后创建的自定义GPU-Hadoop框架火星项目已经启动。这些包括Grex,熊猫,C-MR,GPMR,碎纸机,SteamMR和其他人。然而,大多数人不再支持和建立特定的科学项目。这意味着你很难应用蒙特卡罗模拟框架,说,一个生物信息学项目基于其他算法。

处理器技术发展。你可以看到革命性的新架构索尼PlayStation 4,Adapteva多核处理器,马里GPU的手臂,等。Adapteva和马里GPU将与OpenCL兼容。

英特尔公司也推出了至强φ协同处理器这也与OpenCL。这是60-core协同处理器与x86-like架构支持串行总线标准。它的性能是1 TFLOPS在双精度仅为300瓦特的能耗。这种协同处理器已经实现Tianhe-2到目前为止,最强大的超级计算机。

不过,很难说,在高性能和分布式计算架构将成为主流。以防他们进化,他们中的一些人肯定会——这可能会改变我们对巨大的数组的数据应该如何处理。

弗拉基米尔•Starostenkov高级研发工程师Altoros系统公司专注于加速大数据平台即服务项目和支持。他有超过5年的经验,实现复杂的软件体系结构,包括数据密集型系统和Hadoop-driven应用程序。拥有强大的背景在计算机科学中,弗拉基米尔对人工智能和机器学习算法很感兴趣。

加入网络社区足球竞猜app软件脸谱网LinkedIn上面的评论主题思想。

版权©2013足球竞彩网下载

工资调查:结果是在