CoopCL: Cooperative Execution of OpenCL Programs on Heterogeneous CPU-GPU Platforms
In this work, we present CoopCL, an C++ API and runtime that abstracts and unifies the cooperative workload execution on multi-core CPU and GPU. The CoopCL takes a OpenCL-C kernel function and automatically uses both the CPU and the GPU to execute it in parallel. We propose a method that transparently manages the data transfers and synchronization necessary to ensure a coherence without requiring any effort from the programmer. The CoopCL is completely portable across different machines including platforms with discrete and integrated GPUs. Across a set of diverse benchmarks, our runtime shows a mean speedup of nearly 10% over a GPU only execution and 30% over a multi-core CPU. We also achieve up to a 52% reduction in energy consumption compared to the CPU only execution.