Package: geopmpy
GEOPM - Global Extensible Open Power ManagerWeb Pageshttps://geopm.github.iohttps://geopm.github.io/service.htmlhttps://geopm.github.io/reference.htmlhttps://geopm.slack.comSummaryThe 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 interfaceRestore changes to hardware settings when configuring process
terminatesProfile applications to study their power and energy behaviorAutomatically detect MPI and OpenMP phases in an applicationOptimize applications to improve energy efficiency or reduce the
effects of work imbalance, system jitter, and manufacturing variation
through built-in control algorithmsDevelop your own runtime control algorithms through the extensible
plugin architectureRepository OrganizationThe GEOPM repository supports two software packages: thegeopm-servicepackage and thegeopmpackage.  Thegeopm-servicepackage provides a Linux systemd service.  Thegeopmpackage
provides a runtime for distributed HPC applications.A build of thegeopm-servicepackage is required to build and run
thegeopmHPC runtimeAllgeopm-servicepackage features may be used independently of
the features provided by thegeopmpackageAll run and build requirements of thegeopm-servicepackage are
provided by commonly used Linux distributionsThe run and build requirements of thegeopmpackage include
several additional HPC specific dependenciesGEOPM ServiceThe files supporting thegeopm-servicepackage are all within theservicesubdirectory located in the root directory of the the GEOPM
repository.  Please refer to theservice/README.rstfile for further
documentation about the GEOPM Service.  Additionally a comprehensive
overview of the GEOPM service is posted here:https://geopm.github.io/service.htmlGEOPM RuntimeThe 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.htmlGuide for ContributorsWe 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
calledCONTRIBUTING.rst.  This guide can also be viewed here:https://geopm.github.io/contrib.htmlGuide for GEOPM DevelopersGEOPM 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.htmlthis web page provides a guide for developers wishing to modify source
code anywhere in the GEOPM repository for both thegeopm-serviceand
thegeopmpackages.StatusGEOPM 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 theisst_interfacedriver.This software is production quality as of version 1.0.  We will be
enforcingsemantic versioningfor 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 areposted 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-betaconfigure flag.  The features currently
considered unfinalized are the endpoint interface, and thegeopmendpointapplication.  The CPU-CA and GPU-CA agents are also
beta features.The GEOPM developers are very interested in feedback from the
community.  See thecontributing guideto learn how
to provide feedback.LicenseThe GEOPM source code is distributed under the 3-clause BSD license.SEE COPYING FILE FOR LICENSE INFORMATION.Last Update2023 October 17Christopher Cantalupochristopher.m.cantalupo@intel.comBrad Geltzbrad.geltz@intel.comACKNOWLEDGMENTSDevelopment of the GEOPM software package has been partially funded
through contract B609815 with Argonne National Laboratory.