【问题标题】:OpenCL with HadoopOpenCL 与 Hadoop
【发布时间】:2013-05-13 21:38:01
【问题描述】:

如何在 Hadoop 中使用 OpenCL(用于 GPU 计算)?

我的数据集位于 HDFS 中。 我需要计算 5 个指标,其中 2 个是计算密集型的。 因此,我想使用 OpenCL 在 GPU 上计算这 2 个指标,而在 Hadoop 上使用 java map reduce 代码计算其余 3 个指标。

如何将数据从 HDFS 传递到 GPU ? 或者 我的 opencl 代码如何从 HDFS 访问数据?

如何从我的 Java map reduce 代码中触发 OpenCL 代码?

如果有人可以分享示例代码,那就太好了。

【问题讨论】:

  • 正如 isti_spl 下面提到的,有许多从 Java 访问 GPU 的选项(APARAPI、RootBeer、JOCL 或只是普通的旧 JNI),尽管它们都有自己的特性。我最近发表了有关将 Hadoop 与 GPU 结合使用的工作,并且非常有兴趣了解您正在计算的指标作为对我工作的评估。之前还有其他关于 GPU 上不同 MapReduce 框架的工作,尽管大多数/全部不与 Hadoop/HDFS 集成。如果您通过 jmaxg3@gmail.com 与我联系,我也可以帮助您加速 Hadoop 工作。

标签: hadoop opencl hadoop-streaming


【解决方案1】:

可以使用 jogamp (jocl) 从 java 调用 opencl,它基本上是原生 opencl 库的包装器。您需要首先使用 java/hadoop 库访问数据,将它们传输到 CLBuffers(这是包含用于与 opencl 通信的缓冲区的 java 对象),将它们复制到 gpu,调用内核,将结果从 gpu 复制回缓冲区。检查 jocl 示例。

另一种选择是使用 aparapi 库。这里的数据处理内核是一个简单的java函数(有一些限制),框架是从java bytecode-> opencl翻译过来的,所以opencl部分对程序员是隐藏的。当然,不是所有的东西都可以从 java->opencl 翻译过来,看看他们的例子。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-15
    • 2015-10-26
    • 2013-02-21
    • 2018-05-08
    • 1970-01-01
    • 2012-09-02
    相关资源
    最近更新 更多