Compiler Driven Automatic Kernel Context Migration for Heterogeneous Computing


Computer systems provide different heterogeneous resources (e.g., GPUs, DSPs and FPGAs) that accelerate applications and that can reduce the energy consumption by using them. Usually, these resources have an isolated memory and a require target specific code to be written. There exist tools that can automatically generate target specific codes for program parts, so-called kernels. The data objects required for a target kernel execution need to be moved to the target resource memory. It is the programmers' responsibility to serialize these data objects used in the kernel and to copy them to or from the resource's memory. Typically, the programmer writes his own serializing function or uses existing serialization libraries. Unfortunately, both approaches require code modifications, and the programmer needs knowledge of the used data structure format. There is a need for a tool that is able to automatically extract the original kernel data objects, serialize them, and migrate them to a target resource without requiring intervention from the programmer. In this paper, we present a tool collection ConSerner that automatically identifies, gathers, and serializes the context of a kernel and migrates it to a target resource's memory where a target specific kernel is executed with this data. This is all done transparently to the programmer. Complex data structures can be used without making a modification of the program code by a programmer necessary. Predefined data structures in external libraries (e.g., the STL's vector) can also be used as long as the source code of these libraries is available.

DOI: 10.1109/ICDCS.2014.47

17 Figures and Tables

Cite this paper

@article{Gad2014CompilerDA, title={Compiler Driven Automatic Kernel Context Migration for Heterogeneous Computing}, author={Ramy Gad and Tim S{\"{u}\ss and Andr{\'e} Brinkmann}, journal={2014 IEEE 34th International Conference on Distributed Computing Systems}, year={2014}, pages={389-398} }