Skip to content

Commit

Permalink
Merge branch 'master' into dependabot/github_actions/JamesIves/github…
Browse files Browse the repository at this point in the history
…-pages-deploy-action-4.6.0
  • Loading branch information
Christian-B committed May 2, 2024
2 parents a638f5c + 6a3c2ab commit bb5e8c0
Show file tree
Hide file tree
Showing 3 changed files with 0 additions and 201 deletions.
69 changes: 0 additions & 69 deletions spinn_front_end_common/data/fec_data_view.py
Original file line number Diff line number Diff line change
Expand Up @@ -94,9 +94,6 @@ class _FecDataModel(object):
"_live_packet_recorder_params",
"_live_output_vertices",
"_live_output_devices",
"_n_boards_required",
"_n_chips_required",
"_n_chips_in_graph",
"_next_sync_signal",
"_next_ds_reference",
"_none_labelled_edge_count",
Expand Down Expand Up @@ -142,8 +139,6 @@ def _clear(self) -> None:
self._live_output_vertices: Set[Tuple[ApplicationVertex, str]] = set()
self._live_output_devices: List[LiveOutputDevice] = list()
self._java_caller: Optional[JavaCaller] = None
self._n_boards_required: Optional[int] = None
self._n_chips_required: Optional[int] = None
self._none_labelled_edge_count = 0
self._reset_number = 0
self._run_number: Optional[int] = None
Expand Down Expand Up @@ -174,7 +169,6 @@ def _hard_reset(self) -> None:
self._gatherer_map: \
Optional[Dict[Chip, DataSpeedUpPacketGatherMachineVertex]] = None
self._ipaddress: Optional[str] = None
self._n_chips_in_graph: Optional[int] = None
self._next_sync_signal: Signal = Signal.SYNC0
self._notification_protocol: Optional[NotificationProtocol] = None
self._max_run_time_steps: Optional[int] = None
Expand Down Expand Up @@ -582,69 +576,6 @@ def get_run_step(cls) -> Optional[int]:

# n_boards/chips required

@classmethod
def has_n_boards_required(cls) -> bool:
"""
Reports if a user has sets the number of boards requested during setup.
:rtype: bool
:raises ~spinn_utilities.exceptions.SpiNNUtilsException:
If n_boards_required is not set or set to `None`
"""
return cls.__fec_data._n_boards_required is not None

@classmethod
def get_n_boards_required(cls) -> int:
"""
Gets the number of boards requested by the user during setup if known.
Guaranteed to be positive
:rtype: int
:raises ~spinn_utilities.exceptions.SpiNNUtilsException:
If the n_boards_required is currently unavailable
"""
if cls.__fec_data._n_boards_required is None:
raise cls._exception("n_boards_requiredr")
return cls.__fec_data._n_boards_required

@classmethod
def get_n_chips_needed(cls) -> int:
"""
Gets the number of chips needed, if set.
This will be the number of chips requested by the user during setup,
even if this is less that what the partitioner reported.
If the partitioner has run and the user has not specified a number,
this will be what the partitioner requested.
Guaranteed to be positive if set
:rtype: int
:raises ~spinn_utilities.exceptions.SpiNNUtilsException:
If data for n_chips_needed is not available
"""
if cls.__fec_data._n_chips_required:
return cls.__fec_data._n_chips_required
if cls.__fec_data._n_chips_in_graph:
return cls.__fec_data._n_chips_in_graph
raise cls._exception("n_chips_required")

@classmethod
def has_n_chips_needed(cls) -> bool:
"""
Detects if the number of chips needed has been set.
This will be the number of chips requested by the use during setup or
what the partitioner requested.
:rtype: bool
"""
if cls.__fec_data._n_chips_required is not None:
return True
return cls.__fec_data._n_chips_in_graph is not None

