<commit_before># Energy Monitoring Interface

EnergyMon provides a general C interface for energy monitoring utilities.

For details, please see the following publication and reference as appropriate:

* <NAME>, <NAME>, and <NAME>. "A Portable Interface for Runtime Energy Monitoring". In: FSE. 2016. DOI: https://doi.org/10.1145/2950290.2983956
* You may also find an extended analysis in the [Tech Report](https://cs.uchicago.edu/research/publications/techreports/TR-2016-08).

Applications using some libraries may need to be executed using elevated privileges.

The following instructions are for Linux systems.
If you are using a different platform, change the commands accordingly.

Current EnergyMon implementation options are:

* dummy [default]
* cray-pm
* ibmpowernv-power
* msr
* odroid
* odroid-ioctl
* osp
* osp-polling
* rapl
* raplcap-msr
* shmem
* wattsup
* wattsup-libusb
* wattsup-libftdi
* zcu102


## Building

This project uses CMake.

By default, all libraries will be built, with `dummy` as the `energymon-default` implementation:

``` sh
mkdir _build
cd _build
cmake ..<commit_msg>README: add short descriptions for available implementations<commit_after># Energy Monitoring Interface

EnergyMon provides a general C interface for energy monitoring utilities.

For details, please see the following publication and reference as appropriate:

* <NAME>, <NAME>, and <NAME>. "A Portable Interface for Runtime Energy Monitoring". In: FSE. 2016. DOI: https://doi.org/10.1145/2950290.2983956
* You may also find an extended analysis in the [Tech Report](https://cs.uchicago.edu/research/publications/techreports/TR-2016-08).

Applications using some libraries may need to be executed using elevated privileges.

The following instructions are for Linux systems.
If you are using a different platform, change the commands accordingly.

Current EnergyMon implementation options are:

* **dummy** [default]: Mock implementation
* **cray-pm**: Cray XC30 and XC40 systems (e.g., NERSC Cori) via Linux sysfs files
* **ibmpowernv-power**: IBM PowerNV systems (e.g., OLCF Summit) via Linux sysfs files
* **msr**: Intel RAPL via Linux Model-Specific Register device files (supports most non-Atom CPUs)
* **odroid**: Hardkernel ODROID XU+E and XU3 systems (with INA-231 power sensors) via Linux sysfs files
* **odroid-ioctl**: Hardkernel ODROID XU+E and XU3 systems (with INA-231 power sensors) via `ioctl` on Linux device files
* **osp**: Hardkernel ODROID Smart Power meters (coarse-grained energy counter) via `HIDAPI`
* **osp-polling**: Hardkernel ODROID Smart Power meters (finer-grained power sensor) via `HIDAPI`
* **rapl**: Intel RAPL via Linux powercap sysfs files
* **raplcap-msr**: Intel RAPL via `libraplcap-msr` (more capable than `msr` implementation above)
* **shmem**: Shared memory client via an EnergyMon shared memory provider
* **wattsup**: Watts Up Pro meter via Linux device files
* **wattsup-libusb**: Watts Up Pro meter via `libusb`
* **wattsup-libftdi**: Watts Up Pro meter via `libftdi`
* **zcu102**: Xilinx Zynq UltraScale+ ZCU102 systems (with INA-226 power sensors) via Linux sysfs files

See the README files in subdirectories for implementation specifics, including dependencies.


## Building

This project uses CMake.

By default, all libraries will be built, with `dummy` as the `energymon-default` implementation:

``` sh
mkdir _build
cd _build
cmake ..
{'fraction_non_alphanumeric': 0.09275618374558305, 'fraction_numerical': 0.024734982332155476, 'mean_word_length': 4.991181657848324, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 9, 'https://': 4, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2904081', 'n_tokens_mistral': 1071, 'n_tokens_neox': 973, 'n_words': 416}