Hadoop并行处理可以成倍地提高性能。现在的问题是如果将一部分计算工作从CPU迁移到GPU会怎么样?能否更快理论上,这些处理如果经过了并行计算的优化,在GPU上执行会比CPU快50-100倍。

Hadoop并行处理能够成倍地进步功能。现在的问题是假如将一部分核算作业从CPU迁移到GPU会怎么样?能否更快理论上,这些处理假如经过了并行核算的优化,在GPU上履行会比CPU快50-100倍。作为大数据专家和PaaS的推动者,Altoros Systems研制团队一向致力于探究Hadoop+GPU的或许性,以及在实践的大规划体系中的完结,这篇文章便是他们的部分研究成果。作者 Vladimir Starostenkov是Altoros Systems的资深研制工程师,他在完结杂乱软件架构( 包含数据密集型体系和Hadoop驱动的运用程序)方面有五年经历,而且 对人工智能和机器学习算法也很感兴趣。

技能现状:

多年来,有许多将Hadoop或MapReduce运用到GPU的科研项目。 Mars或许是榜首个成功的GPU的MapReduce结构。选用Mars技能,剖析WEB数据(查找和日志)和处理WEB文档的功能进步了1.5-1.6倍。 依据Mars的基本原理,许多科研组织都开发了相似的东西,进步自己数据密集型体系的功能。相关事例包含 分子动力学、数学建模(如Monte Carlo)、依据块的 矩阵乘法、财政剖析、图画处理等。

还有针对网格核算的 BOING体系,它是一个快速开展、志愿者驱动的中间件体系。尽管没有运用Hadoop,BOINC现已成为许多科研项目加快的根底。例如, GPUGRID是一个依据BOINC的GPU和分布式核算的项目,它经过履行分子模仿,协助咱们了解蛋白质在健康和疾病状况下的不同效果。大都关于医药、物理、数学、生物等的 BOINC项目也能够运用Hadoop+GPU技能。

因而,运用GPU加快并行核算体系的需求是存在的。这些组织会出资GPU的超级核算机或开发自己的解决方案。硬件厂商,如Cray,现已发布了装备GPU和预装了Hadoop的机器。Amazon也推出了EMR(Amazon Elastic MapReduce),用户能够在其装备了GPU的服务器上运用Hadoop。

超级核算机功能很高,可是本钱达数百万美元;Amazon EMR也仅适用于连续几个月的项目。关于一些更大的科研项目(两到三年),出资自己的硬件更合算。即便在Hadoop集群内运用GPU能进步核算速度,数据传输也会形成必定的功能瓶颈。以下会具体介绍相关问题。

作业原理

数据处理过程中,HDD、DRAM、CPU和GPU必定会有数据交换。下图显现了CPU和GPU一起履行核算时,数据的传输。

Hadoop+GPU强强联手的功能探究(hadoop gpu)  Hadoop GPU 性能优化 第1张

图:数据处理时,各组件之间的数据交换

箭头A :数据从HDD传输到DRAM(CPU+GPU核算的初始过程)

箭头B :CPU处理数据(数据流:DRAM->chipset->CPU)

箭头C :GPU处理数据(数据流:DRAM->chipset->CPU->chipset->GPU->GDRAM->GPU)

完结任何使命所需的时刻总量包含:

CPU或GPU进行核算所需的时刻

数据在各个组件间传输所需的时刻

依据Tom’s HARDWARE 2012年的CPU图表,CPU的均匀功能在15到130GFLOPS之间,而Nvidia GPU的功能范围在100到3000+ GFLOPS。这些都是核算值,而且很大程度上取决于使命的类型和算法。无论如何,在某些状况下,一个GPU能够使节点速度加快5至25倍。一些开发者宣称,假如你的集群包含多个节点,功能能够进步50到200倍。例如,MITHRA项目达到了254倍的功能提高。#p#

功能瓶颈:

