Variorum Cap Functions

Variorum provides the following high-level functions for applying an upper-bound on a particular control dial.

Defined in variorum/variorum.h.

int variorum_cap_each_socket_power_limit(int socket_power_limit)

Cap the power limits for all sockets within the node.

Supported Architectures:

  • AMD EPYC Milan

  • 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] socket_power_limit: Desired power limit for each socket.

int variorum_cap_best_effort_node_power_limit(int node_power_limit)

Cap the power limit of the node.

Supported Architectures:

  • IBM Power9

  • AMD EPYC Milan

  • 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] node_power_limit: Desired power limit for the node.

int variorum_cap_gpu_power_ratio(int gpu_power_ratio)

Cap the power shifting ratio for the GPU (uniform on both sockets).

Supported Architectures:

  • IBM Power9 (same ratio on both sockets)

Architectures that do not have API support:

  • AMD EPYC Milan

  • ARM Juno r2

  • 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

Parameters
  • [in] gpu_power_ratio: Desired power ratio (percentage). for the processor and GPU.

int variorum_cap_each_gpu_power_limit(int gpu_power_limit)

Cap the power usage identically of each GPU on the node.

Supported Architectures:

  • NVIDIA Volta, Ampere

  • AMD Instinct (MI-50 onwards)

Return

0 if successful, otherwise -1

Parameters
  • [in] gpu_power_limit: Desired power limit in watts for each GPU on the node.

int variorum_cap_each_core_frequency_limit(int cpu_freq_mhz)

Cap the CPU frequency for all cores within a socket.

Supported Architectures:

  • AMD EPYC Milan

  • Intel Skylake

  • 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] cpu_freq_mhz: Desired CPU frequency for each core in MHz.

int variorum_cap_socket_frequency_limit(int socketid, int socket_freq_mhz)

Cap the frequency of the target processor.

Supported Architectures:

  • ARM Juno r2

  • AMD EPYC Milan

Return

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

Parameters
  • [in] socketid: Target socket ID.

  • [in] socket_freq_mhz: Desired socket frequency in MHz.