  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.
