Install Guide

This documentation covers how to use pre-built Linux OS packages to install GEOPM for all users of a system, either using the latest stable release of GEOPM or a development snapshot. The stable release packages are created as part of the Git repository tag/release process. The development snapshot packages are built by GEOPM’s GitHub CI process each time the dev branch is updated.

These OS packages are the right choice for system administrators deploying the GEOPM Access Service for all users of a system. The geopmd daemon runs as root, so it is installed from a stable, tagged release and deliberately omits the optional Python dependencies that only client-side tools require. Clients of an already-deployed Access Service who want to run tools such as geopmopt – particularly on a system where they do not have administrative privileges – can instead install the geopmdpy Python package, which provides geopmopt and the other client command-line tools, into a personal virtual environment with pip; see Installing client tools with pip below.

GEOPM works with Intel GPUs when GEOPM is built with LevelZero support and NVIDIA GPUs when GEOPM is built with NVML support. Additional limited support for GPUs exists when the GPUs are visible in a Linux Direct Rendering Manager (DRM) sysfs interface. The Linux DRM interface is implemented for Intel GPUs. In the table below, “Intel GPU support” packages provide only the DRM interfaces and “Expanded Intel GPU support” packages also provide the LevelZero interfaces.

Install Latest Stable Release

Install packages from the latest stable release of GEOPM. These packages have been upstreamed into Fedora 42 and the openSUSE Hardware repository, and where applicable these distributions are recommended. For other scenarios, packages are published by the GEOPM development team on the main openSUSE Build System instance and through the Ubuntu Launchpad package build service.

GEOPM Access Service - Stable

Instructions on how to install the latest official release of the GEOPM Access Service and its dependency packages are broken down by OS and OS version. Note: the commands in this table should be run with sudo or as the root user.

Note

For Rocky Linux and CentOS installations, the Extra Packages for Enterprise Linux (EPEL) repository must be enabled to satisfy dependencies that are not provided by the base distribution repositories. Follow the official EPEL enablement instructions in the Fedora documentation: https://docs.fedoraproject.org/en-US/epel/getting-started/

# Add zypper repo
zypper addrepo https://download.opensuse.org/repositories/home:/geopm:/release/15.3/home:geopm:release.repo
zypper refresh
# GEOPM Access Service python module
zypper install python3-geopmdpy
# SystemD service configuration and geopmd executable
zypper install geopmd
# C/C++ development files
zypper install libgeopmd-devel
# Man pages for GEOPM Access Service
zypper install geopmd-doc
# Man pages for C/C++ development
zypper install libgeopmd-doc

GEOPM Runtime Service - Stable

Instructions on how to install the latest official release of the GEOPM Runtime Service and its dependency packages are broken down by OS and OS version. Note: the commands in this table should be run with sudo or as the root user.

# Add zypper repo
zypper addrepo https://download.opensuse.org/repositories/home:/geopm:/release/15.3/home:geopm:release.repo
zypper refresh
# GEOPM Runtime Command Line Interface
zypper install geopm-cli
# GEOPM Runtime Agent development files
zypper install libgeopm-devel
# GEOPM Runtime post-processing scripts
zypper install python3-geopmpy
# Man pages for GEOPM Runtime Service
zypper install geopm-doc
# Man pages for C/C++ development
zypper install libgeopm-doc

Enable the GEOPM Access Service

Installing the geopmd package is the first step to enabling the GEOPM Access Service. Unprivileged users will be unable to use the service until the access lists have been configured by an administrator.

To guarantee that the GEOPM Access Service is up and will be enabled on reboot run the following commands:

sudo systemctl enable geopm
sudo systemctl start geopm

For full details about the GEOPM SystemD service see the administrator guide.

The geopmaccess(1) command line tool is used to configure the access lists. The linked manual page provides detailed documentation about how to set the access lists. A few examples are provided here as well.

To grant permissions to all non-root users to be able to use all of the features provided by the Service, execute the following commands:

