Apache sparkをGPUと統合したいのですが、sparkはJavaで動作しますが、gpuはCUDA/OpenCLを使用しているので、どうすればよいですか?それらをマージします。
それはあなたが何をしたいかによります。 sparkを使用してGPUで計算を分散したい場合は、Javaを使用する必要はありません。python(pyspark)をnumbaで使用できます。 cudaモジュール。
たとえば、ワーカーノードで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)
スライドシェアのURLを確認することをお勧めします: https://fr.slideshare.net/continuumio/gpu-computing-with-Apache-spark-and-python 、具体的にはスライド34。
すべてのワーカーノードにnumbaとcudaドライバーをインストールするだけで済みます。
このジレンマに役立つライブラリがいくつかあります。
Databricksは、クラスターまたはマシンのGPUを使用できるようにするTensorFlowを使用したSparkのソリューションで機能しています。
詳細については、 Spark Summit Europe 2016 のプレゼンテーションがあります。このプレゼンテーションでは、TensorFramesがどのように機能するかを少し説明します。
その他これは、DataBricksブログの TensoFrames に関する投稿です。
また、コード情報の詳細については、 Git of Tensorframes を参照してください。