/GREEM

A repository to measure the energy impact of video processes.

Primary LanguageJupyter NotebookOtherNOASSERTION

GREEM

Gaia Resource Energy and Emission Monitoring

Description

We present a monitoring tool that is open-source, easy-to-use, and easy-to-set up for benchmarking video processing. The tool measures various hardware parameters, such as energy consumption and GPU metrics, including core and memory usage, temperature, and fan speed. Additionally, we offer scripts that generate sample analytic plots, which assist researchers in analyzing and understanding their benchmark results.

Prerequisites

  • Python
  • Anaconda or Miniconda
  • FFmpeg
  • NVIDIA & CUDA

Installation

Quick Setup


If all prerequisites are met, use the quick setup at the root of the project to get started.

# Creates the Python virtual envorinment with Anaconda
conda env create -f environment.yml
# Activates the Python virtual environment
# Always has to be activated!
conda activate greem
# Installs the project paths
pip install -e .

On System Installation

The Installation README contains the necessary steps to install all dependencies on a Linux system to run GREEM.

Docker Installation

The Docker Installation file contains instructions to build and run a Docker container for GREEM.

Testbeds

Inside the testbeds folder, testbeds are located to measure the energy impact in various scenarios.

This section contains information about some issues encountered during the creation and execution of this library.

CUDA Hardware Acceleration not Working Properly

To fully utilize a CUDA GPU, it is necessary that not only the -hwaccel cuda flag is set, but also all other operations need to be specified to use CUDA instead of a CPU, see StackOverflow.

How to fully use CUDA, please refer to the NVIDIA documentation.

FFmpeg - cuda encode - OpenEncodeSessionEx failed: out of memory

This issue is likely occurring during the multi-video encoding/decoding process with a GPU. The error states that the used GPU is 'non-qualified' and only supports a fixed amount of sessions (videos encoded at once) see StackOverflow.

The number of videos that can be encoded/decoded at once can be looked up at: GPU Support Matrix with the Max # of concurrent sessions column corresponding to the GPU.

There exists a repository to fix this restriction, but we did not test its functionality.

Docker - Could not select device driver "nvidia"

If the following error is encountered:

Error response from daemon: could not select device driver "nvidia" with capabilities: [[gpu]]

the NVIDIA Container Toolkit needs to be installed (see Installation README, section Docker).