25 "SHAM_SYSTEM_METRICS_REPORTER",
"The name of the system metrics reporter to use");
33 virtual std::optional<f64> get_rank_energy_consummed() = 0;
34 virtual std::optional<f64> get_gpu_energy_consummed() = 0;
35 virtual std::optional<f64> get_cpu_energy_consummed() = 0;
36 virtual std::optional<f64> get_dram_energy_consummed() = 0;
38 virtual bool support_rank_energy_consummed() = 0;
39 virtual bool support_gpu_energy_consummed() = 0;
40 virtual bool support_cpu_energy_consummed() = 0;
41 virtual bool support_dram_energy_consummed() = 0;
44 std::unique_ptr<ISystemMetricReporter> ¤t_reporter();
46 inline std::optional<f64> get_rank_energy_consummed() {
50 inline bool support_rank_energy_consummed() {
54 inline std::optional<f64> get_gpu_energy_consummed() {
58 inline bool support_gpu_energy_consummed() {
62 inline std::optional<f64> get_cpu_energy_consummed() {
66 inline bool support_cpu_energy_consummed() {
70 inline std::optional<f64> get_dram_energy_consummed() {
74 inline bool support_dram_energy_consummed() {
80 std::optional<f64> rank_energy_consummed;
81 std::optional<f64> gpu_energy_consummed;
82 std::optional<f64> cpu_energy_consummed;
83 std::optional<f64> dram_energy_consummed;
88 std::vector<SystemMetrics> gather_rank_metrics(
const SystemMetrics &input);
90 SystemMetrics aggregate_rank_metrics(
const std::vector<SystemMetrics> &input);
93 std::string wall_time;
94 std::optional<std::string> rank_energy_consummed;
95 std::optional<std::string> gpu_energy_consummed;
96 std::optional<std::string> cpu_energy_consummed;
97 std::optional<std::string> dram_energy_consummed;
98 std::optional<std::string> rank_power;
99 std::optional<std::string> gpu_power;
100 std::optional<std::string> cpu_power;
101 std::optional<std::string> dram_power;
108 auto optional_sub = [](
const std::optional<f64> &lhs,
109 const std::optional<f64> &rhs) -> std::optional<f64> {
110 return (lhs.has_value() && rhs.has_value())
111 ? std::optional<f64>(lhs.value() - rhs.value())
114 return SystemMetrics{
115 lhs.wall_time - rhs.wall_time,
116 optional_sub(lhs.rank_energy_consummed, rhs.rank_energy_consummed),
117 optional_sub(lhs.gpu_energy_consummed, rhs.gpu_energy_consummed),
118 optional_sub(lhs.cpu_energy_consummed, rhs.cpu_energy_consummed),
119 optional_sub(lhs.dram_energy_consummed, rhs.dram_energy_consummed)};
double f64
Alias for double.
T & get_check_ref(const std::unique_ptr< T > &ptr, SourceLocation loc=SourceLocation())
Takes a std::unique_ptr and returns a reference to the object it holds. It throws a std::runtime_erro...
std::optional< std::string > getenv_str_register(const char *env_var, std::string desc)
Get the content of the environment variable if it exist and register it documentation.
namespace for the system handling
FormattedSystemMetrics format_system_metrics(const SystemMetrics &input)
Only to be used on deltas, not the raw one.