GEOPM - Global Extensible Open Power Manager Runtime Tools
Project description
GEOPM - Global Extensible Open Power Manager
Web Pages
https://geopm.github.io
https://geopm.github.io/service.html
https://geopm.github.io/reference.html
https://geopm.slack.com
Summary
The Global Extensible Open Power Manager (GEOPM) is a collaborative framework for exploring power and energy optimizations on heterogeneous platforms. GEOPM is open-source (BSD licensed) and developed to enable efficient power management and performance optimizations. With this powerful tool, users are able to monitor their system's energy and power consumption, and safely optimize system hardware settings to achieve energy efficiency and/or performance objectives.
With GEOPM you can:
- Interact with hardware settings and sensors using a platform-agnostic interface
- Restore changes to hardware settings when configuring process terminates
- Profile applications to study their power and energy behavior
- Automatically detect MPI and OpenMP phases in an application
- Optimize applications to improve energy efficiency or reduce the effects of work imbalance, system jitter, and manufacturing variation through built-in control algorithms
- Develop your own runtime control algorithms through the extensible plugin architecture
Repository Organization
The GEOPM repository supports two software packages: the
geopm-service
package and the geopm
package. The geopm-service
package provides a Linux systemd service. The geopm
package
provides a runtime for distributed HPC applications.
-
A build of the
geopm-service
package is required to build and run thegeopm
HPC runtime -
All
geopm-service
package features may be used independently of the features provided by thegeopm
package -
All run and build requirements of the
geopm-service
package are provided by commonly used Linux distributions -
The run and build requirements of the
geopm
package include several additional HPC specific dependencies
GEOPM Service
The files supporting the geopm-service
package are all within the
service
subdirectory located in the root directory of the the GEOPM
repository. Please refer to the service/README.rst
file for further
documentation about the GEOPM Service. Additionally a comprehensive
overview of the GEOPM service is posted here:
https://geopm.github.io/service.html
GEOPM Runtime
The GEOPM Service provides a foundation for manipulating hardware settings to optimize an objective defined by an unprivileged user. The GEOPM Runtime is a software platform built on top of the GEOPM Service that enables users to select a runtime algorithm and policy to meet energy efficiency or performance objectives. More documentation on the GEOPM Runtime is posted with our web documentation here:
https://geopm.github.io/runtime.html
Guide for Contributors
We appreciate all feedback on our project. Please see our
contributing guide for how some guidelines on how to participate.
This guide is located in the root of the GEOPM repository in a file
called CONTRIBUTING.rst
. This guide can also be viewed here:
https://geopm.github.io/contrib.html
Guide for GEOPM Developers
GEOPM is an open development project and we use Github to plan, review and test our work. The process we follow is documented here:
https://geopm.github.io/devel.html
this web page provides a guide for developers wishing to modify source
code anywhere in the GEOPM repository for both the geopm-service
and
the geopm
packages.
Status
GEOPM version 3.0 enables the GEOPM Runtime to be used with any application. It shifts responsibility for managing inter-process communication between the application and the GEOPM controller to the GEOPM Service. The start up of the GEOPM runtime is done by the libgeopm library initialization rather than through interposition on MPI initialization functions.
GEOPM version 2.0 provides a number of important changes since the
previous tagged release v1.1.0. Some of the most significant new
features are the GEOPM Service, support for Intel and NVIDIA GPUs, and
improved consistency of signal and control names provided by
PlatformIO. A wide range of other improvements have also been made,
including a higher performance profiling interface to support highly
parallel applications, and support for the isst_interface
driver.
This software is production quality as of version 1.0. We will be enforcing semantic versioning for all releases following version 1.0. Please refer to the ChangeLog for a high level history of changes in each release. The test coverage report from gcov as reported by gcovr for the latest release are posted to our web page.
Some new features of GEOPM are still under development, and their
interfaces may change before they are included in official releases.
To enable these features in the GEOPM install location, configure
GEOPM with the --enable-beta
configure flag. The features currently
considered unfinalized are the endpoint interface, and the
geopmendpoint
application. The CPU-CA and GPU-CA agents are also
beta features.
The GEOPM developers are very interested in feedback from the community. See the contributing guide to learn how to provide feedback.
License
The GEOPM source code is distributed under the 3-clause BSD license.
SEE COPYING FILE FOR LICENSE INFORMATION.
Last Update
2023 October 17
Christopher Cantalupo christopher.m.cantalupo@intel.com
Brad Geltz brad.geltz@intel.com
ACKNOWLEDGMENTS
Development of the GEOPM software package has been partially funded through contract B609815 with Argonne National Laboratory.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.