美文网首页
【转载】Spark的GPU支持方法研究

【转载】Spark的GPU支持方法研究

作者: 区块鱼 | 来源:发表于2018-12-12 16:12 被阅读0次

    本文转载自:https://my.oschina.net/u/2306127/blog/1602291

    这包括几个层次:

    • GPU直接支持Spark。因为Spark是多线程的,而GPU往往只能起一个单例,导致线程会竞争GPU资源,需要进行管理、加锁和调度。方法包括:
      • 原生代码内置编译支持。
      • 引入cuDNN等NVidia库进行调用。
      • 通过Tensorflow等间接进行支持。
      • JIT方式即时编译调用方式支持。
    • GPU支持的Docker中运行Spark。如果将Spark节点放入Docker容器中运行,则需要使用NVidia提供的特殊版本Docker,而且需要安装NVidai提供的cuDNN等软件支持库。由于这些库调用了系统驱动,而且是C++编写,因此Spark要能够进行系统库的调用。
    • GPU支持的Kubernetes之上运行Spark。

    只有同时满足上面的条件,才能通过Kubernetes的集群管理对Docker中Spark进行GPU操作。

    下面是已经做的一些研究。

    • IBMSparkGPU的方案可以将GPU用于RDD和DataFrame,支持通用计算,重点支持机器学习;
    • deeplearning4j是基于Java的,包含数值计算和神经网络,支持GPU;
    • NUMBA的方案通过PySpark即时编译产生GPU的调用代码,兼容性好;
    • Tensorflow/Caffe/MXNet等与Spark整合主要是节点调度,GPU由深度学习引擎调度,RDD需要数据交换,主要用于存储中间超参数数据。如TensorFrame的实现-https://github.com/databricks/tensorframes

    具体的资源包括:

    相关文章

      网友评论

          本文标题:【转载】Spark的GPU支持方法研究

          本文链接:https://www.haomeiwen.com/subject/otlphqtx.html