Skip to content

Commit

Permalink
Update numbers after measuring
Browse files Browse the repository at this point in the history
  • Loading branch information
rowleya committed Nov 8, 2024
1 parent 40262e3 commit 74cf6db
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 20 deletions.
8 changes: 7 additions & 1 deletion spinn_machine/version/version_3.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,10 @@ class Version3(VersionSpin1):
"""
__slots__ = ()

#: From measuring the power of an idle 4-chip board for 1 hour, the cost
#: is 3.56W
WATTS_FOR_4_CHIP_BOARD_IDLE_COST: Final = 3.56

@property
@overrides(VersionSpin1.name)
def name(self) -> str:
Expand Down Expand Up @@ -98,7 +102,9 @@ def get_idle_energy(
raise SpinnMachineException(
"A version 3 SpiNNaker 1 board has exactly one board!")

return n_chips * self.WATTS_PER_IDLE_CHIP * time_s
# 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

@overrides(VersionSpin1.get_active_energy)
def get_active_energy(
Expand Down
21 changes: 11 additions & 10 deletions spinn_machine/version/version_5.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,14 +52,16 @@ class Version5(VersionSpin1, Version48Chips):
WATTS_PER_FRAME_ACTIVE_COST_OVERHEAD: Final = 154.163558 - 117

# pylint: disable=invalid-name
#: measured from the real power meter and timing between the photos
#: for a day with just the cooling fans of the boxed board.
WATTS_FOR_48_CHIP_BOX_COST_OVERHEAD: Final = 4.5833333
#: from Optimising the overall power usage on the SpiNNaker neuromimetic
#: platform, an idle board uses 26.84W and from measurement of a boxed
#: board with all cores idle for 1 hour including the power supply and all
#: parts, uses 31.88W, so the overhead is 5.04W
WATTS_FOR_48_CHIP_BOX_COST_OVERHEAD: Final = 5.04

# pylint: disable=invalid-name
#: measured from the real power meter and timing between the photos
#: for a day powered off
WATTS_FOR_48_CHIP_BOARD_IDLE_COST: Final = 4.5833333
#: from Optimising the overall power usage on the SpiNNaker neuromimetic
#: platform, an idle board uses 26.84W
WATTS_FOR_48_CHIP_BOARD_IDLE_COST: Final = 26.84

@property
@overrides(VersionSpin1.name)
Expand Down Expand Up @@ -109,8 +111,9 @@ def fpga_links(self) -> List[Tuple[int, int, int, int, int]]:
def get_idle_energy(
self, time_s: float, n_frames: int, n_boards: int,
n_chips: int) -> float:
# Chips idle energy
energy = n_chips * self.WATTS_PER_IDLE_CHIP * time_s

# The board idle energy
energy = n_boards * self.WATTS_FOR_48_CHIP_BOARD_IDLE_COST * time_s

# The container of the boards idle energy
if n_frames != 0:
Expand All @@ -121,8 +124,6 @@ def get_idle_energy(
n_frames * self.WATTS_FOR_48_CHIP_BOX_COST_OVERHEAD *
time_s)

# The FPGAs + board idle energy, excluding the chips
energy += n_boards * self.WATTS_FOR_48_CHIP_BOARD_IDLE_COST * time_s
return energy

@overrides(VersionSpin1.get_active_energy)
Expand Down
13 changes: 4 additions & 9 deletions spinn_machine/version/version_spin1.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,10 @@ class VersionSpin1(AbstractVersion, metaclass=AbstractBase):
Shared code for all Spin1 board versions
"""

#: stated in papers (SpiNNaker: A 1-W 18 core system-on-Chip for
#: Massively-Parallel Neural Network Simulation)
#: (includes Idle chip @ 360mW, SDRAM @ 170mW and idle cores @ 20mW each)
WATTS_PER_IDLE_CHIP: Final = 0.360 + 0.170 + (0.02 * 18)

#: stated in papers (SpiNNaker: A 1-W 18 core system-on-Chip for
#: Massively-Parallel Neural Network Simulation)
#: = (1000mW - WATTS_PER_IDLE_CHIP - (6.3mW for each link)) / 18 ~= 4mW
WATTS_PER_CORE_ACTIVE_OVERHEAD: Final = 0.004
#: 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.37W active, so 27.49W active overhead, which is 0.034W per core
WATTS_PER_CORE_ACTIVE_OVERHEAD: Final = 0.034

#: stated in papers (SpiNNaker: A 1-W 18 core system-on-Chip for
#: Massively-Parallel Neural Network Simulation)
Expand Down

0 comments on commit 74cf6db

Please sign in to comment.