Skip to content

cmcantalupo/geopm

 
 

GEOPM logo

GEOPM - Global Extensible Open Power Manager

Build Status version License

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 the geopm HPC runtime

  • All geopm-service package features may be used independently of the features provided by the geopm 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 December 6

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.

About

Global Extensible Open Power Manager

Resources

License

Unknown, Unknown licenses found

Licenses found

Unknown
COPYING
Unknown
COPYING-TPP

Code of conduct

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 62.2%
  • Python 23.1%
  • C 5.7%
  • Makefile 3.2%
  • Shell 2.9%
  • Fortran 1.8%
  • Other 1.1%