geopm

Global Extensible Open Power Manager

Project Overview:
SC'16 PMBS paper
EEHPC Dec 2015 slides / audio
Tutorial source / video
Open Development:
Source code repository
Contribution instructions
Work item backlog
Code review
Travis-CI build and test
OBS build, test and packaging of dev branch
OBS release packages
Developer Documentation:
Doxygen pages
Plugin developer's guide
User Man Pages:
geopm(7)
geopm_ctl_c(3)
geopmctl(1)
geopm_error(3)
geopm_fortran(3)
geopmkey(1)
geopm_launcher(1)
geopm_omp(3)
geopm_policy_c(3)
geopmpolicy(1)
geopm_prof_c(3)
geopm_version(3)


Welcome to geopm.

Global Extensible Open Power Manager (GEOPM) is an extensible power management framework targeting high performance computing. The library can be extended to support new control algorithms and new hardware power management features. The GEOPM package provides built in features ranging from static management of power policy for each individual compute node, to dynamic coordination of power policy and performance across all of the compute nodes hosting one MPI job on a portion of a distributed computing system. The dynamic coordination is implemented as a hierarchical control system for scalable communication and decentralized control. The hierarchical control system can optimize for various objective functions including maximizing global application performance within a power bound. The root of the control hierarchy tree can communicate through shared memory with the system resource management daemon to extend the hierarchy above the individual MPI job level and enable management of system power resources for multiple MPI jobs and multiple users by the system resource manager. The geopm package provides the libgeopm library, the libgeopmpolicy library, the geopmctl application and the geopmpolicy application. The libgeopm library can be called within MPI applications to enable application feedback for informing the control decisions. If modification of the target application is not desired then the geopmctl application can be run concurrently with the target application. In this case, target application feedback is inferred by querying the hardware through Model Specific Registers (MSRs). With either method (libgeopm or geopmctl), the control hierarchy tree writes processor power policy through MSRs to enact policy decisions. The libgeopmpolicy library is used by a resource manager to set energy policy control parameters for MPI jobs. Some features of libgeopmpolicy are available through the geopmpolicy application including support for static control.

GEOPM Heirarchy

For access to the latest code, clone the git repo (primarily for developers).

$ git clone https://github.com/geopm/geopm.git