Skip to main content
QUICK REVIEW

[论文解读] SparkCL: A Unified Programming Framework for Accelerators on Heterogeneous Clusters

Oren Segal, Philip Colangelo|arXiv (Cornell University)|May 5, 2015
Parallel Computing and Optimization Techniques参考文献 8被引用 26
一句话总结

SparkCL 是一个统一的编程框架,通过基于 Java 的抽象层将 OpenCL 加速的异构加速器(如 GPU、FPGA 和 APU)集成到 Apache Spark 生态系统中。通过扩展 Spark 以支持 OpenCL 启用的内核函数和设备感知转换,它使单一代码库能够针对多种加速器,同时保持与 Spark 数据流模型的无缝集成,显著简化了在异构集群中的可移植性和性能可移植性。

ABSTRACT

We introduce SparkCL, an open source unified programming framework based on Java, OpenCL and the Apache Spark framework. The motivation behind this work is to bring unconventional compute cores such as FPGAs/GPUs/APUs/DSPs and future core types into mainstream programming use. The framework allows equal treatment of different computing devices under the Spark framework and introduces the ability to offload computations to acceleration devices. The new framework is seamlessly integrated into the standard Spark framework via a Java-OpenCL device programming layer which is based on Aparapi and a Spark programming layer that includes new kernel function types and modified Spark transformations and actions. The framework allows a single code base to target any type of compute core that supports OpenCL and easy integration of new core types into a Spark cluster.

研究动机与目标

  • 在 Apache Spark 生态系统中实现对计算密集型工作负载向异构加速器(如 GPU、FPGA)的透明卸载。
  • 通过在 OpenCL 和 Spark 之上提供统一的抽象层,解决异构集群编程的复杂性和碎片化问题。
  • 使开发人员能够编写单一代码库,针对任何 OpenCL 兼容设备,而无需为每种加速器类型重新编写代码。
  • 通过引入新型内核函数类型和修改后的转换/操作,扩展 Spark 的编程模型以支持设备执行。

提出的方法

  • 基于 Aparapi 扩展 Apache Spark,引入新的基于 Java-OpenCL 的设备编程层,以实现从 Java 生成 GPU 和加速器代码。
  • 引入新型内核函数类型和修改后的 Spark 转换/操作,使其理解设备执行语义。
  • 使用 OpenCL 作为可移植的低级接口,将高层级 Spark 操作映射到异构计算设备。
  • 基于设备可用性和工作负载特征,实现自动设备选择和任务卸载。
  • 提供统一的 API 抽象设备特定细节,实现在 FPGA、GPU、APU 和 CPU 上的透明执行。
  • 通过在通用接口后抽象设备特定逻辑,支持未来加速器类型的可扩展性。

实验结果

研究问题

  • RQ1如何设计一个统一的编程模型,以在单一数据处理框架(如 Spark)中支持多种加速器?
  • RQ2需要哪些架构扩展,才能实现 Spark 工作负载向 OpenCL 加速设备的透明卸载?
  • RQ3是否可以使用单一代码库针对多种加速器类型(如 GPU、FPGA)而无需修改?
  • RQ4将 OpenCL 集成到 Spark 中如何影响性能、可移植性和开发人员生产力?
  • RQ5需要何种机制来确保在 Spark 集群中跨异构设备实现无缝负载均衡和容错?

主要发现

  • SparkCL 允许在任何 OpenCL 兼容设备(包括 GPU、FPGA 和 APU)上透明执行 Spark 工作负载,且无需在不同设备间修改代码。
  • 该框架成功集成到现有的 Spark 执行模型中,支持标准 Spark 转换和操作,并具备设备感知语义。
  • 通过利用 Aparapi 和 OpenCL,SparkCL 降低了在加速器上加速数据并行工作负载的开发开销。
  • 统一的抽象使得支持新加速器类型的扩展变得容易,从而增强了长期可维护性和可移植性。
  • 性能评估表明,当计算密集型操作被卸载到加速器时,性能显著提升,尤其在数据并行内核上表现突出。
  • 该框架在引入硬件加速的同时,保持了 Spark 的容错性和可扩展性,证明了其在生产工作负载中的可行性。

更好的研究,从现在开始

从论文设计到论文写作,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。