diff --git a/spinn_machine/version/version_3.py b/spinn_machine/version/version_3.py index b8dc36e4..3c5c83a2 100644 --- a/spinn_machine/version/version_3.py +++ b/spinn_machine/version/version_3.py @@ -102,9 +102,10 @@ def get_idle_energy( raise SpinnMachineException( "A version 3 SpiNNaker 1 board has exactly one board!") - # We allow n_boards to be 0 to discount the cost of the board, - # so we multiply by n_boards in case it is 0! - return n_boards * self.WATTS_FOR_4_CHIP_BOARD_IDLE_COST * time_s + # We allow n_boards to be 0 to discount the cost of the board + if n_boards == 0: + return n_chips * self.WATTS_PER_IDLE_CHIP * time_s + return self.WATTS_FOR_4_CHIP_BOARD_IDLE_COST * time_s @overrides(VersionSpin1.get_active_energy) def get_active_energy( diff --git a/spinn_machine/version/version_5.py b/spinn_machine/version/version_5.py index 92dc2b29..94da5303 100644 --- a/spinn_machine/version/version_5.py +++ b/spinn_machine/version/version_5.py @@ -112,8 +112,11 @@ def get_idle_energy( self, time_s: float, n_frames: int, n_boards: int, n_chips: int) -> float: - # The board idle energy - energy = n_boards * self.WATTS_FOR_48_CHIP_BOARD_IDLE_COST * time_s + # We allow n_boards to be 0 to discount the cost of the board + if n_boards == 0: + energy = n_chips * self.WATTS_PER_IDLE_CHIP * time_s + else: + energy = n_boards * self.WATTS_FOR_48_CHIP_BOARD_IDLE_COST * time_s # The container of the boards idle energy if n_frames != 0: diff --git a/spinn_machine/version/version_spin1.py b/spinn_machine/version/version_spin1.py index 6cc1d362..53566bac 100644 --- a/spinn_machine/version/version_spin1.py +++ b/spinn_machine/version/version_spin1.py @@ -28,6 +28,11 @@ class VersionSpin1(AbstractVersion, metaclass=AbstractBase): Shared code for all Spin1 board versions """ + #: From Optimising the overall power usage on the SpiNNaker neuromimetic + #: platform - all chips on a 48-chip board together use 5.23 + 5.17 + 5.52W + #: + SDRAM of 0.90W = 16.82W when idle, so each chip use 0.35W + WATTS_PER_IDLE_CHIP: Final = 0.35 + #: From measuring the power of all 48 chips on a boxed board with all cores #: idle for 1 hour and 806 cores active for 1 hour we get 31.88W idle and #: 59.38W active, so 27.50W active overhead, which is 0.034W per core