Skip to content

Commit 74f00f2

Browse files
committed
Added Number of CPU cores to config
1 parent b0545e5 commit 74f00f2

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

simvue/eco/config.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ class EcoConfig(pydantic.BaseModel):
3131

3232
co2_signal_api_token: pydantic.SecretStr | None = None
3333
cpu_thermal_design_power: pydantic.PositiveInt | None = None
34+
cpu_n_cores: pydantic.PositiveInt | None = None
3435
gpu_thermal_design_power: pydantic.PositiveInt | None = None
3536
local_data_directory: pydantic.DirectoryPath | None = pydantic.Field(
3637
None, validate_default=True

simvue/eco/emissions_monitor.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ class CO2Monitor(pydantic.BaseModel):
4242
"""
4343

4444
thermal_design_power_per_cpu: pydantic.PositiveFloat | None
45+
n_cores_per_cpu: pydantic.PositiveInt | None
4546
thermal_design_power_per_gpu: pydantic.PositiveFloat | None
4647
local_data_directory: pydantic.DirectoryPath
4748
intensity_refresh_interval: int | None | str
@@ -87,6 +88,8 @@ def __init__(self, *args, **kwargs) -> None:
8788
----------
8889
thermal_design_power_per_cpu: float | None
8990
the TDP value for each CPU, default is 80W.
91+
n_cores_per_cpu: int | None
92+
the number of cores in each CPU, default is 4.
9093
thermal_design_power_per_gpu: float | None
9194
the TDP value for each GPU, default is 130W.
9295
local_data_directory: pydantic.DirectoryPath
@@ -111,6 +114,12 @@ def __init__(self, *args, **kwargs) -> None:
111114
"⚠️ No TDP value provided for current CPU, will use arbitrary value of 80W."
112115
)
113116

117+
if not isinstance(kwargs.get("n_cores_per_cpu"), float):
118+
kwargs["n_cores_per_cpu"] = 4
119+
_logger.warning(
120+
"⚠️ No core count provided for current CPU, will use arbitrary value of 4."
121+
)
122+
114123
if not isinstance(kwargs.get("thermal_design_power_per_gpu"), float):
115124
kwargs["thermal_design_power_per_gpu"] = 130.0
116125
_logger.warning(
@@ -244,9 +253,9 @@ def estimate_co2_emissions(
244253
_process.gpu_percentage = gpu_percent
245254
_process.cpu_percentage = cpu_percent
246255
_previous_energy: float = _process.total_energy
247-
_process.power_usage = (
248-
_process.cpu_percentage / 100.0
249-
) * self.thermal_design_power_per_cpu
256+
_process.power_usage = (_process.cpu_percentage / 100.0) * (
257+
self.thermal_design_power_per_cpu / self.n_cores_per_cpu
258+
)
250259

251260
if _process.gpu_percentage and self.thermal_design_power_per_gpu:
252261
_process.power_usage += (

0 commit comments

Comments
 (0)