Variorum Print Functions

Variorum provides the following high-level functions for printing the value of various features. For each feature, there is a print and print_verbose API, which will print the metrics in different output formats. The print API prints the output in tabular format that can be filtered and parsed by a data analysis framework, such as R or Python. The print_verbose API prints the output in verbose format that is more human-readable (with units, titles, etc.). See Examples for sample output formats supported by Variorum.

Defined in variorum/variorum.h.

int variorum_print_verbose_power(void)

Print power usage data in long format.

Supported Architectures:

  • AMD EPYC Milan

  • AMD Radeon Instinct GPUs (MI50 onwards)

  • ARM Juno v2

  • IBM Power9

  • Intel Sandy Bridge

  • Intel Ivy Bridge

  • Intel Haswell

  • Intel Broadwell

  • Intel Skylake

  • Intel Kaby Lake

  • Intel Ice Lake

  • Intel Cascade Lake

  • Intel Cooper Lake

  • NVIDIA Volta

Return

0 if successful or if feature has not been implemented or is not supported, otherwise -1

int variorum_print_power(void)

Print power usage data in CSV format.

Supported Architectures:

  • AMD EPYC Milan

  • AMD Radeon Instinct GPUs (MI50 onwards)

  • ARM Juno v2

  • IBM Power9

  • Intel Sandy Bridge

  • Intel Ivy Bridge

  • Intel Haswell

  • Intel Broadwell

  • Intel Skylake

  • Intel Kaby Lake

  • Intel Ice Lake

  • Intel Cascade Lake

  • Intel Cooper Lake

  • Intel Arctic Sound

  • NVIDIA Volta

Return

0 if successful or if feature has not been implemented or is not supported, otherwise -1

int variorum_print_verbose_power_limit(void)

Print power limits for all known domains in long format.

Supported Architectures:

  • AMD EPYC Milan

  • AMD Radeon Instinct GPUs (MI50 onwards)

  • IBM Power9

  • Intel Sandy Bridge

  • Intel Ivy Bridge

  • Intel Haswell

  • Intel Broadwell

  • Intel Skylake

  • Intel Kaby Lake

  • Intel Ice Lake

  • Intel Cascade Lake

  • Intel Cooper Lake

  • NVIDIA Volta

Return

0 if successful or if feature has not been implemented or is not supported, otherwise -1

int variorum_print_power_limit(void)

Print power limits for all known domains in CSV format.

Supported Architectures:

  • AMD EPYC Milan

  • AMD Radeon Instinct GPUs (MI50 onwards)

  • IBM Power9

  • Intel Sandy Bridge

  • Intel Ivy Bridge

  • Intel Haswell

  • Intel Broadwell

  • Intel Skylake

  • Intel Kaby Lake

  • Intel Ice Lake

  • Intel Cascade Lake

  • Intel Cooper Lake

  • NVIDIA Volta

Return

0 if successful or if feature has not been implemented or is not supported, otherwise -1

int variorum_print_verbose_thermals(void)

Print thermal data in long format.

Supported Architectures:

  • AMD Radeon Instinct GPUs (MI50 onwards)

  • ARM Juno v2

  • Intel Sandy Bridge

  • Intel Ivy Bridge

  • Intel Haswell

  • Intel Broadwell

  • Intel Skylake

  • Intel Kaby Lake

  • Intel Cascade Lake

  • Intel Cooper Lake

  • NVIDIA Volta

Return

0 if successful or if feature has not been implemented or is not supported, otherwise -1

int variorum_print_thermals(void)

Print thermal data in CSV format.

Supported Architectures:

  • AMD Radeon Instinct GPUs (MI50 onwards)

  • ARM Juno v2

  • Intel Sandy Bridge

  • Intel Ivy Bridge

  • Intel Haswell

  • Intel Broadwell

  • Intel Skylake

  • Intel Kaby Lake

  • Intel Cascade Lake

  • Intel Cooper Lake

  • Intel Arctic Sound

  • NVIDIA Volta

Return

0 if successful or if feature has not been implemented or is not supported, otherwise -1

int variorum_print_verbose_counters(void)

Print performance counter data in long format.

Supported Architectures:

  • Intel Sandy Bridge

  • Intel Ivy Bridge

  • Intel Haswell

  • Intel Broadwell

  • Intel Skylake

  • Intel Kaby Lake

  • Intel Cascade Lake

  • Intel Cooper Lake

Return

0 if successful or if feature has not been implemented or is not supported, otherwise -1

int variorum_print_counters(void)

Print performance counter data in CSV format.

Supported Architectures:

  • Intel Sandy Bridge

  • Intel Ivy Bridge

  • Intel Haswell

  • Intel Broadwell

  • Intel Skylake

  • Intel Kaby Lake

  • Intel Cascade Lake

  • Intel Cooper Lake

Return

0 if successful or if feature has not been implemented or is not supported, otherwise -1

int variorum_print_verbose_frequency(void)

Print current operating frequency (APERF/MPERF and PERF_STATUS) in long format.

