Skip to main content

Helios GPU Controller dynamically reduces Graphics Processing Unit (GPU) clock speeds by leveraging insights from the current energy mix and meteorological data. Data is obtained by the SMARD API and Forecast.Solar. The goal is to reduce power consumption of non-renewable sources.

Project description

Helios version: 2.0

This is the code for the Helios GPU Controller

Developers:

Lasse Müller, Bao Tran Nguyen, Berkehan Ünal

Usage

Requirements

Our solution was developed using Python. To run the software, these are the prerequisites:

  • Operating system distribution of Windows or Linux
  • Python >=3.8
  • Preferably a virtual environment

Installation of Software and Dependencies

A development copy of the project's repository or software can be created using the following command.

$ git clone https://github.com/automl-private/MLProject_Mueller-Nguyen-Uenal_Helios

To include the package into a virtual environment directly, consider installing with:

$ pip install HeliosGPUController

Include in the code: from helios_gpu_controller.HeliosGPUController import HeliosGPUController

Config File

An example config file can be found in src/helios_gpu_controller/conf.yaml These are the configuration parameters

  • use_helios_on_init: If set to false, GPU throttling won't be enabled by instantiating HeliosGPUController, but only with calling throttle_gpu() method
  • devices: List of all devices that the HeliosGPUController has access to
  • min_clock_speed_percent: minimum GPU clock frequency in percent. Helios recommendation: 0.5. Going higher than 0.5 reduces Helios' effectiveness.
  • update_rate: Update Rate in minutes. The update rate determines, how often the GPU clock frequency is updated.
  • using_solar_panels: Enable Helios solar
  • avg_power_consumption_per_year: Average power consumption of your household. In kWh
  • max_power_of_home_pc: Maximum power consumption of your computer. In Watts
  • declination: Declination of your solar panels
  • azimuth: Azimuth of your solar panels. 0 - south, 90 - west, 180 - north, 270 - east
  • peak_kw: Peak Output of your photovoltaic system
  • need_user_permission: if set to true, prompt a permission window, before Helios reduces your GPU frequency

Code Execution

Helios GPU controller runs in a subprocess and does not interfere with the main program loop. When use_helios_on_init is set to True, the Controller is executed automatically on init. To run Helios, use the following code snippets:

When use_helios_on_init is set to True:

Execute: gpu_controller = HeliosGPUController("conf.yaml")
After the program finishes: gpu_controller.stop_helios()

When use_helios_on_init is set to False:

Execute: gpu_controller = HeliosGPUController("conf.yaml")
To throttle GPU manually: gpu_controller.throttle_gpu()
After the program finishes: gpu_controller.stop_helios()

License

This project is licensed under the MIT License.

 _   _         _                       ___    ___    _   _     ___                  _                _    _                
( ) ( )       (_ )  _                 (  _`\ (  _`\ ( ) ( )   (  _`\               ( )_             (_ ) (_ )              
| |_| |   __   | | (_)   _     ___    | ( (_)| |_) )| | | |   | ( (_)   _     ___  | ,_) _ __   _    | |  | |    __   _ __ 
|  _  | /'__`\ | | | | /'_`\ /',__)   | |___ | ,__/'| | | |   | |  _  /'_`\ /' _ `\| |  ( '__)/'_`\  | |  | |  /'__`\( '__)
| | | |(  ___/ | | | |( (_) )\__, \   | (_, )| |    | (_) |   | (_( )( (_) )| ( ) || |_ | |  ( (_) ) | |  | | (  ___/| |   
(_) (_)`\____)(___)(_)`\___/'(____/   (____/'(_)    (_____)   (____/'`\___/'(_) (_)`\__)(_)  `\___/'(___)(___)`\____)(_)                                                                                                                                                                                                                                                

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

HeliosGPUController-2.0.1.tar.gz (10.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

HeliosGPUController-2.0.1-py3-none-any.whl (12.0 kB view details)

Uploaded Python 3

File details

Details for the file HeliosGPUController-2.0.1.tar.gz.

File metadata

  • Download URL: HeliosGPUController-2.0.1.tar.gz
  • Upload date:
  • Size: 10.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.0

File hashes

Hashes for HeliosGPUController-2.0.1.tar.gz
Algorithm Hash digest
SHA256 2cbd56c08746ab9661e874c9f31a5a82f3a9c9096fcd77583d78bd0998393806
MD5 4ec4bd67e9ae36b50d391571cf748486
BLAKE2b-256 b7992e0ad14668c376f57e47928d090797c2ac72cdcc9d4509285309f22d0130

See more details on using hashes here.

File details

Details for the file HeliosGPUController-2.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for HeliosGPUController-2.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8a648901bd1a0f30e7707e740d101dc983279003c95cd828d4f1a8d444a85554
MD5 369480d168295eb6082f7ac61eb79cd6
BLAKE2b-256 786343e3d9dc45098463cc5ac8bc2b31be0712bceff6165101e8b1e0157af503

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page