GPU Support in Apache Spark and GPU/CPU Mixed Resource Scheduling at Production Scale

GPUs have been increasingly used in a broad area of applications, such as machine learning, image processing and risk analytics to achieve higher performance and lower costs (energy footprints). On the other hand, Apache Spark has become a very popular distributed application framework for data processing and complex analytics.

Yonggang Hu (IBM Distinguished Engineer) and Junfeng Liu (IBM Architect) share the slides from their recent Spark Summit talk that looked at GPU and Spark usage through the real world examples in cognitive computing and risk analytics in financial services - and also further explained the synergy between GPU and Spark.

Finally, the talk discusses the challenges with using GPU in production Spark applications and the enhancements to manage and utilize both CPU and GPU resources:

  • Support Spark MLlib on GPU
  • GPU specific resource group is introduced for facilitate mixed GPU/CPU resource management, e.g. identify the GPU sensitive stages and tasks from Spark DAG Scheduler
  • Enable GPU Python and Scala API for end user to declare computing logic that user wants to run on GPU devices, including shuffle configuration on transferring memory data between GPU and CPU
  • Enable GPU and CPU mixed resource scheduling in Spark to get better resource utilization.
  • Build the slot based and the multi-dimensional based solution for mixed scheduling to maximize resource usage.
  • Fail back capability, if the GPU fail to finish the job, it should be able to seamless back to CPU workload.
  • Speeding up capability, try GPU resource in the long tail case.

See the slides on SlideShare