Supported Architectures:

  • AMD EPYC Milan

  • AMD Radeon Instinct GPUs (MI50 onwards)

  • ARM Juno v2

  • Intel Sandy Bridge

  • Intel Ivy Bridge

  • Intel Haswell

  • Intel Broadwell

  • Intel Skylake

  • Intel Kaby Lake

  • Intel Cascade Lake

  • Intel Cooper Lake

  • NVIDIA Volta

Return

0 if successful or if feature has not been implemented or is not supported, otherwise -1

int variorum_print_frequency(void)

Print current operating frequency (APERF/MPERF and PERF_STATUS) in CSV format.

Supported Architectures:

  • AMD EPYC Milan

  • AMD Radeon Instinct GPUs (MI50 onwards)

  • ARM Juno v2

  • Intel Sandy Bridge

  • Intel Ivy Bridge

  • Intel Haswell

  • Intel Broadwell

  • Intel Skylake

  • Intel Kaby Lake

  • Intel Cascade Lake

  • Intel Cooper Lake

  • Intel Arctic Sound

  • NVIDIA Volta

Return

0 if successful or if feature has not been implemented or is not supported, otherwise -1

int variorum_print_hyperthreading(void)

Print if hyperthreading is enabled or disabled.

Return

0 if successful, otherwise -1

void variorum_print_topology(void)

Print architecture topology in long format.

int variorum_print_features(void)

Print list of features available on a particular architecture.

Supported Architectures:

  • Intel Sandy Bridge

  • Intel Ivy Bridge

  • Intel Haswell

  • Intel Broadwell

  • Intel Skylake

  • Intel Kaby Lake

  • Intel Ice Lake

  • Intel Cascade Lake

  • Intel Cooper Lake

Return

0 if successful or if feature has not been implemented or is not supported, otherwise -1

int variorum_print_turbo(void)

Print if turbo is enabled or disabled. If enabled, then print discrete frequencies in turbo range (i.e., max turbo ratio).

Supported Architectures:

  • Intel Sandy Bridge

  • Intel Ivy Bridge

  • Intel Haswell

  • Intel Broadwell

Return

0 if successful or if feature has not been implemented or is not supported, otherwise -1

int variorum_print_verbose_gpu_utilization(void)

Print verbose GPU streaming multi-processor and memory utilization.

Supported Architectures:

  • AMD Radeon Instinct GPUs (MI50 onwards)

  • NVIDIA Volta

Architectures that do not have API support:

  • AMD EPYC Milan

  • ARM Juno v2

  • IBM Power9

  • Intel Sandy Bridge

  • Intel Ivy Bridge

  • Intel Haswell

  • Intel Broadwell

  • Intel Skylake

  • Intel Kaby Lake

  • Intel Ice Lake

  • Intel Cascade Lake

  • Intel Cooper Lake

Return

0 if successful or if feature has not been implemented or is not supported, otherwise -1

int variorum_print_gpu_utilization(void)

Print CSV-formatted GPU streaming multi-processor and memory utilization.

Supported Architectures:

  • AMD Radeon Instinct GPUs (MI50 onwards)

  • NVIDIA Volta

Architectures that do not have API support:

  • AMD EPYC Milan

  • ARM Juno v2

  • IBM Power9

  • Intel Sandy Bridge

  • Intel Ivy Bridge

  • Intel Haswell

  • Intel Broadwell

  • Intel Skylake

  • Intel Kaby Lake

  • Intel Ice Lake

  • Intel Cascade Lake

  • Intel Cooper Lake

Return

0 if successful or if feature has not been implemented or is not supported, otherwise -1

int variorum_print_available_frequencies(void)

Print list of available frequencies from p-states, turbo, AVX, etc. ranges.

Supported Architectures:

  • ARM Juno v2

  • Intel Sandy Bridge

  • Intel Ivy Bridge

  • Intel Haswell

  • Intel Broadwell

  • Intel Skylake

  • Intel Kaby Lake

  • Intel Cascade Lake

  • Intel Cooper Lake

Return

0 if successful or if feature has not been implemented or is not supported, otherwise -1

int variorum_print_energy(void)

Print if core and socket energy is available.

Supported Architectures:

  • AMD EPYC Milan

Return

0 if successful or if feature has not been implemented or is not supported, otherwise -1

int variorum_poll_power(FILE *output)

Collect power limits and energy usage for both the package and DRAM domains.

Supported Architectures:

  • Intel Sandy Bridge

  • Intel Ivy Bridge

  • Intel Haswell

  • Intel Broadwell

  • Intel Skylake

  • Intel Kaby Lake

  • Intel Cascade Lake

  • Intel Cooper Lake

Return

0 if successful or if feature has not been implemented or is not supported, otherwise -1

Parameters
  • [in] output: Location for output (stdout, stderr, filename).

int variorum_monitoring(FILE *output)

Collect power limits and energy usage for both the package and DRAM domains, fixed counters, TSC, APERF, and MPERF.

Supported Architectures:

  • IBM Power9

  • Intel Sandy Bridge

  • Intel Ivy Bridge

  • Intel Haswell

  • Intel Broadwell

  • Intel Skylake

  • Intel Kaby Lake

  • Intel Cascade Lake

  • Intel Cooper Lake

Return

0 if successful or if feature has not been implemented or is not supported, otherwise -1

Parameters
  • [in] output: Location for output (stdout, stderr, filename).

char *variorum_get_current_version(void)