Park#

class impacthpc.Park(clusters: dict[str, Cluster], embodied_impacts: Impacts | None = None, electric_power: ReplicableValue | str | None = None, peak_power: ReplicableValue | str | None = None, idle_power: ReplicableValue | str | None = None, energy_intensity: EnergyIntensity | None = None, PUE: ReplicableValue | None = None, cooling: Cooling | None = None, batteries: list[Battery] | None = None)#

Bases: HasConsumptionAndEmbodiedImpacts

Represents a park of servers, a datacenter, or an HPC center.

embodied_impacts#

The embodied impacts of the park. If the value is known, estimate_embodied_impacts() returns it, otherwise an estimation is done based on other attributes. Defaults to None.

Type:

Impacts | str | None, optional

clusters#

A dictionary whose keys are names and values are clusters. Clusters are sets of nodes with the same specifications.

Type:

dict[str, Cluster]

energy_intensity#

Energy intensity of the electrical mix of the region where the park is running. This represents the impacts of producing 1 kWh of electricity. Defaults to the average energy intensity of Europe.

Type:

EnergyIntensity, optional

PUE#

The Power Usage Effectiveness of the park. This value is overridden by the PUE of the cluster if provided. Defaults to the value in the config file under default_values_park > PUE.

Type:

ReplicableValue, optional

cooling#

An instance of Cooling representing the cooling system. Only used for embodied impacts; consumption is estimated using the PUE. Defaults to an estimation of the cooling power installed based on the servers’ consumption.

Type:

Cooling | None, optional

batteries#

A list of Battery instances representing the emergency batteries. Defaults to an estimation based on the server consumption and the time to start the emergency power supply (this duration is defined in the config file under default_values_battery > duration).

Type:

list[Battery] | None, optional

Methods Summary

job_impact(job)

Estimate the environmental impact of a job running on this park.

Methods Documentation

job_impact(job: Job) Impacts#

Estimate the environmental impact of a job running on this park. This takes into account the impact of the electricity consumption of the job, as well as the embodied impact of the park attributed to this job.

This includes:

  • The Embedded impacts of the servers attributed to the job.

  • The impacts of electricity consumption of the job, based on energy_intensity.

  • The Embedded impacts of the batteries, using the Battery’s allocation method in addition to an allocation based on the proportion of the total consumption of the park that this job’s servers use.

  • The Embedded impacts of the cooling, using the Cooling’s allocation method in addition to an allocation based on the proportion of the total consumption of the park that this job’s servers use.

Parameters:

job (Job) – A job running on a cluster of the park. Its cluster must exist in the park.

Returns:

The total impact of the job.

Return type:

Impact

estimate_electric_power() ReplicableValue#

Estimate the electric power of the park.

Sums the servers’ consumption, multiplied by their PUE (the PUE of the cluster if defined, otherwise the park’s PUE).

Returns:

The estimated instant consumption of the park.

Return type:

ReplicableValue

estimate_embodied_impacts() Impacts#

Estimate the embodied impacts of the park.

If embodied_impacts is not None, this method only returns it.

Otherwise, sums the embodied impacts of the servers in clusters, the batteries, and the cooling.

Returns:

The embodied impacts of the park.

Return type:

Impact

estimate_idle_power() ReplicableValue#

Estimate the static consumption (when 0% workload) of the park.

Sums the static consumption of the servers, multiplied by their PUE.

Returns:

The static consumption of the park.

Return type:

ReplicableValue

estimate_peak_power() ReplicableValue#

Estimate the peak consumption (maximum consumption, when maximal workload) of the park.

Sums the servers’ peak consumptions, multiplied by their PUE.

Returns:

The peak consumption of the park.

Return type:

ReplicableValue

job_impact(job: Job) Impacts#

Estimate the environmental impact of a job running on this park. This takes into account the impact of the electricity consumption of the job, as well as the embodied impact of the park attributed to this job.

This includes:

  • The Embedded impacts of the servers attributed to the job.

  • The impacts of electricity consumption of the job, based on energy_intensity.

  • The Embedded impacts of the batteries, using the Battery’s allocation method in addition to an allocation based on the proportion of the total consumption of the park that this job’s servers use.

  • The Embedded impacts of the cooling, using the Cooling’s allocation method in addition to an allocation based on the proportion of the total consumption of the park that this job’s servers use.

Parameters:

job (Job) – A job running on a cluster of the park. Its cluster must exist in the park.

Returns:

The total impact of the job.

Return type:

Impact

servers_power() ReplicableValue#

Estimate the consumption of all servers in the park, without accounting for the PUE.

Returns:

The sum of the consumptions of the servers in the park.

Return type:

ReplicableValue