MeterPU: A Generic Measurement Abstraction API Enabling Energy-Tuned Skeleton Backend Selection

We present MeterPU, an easy-to-use, generic and low-overhead abstraction API for taking measurements of various metrics (time, energy) on different hardware components (e.g. CPU, DRAM, GPU), using pluggable platform-specific measurement implementations behind a common interface in C++. We show that with MeterPU, not only legacy (time) optimization frameworks, such as autotuned skeleton back-end selection, can be easily retargeted for energy optimization, but also switching different optimization goals for arbitrary code sections now becomes trivial. We apply MeterPU to implement the first energy-tunable skeleton programming framework, based on the SkePU skeleton programming library.

[1]  Horacio González-Vélez,et al.  Heterogeneous Algorithmic Skeletons for Fast Flow with Seamless Coordination over Hybrid Architectures , 2013, 2013 21st Euromicro International Conference on Parallel, Distributed, and Network-Based Processing.

[2]  Ulrich Breymann,et al.  Designing Components with the C++ STL , 2002 .

[3]  Christoph W. Kessler,et al.  Adaptive Implementation Selection in the SkePU Skeleton Programming Library , 2013, APPT.

[4]  Christoph W. Kessler,et al.  SkePU: a multi-backend skeleton programming library for multi-GPU systems , 2010, HLPP '10.

[5]  Christoph W. Kessler,et al.  Adaptive Off-Line Tuning for Optimized Composition of Components for Heterogeneous Many-Core Systems , 2012, VECPAR.

[6]  Herbert Kuchen,et al.  Algorithmic skeletons for multi-core, multi-GPU systems and clusters , 2012, Int. J. High Perform. Comput. Netw..

[7]  Hervé Paulino,et al.  Algorithmic Skeleton Framework for the Orchestration of GPU Computations , 2013, Euro-Par.

[8]  David Josephsen,et al.  Building a Monitoring Infrastructure with Nagios , 2007 .

[9]  Christoph W. Kessler,et al.  Smart Containers and Skeleton Programming for GPU-Based Systems , 2015, International Journal of Parallel Programming.

[10]  Francisco Almeida,et al.  Energy Measurement Library (EML) Usage and Overhead Analysis , 2015, 2015 23rd Euromicro International Conference on Parallel, Distributed, and Network-Based Processing.

[11]  Sergei Gorlatch,et al.  SkelCL - A Portable Skeleton Library for High-Level GPU Programming , 2011, 2011 IEEE International Symposium on Parallel and Distributed Processing Workshops and Phd Forum.

[12]  Martin Burtscher,et al.  Measuring GPU Power with the K20 Built-in Sensor , 2014, GPGPU@ASPLOS.

[13]  Christoph W. Kessler,et al.  Auto-tuning SkePU: a multi-backend skeleton programming framework for multi-GPU systems , 2011, IWMSE '11.