Jörg Keller, Christoph Kessler, Sebastian Litzinger (FernUniversität in Hagen / Linköping University)
We investigate the energy-efficient execution of programs with a sequence of program parts, each part executable by multiple variants on different execution units. We study their behaviour under the presence of crash faults on a computing platform with heterogeneous execution units like multicore, GPU, and FPGA. To this end, we extend a static scheduling algorithm for computing the sequence of variants leading to minimum runtime or energy. We consider cases where one or more program variants cannot be used anymore from some execution point on, due to failure of the underlying execution unit(s). Static scheduling avoids overhead in case of a fault. An implementation for single faults, evaluated with synthetically generated programs, indicates reduced scheduling time compared to a brute force approach. We also investigate the algorithmic challenges that occur when multiple faults are considered, ranging from efficient implementations for sets of sets to heuristics for efficient orders in which to treat different fault cases.