Heterogeneous computer environments are becoming commonplace so it is increasingly
important to understand how and where we could execute a given algorithm the most
efficiently. In this paper we propose a methodology that uses both static source code
metrics, and dynamic execution time, power, and energy measurements to build gain
ratio prediction models. These models are trained on special benchmarks that have
both sequential and parallel implementations and can be executed on various computing
elements, e.g., on CPUs, GPUs, or FPGAs. After they are built, however, they can be
applied to a new system using only the system’s static source code metrics which are
much more easily computable than any dynamic measurement. We found that while estimating
a continuous gain ratio is a much harder problem, we could predict the gain category
(e.g., “slight improvement” or “large deterioration”) of porting to a specific configuration
significantly more accurately than a random choice, using static information alone.
We also conclude based on our benchmarks that parallelized implementations are less
maintainable, thereby supporting the need for automatic transformations.