我想将Apache Spark与GPU集成,但Spark是基于Java开发的,而GPU使用CUDA / OpenCL,那么我们该如何将它们合并。
我想将Apache Spark与GPU集成,但Spark是基于Java开发的,而GPU使用CUDA / OpenCL,那么我们该如何将它们合并。
这取决于你想做什么。如果你想使用spark和GPU分发计算,你不一定需要使用java。你可以使用带有cuda模块的python(pyspark)和numba。
例如,如果你想让工作节点在RDD的每个块上计算操作(如gpu_function),则可以应用此代码。
rdd = rdd.mapPartition(gpu_function)
使用:
def gpu_function(x):
...
input = f(x)
output = ...
gpu_cuda[grid_size,block_size](input,output)
return output
并且:
from numba import cuda
@cuda.jit("(float32[:],float32[:])")
def gpu_cuda(input,output)
output = g(input)
有一些库可以帮助解决这个问题。
Databricks正在为Spark与TensorFlow提供解决方案,这将允许您使用集群或计算机的GPU。
如果您想了解更多信息,请参阅Spark Summit Europe 2016的演示文稿。此演示文稿将展示TensorFrames的工作原理。
此外,DataBricks博客中有一篇关于TensoFrames的文章。
如需更多代码信息,请参阅Tensorframes的Git。