在GPU上运行Hadoop任务?ParallelX或许将...

在面对大规模计算密集型算法时,MapReduce范式的表现并不总是很理想。为了解决其瓶颈,一支小型创业团队构建了名为ParallelX的产品——它将通过利用GPU的运算能力,为Hadoop任务带来显著的提升。

ParallelX的联合创始人Tony Diepenbrock表示,这是一个“GPU编译器,它能够把用户使用Java编写的代码转化为OpenCL,并在亚马逊AWS GPU云上运行”。它的最终产品是一项与亚马逊Elastic MapReduce类似的服务,只不过不同之处在于它将利用EC2 GPU实例类型

毫无疑问,亚马逊并不是唯一一家提供GPU服务器的云服务提供商,其他诸如IBM/SoftlayerNimbix等公司也提供使用NVidia GPU的服务器。然而,当被问起ParallelX是否将会支持亚马逊之外的其他不同云服务提供商时,Tony的答复是“暂时还没有,不过我们将拥有一套SDK,供使用内部Hadoop集群的客户使用。大部分GPU云服务提供商在HPC云中提供GPU,但我们希望能够以比较低廉的价格使用云服务中的GPU。毕竟,这正是Hadoop的设计初衷——便宜的商用硬件。”

在更好地理解ParallelX编译器能够做哪些事情之前,我们需要了解现在有不同类型的GPU,它们配备了不同的并行计算平台,例如CUDAOpenCL。Tony提到,ParallelX所适用的工作场景是“编译器将把JVM字节码转换为OpenCL 1.2的代码,从而能够通过OpenCL编译器编译为Shader汇编,以便在GPU上运行。现在同样也有一些FPGA硬件能够运行OpenCL代码,但是要想获得对于广义并行硬件的支持,可能还需要等到未来的某一天。”尽管ParallelX并不支持Java源代码中的反射或原生调用,它的目标依旧是确保开发者只须要对其MapReduce任务的代码进行必要的调整——越少越好。

随着ParallelX团队开始研究I/O-Bound任务的吞吐量增长,Tony发现他们的产品“也能够支持实时处理、以Pig和Hive代码表示的查询,以及针对I/O Bound任务的大数据集流。在我们测试中,使用我们的流水线框架,I/O吞吐几乎能够达到GPU计算吞吐能力的水平。”

虽然ParallelX团队目前正在专注于针对亚马逊的Hadoop版本分支的努力,但他们也在规划为其他流行的Hadoop版本分支(例如Cloudera's CDH)进行开发, 而且毫无疑问,在ParallelX的环境中,利用这些商业分支对HivePig进行的诸多改进,将是一件非常有益的事情。

ParallelX拥有独一无二的演进故事,Tony在一篇文章中介绍了这个已经持续了2.5年的史诗般项目的历程:首先起于为某社团开发的一个社交网络,随后是用于Facebook的Widget插件,接下来则是一个识别剽窃代码的工具。这些项目拥有一些共性:图解分析与基于GPU的算法——几乎,ParallelX的理念便由此自然而然地浮现出来了。

ParallelX适合许多种不同的工作负载,不过它主要聚焦在像机器学习这样的高性能计算和图形处理这样的繁重分析方面。ParallelX团队举了一个例子来说明其能力:它能够在一秒内,将一个大型社团联谊网络在单一GPU上进行集群——在过去,这需要并行利用六台计算机,耗时一小时才能完成。而且在实践中并无限制,任何针对MapReduce编写的程序都可以使用ParallelX编译为GPU可运行的代码。

ParallelX团队正在规划在未来发布它的数据和白皮书,以展示这个“从Hadoop到GPU”的编译器在面对现实世界中的工作负载时的性能。对于这个话题,社区的反响中存在一些轻微的不同声音。一些人正在等着阅读这份白皮书,而后再决定是否转型到ParallelX。当这一消息在Hacker News上发布后,我们可以在评论中找到类似的言论:“非凡的声明需要非凡的佐证。”

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/598bee15cc6331607acaf303831c6b23.html