def aggregate_across_processes()

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)