那么,GPU对数据传输会有什么影响?不同类型的硬件传输数据的速率不同,超级核算机现已在GPU上做过相关优化,一个一般的核算机或服务器在数据传输时或许会慢得多。 通常在一个CPU和芯片集数据传输速率在10到20GBps之间(图中的Y点),GPU和DRAM间的数据交换速率在1到10GBps之间(图中的X点)。尽管一些体系速率可达10GBps(PCI-E v3),大部分规范装备的GDRAM和DRAM间数据流速率是1GBps。(主张在实在的硬件环境中来丈量实践值,因为CPU内存带宽[X和Y]以及对应的数据传输速率[C和B]或许差不多也或许相差10倍)。

尽管GPU供给了更快的核算才能,GPU内存和CPU内存间的数据传输(X点)却带来了功能瓶颈。因而,关于每一个特定的项目,要实践丈量耗费在GPU上的数据传输时刻(箭头C)以及GPU加快节约的时刻。因而,最好的办法是依据一个小集群的实践功能估量更大规划体系的运转状况。

因为数据传输速率或许适当慢,抱负的状况是比较履行核算的数目,每个GPU输入/输出数据的量比较小。牢记:榜首,使命类型要和GPU的才能相匹配,第二使命能够被Hadoop分割为并行独立的子流程。 杂乱的数学公式核算(例如矩阵乘法),许多随机值的生成,相似的科学建模使命或其它通用的GPU运用程序都归于这种使命。

可用的技能

JCUDA:JCUDA项目为Nvidia CUDA供给了Java绑定和相关的库,如JCublas、JCusparse(一个矩阵的作业库)、JCufft(通用信号处理的Java绑定)、JCurand(GPU发生随机数的库)等等。但 它只适用于Nvidia GPU。

Java Aparapi。Aparapi在运转时将Java字节码转换为OpenCL,并在GPU上履行。一切的Hadoop+GPU核算体系中,Aparapi和OpenCL的远景最被看好。Aparapi由AMDJava实验室开发,2011年开放源代码,在AMD Fusion开发者峰会的官网上能够看到Aparapi的一些实践运用。OpenCL是一个开源的、跨渠道的规范,许多硬件厂商都支撑这个规范,而且能够为CPU和GPU编写相同的代码根底。假如一台机器上没有GPU,OpenCL会支撑CPU。

创立拜访GPU的本地代码。拜访GPU本地代码进行杂乱的数学核算,要比运用绑定和连接器功能高许多,可是,假如你需要在尽或许短的时刻内供给一个解决方案,就要用相似Aparapi的结构。然后,假如你对它的功能不满意,能够将部分或整个代码改写为本地代码。能够运用C言语的API(运用Nvidia CUDA或OpenCL)创立本地代码,答应Hadoop经过JNA(假如是Java运用程序)或Hadoop Streaming(假如是C言语运用程序)运用GPU。

GPU-Hadoop结构

也能够测验定制的GPU-Hadoop结构,这个结构发动于Mars之后,包含Grex、Panda、C-MR、GPMR、Shredder、SteamMR等。可是GPU-Hadoop多用于特定的科研项目,而且不再供给支撑了,你乃至很难将Monte Carlo模仿结构运用于一个以其它算法为根底的生物信息项目。

处理器技能也在不断开展。在Sony PlayStation 4中呈现了革命性的新结构、Adapteva的多核微处理器、ARM的Mali GPU等等。Adapteva和Mali GPU都将兼容OpenCL。

Intel还推出了运用OpenCL的Xeon Phi协同处理器,这是一个60核的协同处理器,架构相似于X86,支撑PCI-E规范。双倍精度核算时功能可达1TFLOPS,能耗仅为300Watt。现在最快的超级核算机银河-2就运用了该协同处理器。

很难说以上哪种结构会在高功能和分布式核算范畴成为干流。跟着它们的不断改进,咱们关于大数据处理的了解或许也会改动。

转载请说明出处
知优网 » Hadoop+GPU强强联手的功能探究(hadoop gpu)

发表评论

您需要后才能发表评论