geopmaccess -a | sudo geopmaccess -w
geopmaccess -a -c | sudo geopmaccess -w -c

These commands will create access lists in the system location that the Service will use to determine user privilege.

An administrator may use the --log (-l) option of geopmaccess to restrict an access list to the set of values that have been used since last restart by piping the output into geopmaccess -w:

geopmaccess -l | sudo geopmaccess -w
geopmaccess -l -c | sudo geopmaccess -w -c

For each tagged release of GEOPM, a list of all of the signal and control names is created and stored in the GEOPM Git repository. An administrator may select names from this list rather than querying for available signals with the geopmaccess -a command line interface (note: all controls names are also signal names).

Guides for Specialized Install

There are other installation scenarios that are not covered on this page which may be preferred in certain circumstances. See links below to supporting documentation if these situations apply to you.

Installing client tools with pip

The OS packages above install the root-owned GEOPM Access Service daemon, which does not require the optional Python dependencies used by client tools. A client of an already-deployed Access Service – for example a user running geopmopt – can install the geopmdpy Python package into a personal virtual environment instead. The geopmdpy package provides geopmopt along with the geopmread, geopmwrite, and geopmsession client tools. Installing it this way does not require administrative privileges, and it lets a client:

  • pull in optional dependencies, such as the optimize extra that enables geopmopt (scikit-optimize and pyyaml); and

  • run a development snapshot of the client tools on top of a stable, tagged Access Service release, so the root-owned daemon keeps executing vetted code while the client experiments with newer features.

# Create and activate a virtual environment
python3 -m venv geopm-venv
source geopm-venv/bin/activate

# Install the latest release of the client tools with the optimize extra
python3 -m pip install 'geopmdpy[optimize]'

# ...or install a development snapshot from the dev branch instead
python3 -m pip install \
    'geopmdpy[optimize] @ git+https://github.com/geopm/geopm.git#subdirectory=geopmdpy'

Client tools installed this way communicate with whatever GEOPM Access Service is already running on the system; the virtual environment affects only the user-space client, not the root-owned daemon.

Install latest development snapshot

See the dev snapshot install guide for instructions on how to install packages built by GitHub CI based on the latest commit to the dev branch.

Some typical scenrios for installing development packages:

  • Try out new features of GEOPM and give feedback to the developers about your experience

  • Run integration testing against the latest implementation

Packaging local changes

See the build guide to create Linux OS packages for changes you have made locally to the GEOPM source code or build configuration. This more involved process should be followed if you would like to build packages that differ from the ones maintained by the GEOPM team.

Some typical scenarios for packaging local changes:

  • Installing GEOPM on an OS or OS version that is not supported by published packages, e.g. Debian

  • Configuring a GEOPM C++ library with options not supported by published packages, e.g. NVML support on openSUSE

  • Creating Docker containers that provide the GEOPM software with specific features enabled

  • Changing dependency software libraries e.g. enabling MPICH for MPI support

  • Deploying on a non-x86_64 architecture, e.g. packaging for aarch64

Installing for a single user

See the developer guide to build and install a version of GEOPM for your user, rather than system-wide. Note that many important features of the GEOPM software are not available without the GEOPM Access Service which requires administrative privileges to install and configure.

Some typical scenarios for installing for a single user:

  • Unit testing changes to the source code in a developer workflow

  • Using new client-side GEOPM features on a system where you do not have administrative privileges

  • Installing geopmpy Python module on systems without OS package support for dependencies

Installing using Spack

See the Spack guide for details on how to use the Spack Package Manager to build and install the GEOPM software. This can aid in resolving dependencies and installing multiple versions of software using the lmod system. Spack is a common solution for HPC centers to manage their software stack and dependencies.

Some typical scenarios for installing with Spack:

  • System administrator of a system that already relies on Spack to package other software.

  • A user trying to build GEOPM from source on a system without administrative permissions. Without root, the user cannot rely on the OS package manager to provide GEOPM build and runtime requirements, and Spack may be used to resolve these dependencies.

Further Documentation