@classmethod
def get_timestamp_dir_path(cls) -> str:
"""
Expand Down
53 changes: 0 additions & 53 deletions spinn_front_end_common/data/fec_data_writer.py
Original file line number Diff line number Diff line change
Expand Up @@ -370,59 +370,6 @@ def set_system_multicast_routing_data(
self.__fec_data._data_in_multicast_routing_tables = routing_tables
self.__fec_data._system_multicast_router_timeout_keys = timeout_keys

def set_n_required(self, n_boards_required: Optional[int],
n_chips_required: Optional[int]):
"""
Sets (if not `None`) the number of boards/chips requested by the user.
:param n_boards_required:
`None` or the number of boards requested by the user
:type n_boards_required: int or None
:param n_chips_required:
`None` or the number of chips requested by the user
:type n_chips_required: int or None
"""
if n_boards_required is None:
if n_chips_required is None:
return
elif not isinstance(n_chips_required, int):
raise TypeError("n_chips_required must be an int (or None)")
if n_chips_required <= 0:
raise ConfigurationException(
"n_chips_required must be positive and not "
f"{n_chips_required}")
else:
if n_chips_required is not None:
raise ConfigurationException(
"Illegal call with both both param provided as "
f"{n_boards_required}, {n_chips_required}")
if not isinstance(n_boards_required, int):
raise TypeError("n_boards_required must be an int (or None)")
if n_boards_required <= 0:
raise ConfigurationException(
"n_boards_required must be positive and not "
f"{n_boards_required}")
if self.__fec_data._n_boards_required is not None or \
self.__fec_data._n_chips_required is not None:
raise ConfigurationException(
"Illegal second call to set_n_required")
self.__fec_data._n_boards_required = n_boards_required
self.__fec_data._n_chips_required = n_chips_required

def set_n_chips_in_graph(self, n_chips_in_graph: int):
"""
Sets the number of chips needed by the graph.
:param int n_chips_in_graph:
"""
if not isinstance(n_chips_in_graph, int):
raise TypeError("n_chips_in_graph must be an int (or None)")
if n_chips_in_graph <= 0:
raise ConfigurationException(
"n_chips_in_graph must be positive and not "
f"{n_chips_in_graph}")
self.__fec_data._n_chips_in_graph = n_chips_in_graph

def set_ipaddress(self, ip_address: str):
"""
:param str ip_address:
Expand Down
79 changes: 0 additions & 79 deletions unittests/data/test_simulator_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -377,85 +377,6 @@ def test_system_multicast_routing_data(self):
with self.assertRaises(DataNotYetAvialable):
FecDataView.get_system_multicast_router_timeout_keys()

def test_required(self):
writer = FecDataWriter.setup()
with self.assertRaises(DataNotYetAvialable):
self.assertIsNone(FecDataView.get_n_boards_required())
self.assertFalse(FecDataView.has_n_boards_required())
with self.assertRaises(DataNotYetAvialable):
self.assertIsNone(FecDataView.get_n_chips_needed())
self.assertFalse(FecDataView.has_n_chips_needed())

# required higher than in graph
writer.set_n_required(None, 20)
self.assertFalse(FecDataView.has_n_boards_required())
self.assertEqual(20, FecDataView.get_n_chips_needed())
writer.set_n_chips_in_graph(15)
self.assertFalse(FecDataView.has_n_boards_required())
self.assertEqual(20, FecDataView.get_n_chips_needed())

# required higher than in graph
writer.set_n_chips_in_graph(25)
self.assertFalse(FecDataView.has_n_boards_required())
self.assertEqual(20, FecDataView.get_n_chips_needed())

# reset does not remove required
writer.start_run()
writer.finish_run()
writer.hard_reset()
self.assertFalse(FecDataView.has_n_boards_required())
self.assertEqual(20, FecDataView.get_n_chips_needed())

writer = FecDataWriter.setup()
self.assertFalse(FecDataView.has_n_boards_required())
self.assertFalse(FecDataView.has_n_chips_needed())

# in graph only
writer.set_n_chips_in_graph(25)
self.assertEqual(25, FecDataView.get_n_chips_needed())

# reset clears in graph
writer.start_run()
writer.finish_run()
writer.hard_reset()
self.assertFalse(FecDataView.has_n_chips_needed())

# N boards
writer = FecDataWriter.setup()
writer.set_n_required(5, None)
self.assertEqual(5, FecDataView.get_n_boards_required())
self.assertFalse(FecDataView.has_n_chips_needed())

# boards does not hide in graph
writer.set_n_chips_in_graph(40)
self.assertEqual(5, FecDataView.get_n_boards_required())
self.assertEqual(40, FecDataView.get_n_chips_needed())

# reset does not clear required
writer.start_run()
writer.finish_run()
writer.hard_reset()
self.assertEqual(5, FecDataView.get_n_boards_required())
self.assertFalse(FecDataView.has_n_chips_needed())

# two Nones fine
writer = FecDataWriter.setup()
writer.set_n_required(None, None)
self.assertFalse(FecDataView.has_n_boards_required())
self.assertFalse(FecDataView.has_n_chips_needed())

# Ilegal calls
with self.assertRaises(ConfigurationException):
writer.set_n_required(5, 5)
with self.assertRaises(ConfigurationException):
writer.set_n_required(None, -5)
with self.assertRaises(ConfigurationException):
writer.set_n_required(0, None)
with self.assertRaises(TypeError):
writer.set_n_required(None, "five")
with self.assertRaises(TypeError):
writer.set_n_required("2.3", None)

def test_ipaddress(self):
writer = FecDataWriter.setup()
self.assertFalse(FecDataView.has_ipaddress())
Expand Down

0 comments on commit bb5e8c0

Please sign in to comment.