in optimum_benchmark/trackers/energy.py [0:0]
def aggregate_across_processes(energies: List[Optional["Energy"]]) -> Optional["Energy"]:
if len(energies) == 0:
raise ValueError("No energy measurements to aggregate")
elif any(energy is None for energy in energies):
raise ValueError("Some energy measurements are missing")
# since measurements are machine-level, we just take the average
total = sum(energy.total for energy in energies) / len(energies)
cpu = sum(energy.cpu for energy in energies) / len(energies)
gpu = sum(energy.gpu for energy in energies) / len(energies)
ram = sum(energy.ram for energy in energies) / len(energies)
unit = energies[0].unit
return Energy(cpu=cpu, gpu=gpu, ram=ram, total=total, unit=unit)