Overview | Download | Publications | Code Examples | Use Cases | Features | License | Ongoing Work | Contact | Acknowledgments |
MeterPU is a portable "software-multimeter" library for C++.
Its current implementation supports GPU-based systems.
Main features:
Currently supported metrics (plug-ins):
Energy meters are well tested on Intel Xeon CPU E5-2630L v2
and Nvidia K20c.
Important notice:
meterpu_0.81.tar.gz: Fix GPU energy meter underflow bug (2015-12-06)
meterpu_0.8.tar.gz: First release (2015-07-11)
[1] | Lu Li, Christoph Kessler. MeterPU: A Generic Measurement Abstraction API Enabling Energy-tuned Skeleton Backend Selection. Journal of Supercomputing, pages 1-16, 2016. [ bib | pdf | ppt ] |
[1] | Lu Li, Christoph Kessler. MeterPU: A Generic Measurement Abstraction API Enabling Energy-tuned Skeleton Backend Selection. In Proc. International Workshop on Reengineering for Parallelism in Heterogeneous Parallel Platforms (REPARA-2015) at ISPA-2015, volume 3, pages 154-159. IEEE, 2015. [ bib | pdf ] |
#include <MeterPU.h>
int main()
{
{
using namespace MeterPU;
Meter<CPU_Time> meter;
meter.start();
//Do sth here
usleep(500000);
meter.stop();
meter.calc();
std::cout<<"Time consumed is: "<<meter.get_value()<<" micro seconds."<<std::endl;
}
}
//Output: Time consumed is: 500100 micro seconds.
#include <MeterPU.h>
#define GPU_0 0
int main()
{
{
using namespace MeterPU;
//Initialize a meter with GPU energy of default device id 0
Meter< NVML_Energy<GPU_0> > meter;
meter.start();
//Do sth here, typically a cuda call, here simplified.
sleep(2);
meter.stop();
meter.calc();
std::cout<<"Energy consumed is: "<<meter.get_value()<<" milliJ."<<std::endl;
}
}
//Output: Energy consumed is: 87516.9 milliJ.
MeterPU has been used to make the SkePU skeleton programming library energy-tunable.
The following plots show that, with MeterPU,
SkePU
can be easily retargeted to energy tuning by automatic backend selection,
here for Reduce Skeleton and for LU decomposition.
The integration can provide up to about 12x in time speedup and about 21x in energy
reduction on LU decomposition, and the savings will continue to increase as problem
size increases beyond the maximum used in our experiments.
MeterPU's overhead is only one extra function call, and nonobservable in our experiments.
TBD
MeterPU is licensed under the GNU General Public License as published by the Free Software Foundation (version 3 or later). For more information, please see the license file included in the downloadable source code.
MeterPU is a work in progress. Future work includes adding support for more metrics, platforms, and plug-ins.
If you would like to contribute, please let us know.
For reporting bugs, please email to "<firstname> DOT <lastname> AT liu DOT se".
This work was partly funded by the EU FP7 project
EXCESS and by
SeRC project OpCoReS.
We also acknowledge our colleague Erik Hansson for his constructive
feedbacks for this work.