def set_router_emergency_timeout( self, timeout, transceiver, placements, extra_monitor_cores_to_set): """ Sets the timeout of the routers :param tuple(int,int) timeout: The mantissa and exponent of the timeout value, each between 0 and 15 :param ~spinnman.transceiver.Transceiver transceiver: the spinnMan instance :param ~pacman.model.placements.Placements placements: vertex placements :param extra_monitor_cores_to_set: which monitors control the routers to set the timeout of :type extra_monitor_cores_to_set: iterable(ExtraMonitorSupportMachineVertex) """ mantissa, exponent = timeout core_subsets = convert_vertices_to_core_subset( extra_monitor_cores_to_set, placements) process = SetRouterEmergencyTimeoutProcess( transceiver.scamp_connection_selector) try: process.set_timeout(mantissa, exponent, core_subsets) except: # noqa: E722 emergency_recover_state_from_failure( transceiver, self._app_id, self, placements.get_placement_of_vertex(self)) raise
def set_router_emergency_timeout(self, timeout, transceiver, placements, extra_monitor_cores_to_set): """ Sets the timeout of the routers :param timeout: The mantissa and exponent of the timeout value, \ each between 0 and 15 :type timeout: (int, int) :param transceiver: the spinnMan instance :type transceiver: :py:class:`~spinnman.Transceiver` :param placements: the placements object :type placements: :py:class:`~pacman.model.placements.Placements` :param extra_monitor_cores_to_set: \ the set of vertices to change the local chip for. """ mantissa, exponent = timeout core_subsets = convert_vertices_to_core_subset( extra_monitor_cores_to_set, placements) process = SetRouterEmergencyTimeoutProcess( transceiver.scamp_connection_selector) try: process.set_timeout(mantissa, exponent, core_subsets) except: # noqa: E722 emergency_recover_state_from_failure( transceiver, self._app_id, self, placements.get_placement_of_vertex(self)) raise
def set_router_time_outs(self, timeout, transceiver, placements, extra_monitor_cores_to_set): """ Supports setting of the router time outs for a set of chips via\ their extra monitor cores. :param timeout: The mantissa and exponent of the timeout value, \ each between 0 and 15 :type timeout: (int, int) :param transceiver: the spinnman interface :type transceiver: :py:class:`~spinnman.Transceiver` :param placements: placements object :type placements: :py:class:`~pacman.model.placements.Placements` :param extra_monitor_cores_to_set: which vertices to use :rtype: None """ mantissa, exponent = timeout core_subsets = convert_vertices_to_core_subset( extra_monitor_cores_to_set, placements) process = SetRouterTimeoutProcess( transceiver.scamp_connection_selector) try: process.set_timeout(mantissa, exponent, core_subsets) except: # noqa: E722 emergency_recover_state_from_failure( transceiver, self._app_id, self, placements.get_placement_of_vertex(self)) raise
def reset_reinjection_counters(self, transceiver, placements, extra_monitor_cores_to_set): """ Resets the counters for re injection """ core_subsets = convert_vertices_to_core_subset( extra_monitor_cores_to_set, placements) process = ResetCountersProcess(transceiver.scamp_connection_selector) process.reset_counters(core_subsets)
def clear_reinjection_queue( self, transceiver, placements, extra_monitor_cores_to_set): """ Clears the queues for reinjection """ core_subsets = convert_vertices_to_core_subset( extra_monitor_cores_to_set, placements) process = ClearQueueProcess(transceiver.scamp_connection_selector) process.reset_counters(core_subsets)
def reset_reinjection_counters( self, transceiver, placements, extra_monitor_cores_to_set): """ Resets the counters for re injection """ core_subsets = convert_vertices_to_core_subset( extra_monitor_cores_to_set, placements) process = ResetCountersProcess(transceiver.scamp_connection_selector) process.reset_counters(core_subsets)
def clear_reinjection_queue(self, transceiver, placements, extra_monitor_cores_to_set): """ Clears the queues for reinjection """ core_subsets = convert_vertices_to_core_subset( extra_monitor_cores_to_set, placements) process = ClearQueueProcess(transceiver.scamp_connection_selector) process.reset_counters(core_subsets)
def set_reinjection_packets(self, placements, extra_monitor_cores_for_data, transceiver, point_to_point=None, multicast=None, nearest_neighbour=None, fixed_route=None): """ :param placements: placements object :param extra_monitor_cores_for_data: \ the extra monitor cores to set the packets of :param transceiver: spinnman instance :param point_to_point: \ If point to point should be set, or None if left as before :type point_to_point: bool or None :param multicast: \ If multicast should be set, or None if left as before :type multicast: bool or None :param nearest_neighbour: \ If nearest neighbour should be set, or None if left as before :type nearest_neighbour: bool or None :param fixed_route: \ If fixed route should be set, or None if left as before. :type fixed_route: bool or None :rtype: None """ # pylint: disable=too-many-arguments if multicast is not None: self._reinject_multicast = multicast if point_to_point is not None: self._reinject_point_to_point = point_to_point if nearest_neighbour is not None: self._reinject_nearest_neighbour = nearest_neighbour if fixed_route is not None: self._reinject_fixed_route = fixed_route core_subsets = convert_vertices_to_core_subset( extra_monitor_cores_for_data, placements) process = SetPacketTypesProcess(transceiver.scamp_connection_selector) try: process.set_packet_types(core_subsets, self._reinject_point_to_point, self._reinject_multicast, self._reinject_nearest_neighbour, self._reinject_fixed_route) except: # noqa: E722 emergency_recover_state_from_failure( transceiver, self._app_id, self, placements.get_placement_of_vertex(self)) raise
def get_reinjection_status_for_vertices( self, placements, extra_monitor_cores_for_data, transceiver): """ Get the reinjection status from a set of extra monitor cores :param placements: the placements object :param extra_monitor_cores_for_data: \ the extra monitor cores to get status from :param transceiver: the spinnMan interface :rtype: None """ core_subsets = convert_vertices_to_core_subset( extra_monitor_cores_for_data, placements) process = ReadStatusProcess(transceiver.scamp_connection_selector) return process.get_reinjection_status_for_core_subsets(core_subsets)
def get_reinjection_status_for_vertices(self, placements, extra_monitor_cores_for_data, transceiver): """ Get the reinjection status from a set of extra monitor cores :param placements: the placements object :param extra_monitor_cores_for_data: \ the extra monitor cores to get status from :param transceiver: the spinnMan interface :rtype: None """ core_subsets = convert_vertices_to_core_subset( extra_monitor_cores_for_data, placements) process = ReadStatusProcess(transceiver.scamp_connection_selector) return process.get_reinjection_status_for_core_subsets(core_subsets)
def get_reinjection_status_for_vertices( self, placements, extra_monitor_cores_for_data, transceiver): """ Get the reinjection status from a set of extra monitor cores :param ~pacman.model.placements.Placements placements: the placements object :param extra_monitor_cores_for_data: the extra monitor cores to get status from :type extra_monitor_cores_for_data: iterable(ExtraMonitorSupportMachineVertex) :param ~spinnman.transceiver.Transceiver transceiver: the spinnMan interface :rtype: dict(tuple(int,int), ReInjectionStatus) """ core_subsets = convert_vertices_to_core_subset( extra_monitor_cores_for_data, placements) process = ReadStatusProcess(transceiver.scamp_connection_selector) return process.get_reinjection_status_for_core_subsets(core_subsets)
def clear_reinjection_queue(self, transceiver, placements, extra_monitor_cores_to_set): """ Clears the queues for reinjection :type transceiver: :py:class:`~spinnman.Transceiver` :type placements: :py:class:`~pacman.model.placements.Placements` :type extra_monitor_cores_to_set: \ iterable(:py:class:`ExtraMonitorSupportMachineVertex`) """ core_subsets = convert_vertices_to_core_subset( extra_monitor_cores_to_set, placements) process = ClearQueueProcess(transceiver.scamp_connection_selector) try: process.reset_counters(core_subsets) except: # noqa: E722 emergency_recover_state_from_failure( transceiver, self._app_id, self, placements.get_placement_of_vertex(self)) raise
def set_router_time_outs(self, timeout_mantissa, timeout_exponent, transceiver, placements, extra_monitor_cores_to_set): """ Supports setting of the router time outs for a set of chips via\ their extra monitor cores. :param timeout_mantissa: what timeout mantissa to set it to :type timeout_exponent: int :type timeout_mantissa: int :param timeout_exponent: what timeout exponent to set it to :param transceiver: the spinnman interface :param placements: placements object :param extra_monitor_cores_to_set: which vertices to use :rtype: None """ # pylint: disable=too-many-arguments core_subsets = convert_vertices_to_core_subset( extra_monitor_cores_to_set, placements) process = SetRouterTimeoutProcess( transceiver.scamp_connection_selector) process.set_timeout(timeout_mantissa, timeout_exponent, core_subsets)
def set_reinjection_packets( self, placements, extra_monitor_cores_for_data, transceiver, point_to_point=None, multicast=None, nearest_neighbour=None, fixed_route=None): """ :param placements: placements object :param extra_monitor_cores_for_data: \ the extra monitor cores to set the packets of :param transceiver: spinnman instance :param point_to_point: \ If point to point should be set, or None if left as before :type point_to_point: bool or None :param multicast: \ If multicast should be set, or None if left as before :type multicast: bool or None :param nearest_neighbour: \ If nearest neighbour should be set, or None if left as before :type nearest_neighbour: bool or None :param fixed_route: \ If fixed route should be set, or None if left as before. :type fixed_route: bool or None :rtype: None """ # pylint: disable=too-many-arguments if multicast is not None: self._reinject_multicast = multicast if point_to_point is not None: self._reinject_point_to_point = point_to_point if nearest_neighbour is not None: self._reinject_nearest_neighbour = nearest_neighbour if fixed_route is not None: self._reinject_fixed_route = fixed_route core_subsets = convert_vertices_to_core_subset( extra_monitor_cores_for_data, placements) process = SetPacketTypesProcess(transceiver.scamp_connection_selector) process.set_packet_types( core_subsets, self._reinject_point_to_point, self._reinject_multicast, self._reinject_nearest_neighbour, self._reinject_fixed_route)
def unset_cores_for_data_extraction(self, transceiver, extra_monitor_cores_for_router_timeout, placements): if self._last_status is None: log.warning( "Cores have not been set for data extraction, so can't be" " unset") try: mantissa, exponent = self._last_status.router_timeout_parameters extra_monitor_cores_for_router_timeout[0].set_router_time_outs( mantissa, exponent, transceiver, placements, extra_monitor_cores_for_router_timeout) mantissa, exponent = \ self._last_status.router_emergency_timeout_parameters extra_monitor_cores_for_router_timeout[0].\ set_reinjection_router_emergency_timeout( mantissa, exponent, transceiver, placements, extra_monitor_cores_for_router_timeout) extra_monitor_cores_for_router_timeout[0].set_reinjection_packets( placements, extra_monitor_cores_for_router_timeout, transceiver, point_to_point=self._last_status.is_reinjecting_point_to_point, multicast=self._last_status.is_reinjecting_multicast, nearest_neighbour=( self._last_status.is_reinjecting_nearest_neighbour), fixed_route=self._last_status.is_reinjecting_fixed_route) except Exception: log.error("Error resetting timeouts", exc_info=True) log.error("Checking if the cores are OK...") core_subsets = convert_vertices_to_core_subset( extra_monitor_cores_for_router_timeout, placements) try: error_cores = transceiver.get_cores_not_in_state( core_subsets, {CPUState.RUNNING}) if error_cores: log.error( "Cores in an unexpected state: {}".format(error_cores)) except Exception: log.error("Couldn't get core state", exc_info=True)
def unset_cores_for_data_extraction( self, transceiver, extra_monitor_cores_for_router_timeout, placements): if self._last_status is None: log.warning( "Cores have not been set for data extraction, so can't be" " unset") try: mantissa, exponent = self._last_status.router_timeout_parameters extra_monitor_cores_for_router_timeout[0].set_router_time_outs( mantissa, exponent, transceiver, placements, extra_monitor_cores_for_router_timeout) mantissa, exponent = \ self._last_status.router_emergency_timeout_parameters extra_monitor_cores_for_router_timeout[0].\ set_reinjection_router_emergency_timeout( mantissa, exponent, transceiver, placements, extra_monitor_cores_for_router_timeout) extra_monitor_cores_for_router_timeout[0].set_reinjection_packets( placements, extra_monitor_cores_for_router_timeout, transceiver, point_to_point=self._last_status.is_reinjecting_point_to_point, multicast=self._last_status.is_reinjecting_multicast, nearest_neighbour=( self._last_status.is_reinjecting_nearest_neighbour), fixed_route=self._last_status.is_reinjecting_fixed_route) except Exception: log.error("Error resetting timeouts", exc_info=True) log.error("Checking if the cores are OK...") core_subsets = convert_vertices_to_core_subset( extra_monitor_cores_for_router_timeout, placements) try: error_cores = transceiver.get_cores_not_in_state( core_subsets, {CPUState.RUNNING}) if error_cores: log.error("Cores in an unexpected state: {}".format( error_cores)) except Exception: log.error("Couldn't get core state", exc_info=True)
def get_reinjection_status_for_vertices(self, placements, extra_monitor_cores_for_data, transceiver): """ Get the reinjection status from a set of extra monitor cores :param placements: the placements object :param extra_monitor_cores_for_data: \ the extra monitor cores to get status from :param transceiver: the spinnMan interface :rtype: None """ core_subsets = convert_vertices_to_core_subset( extra_monitor_cores_for_data, placements) process = ReadStatusProcess(transceiver.scamp_connection_selector) try: return process.get_reinjection_status_for_core_subsets( core_subsets) except: # noqa: E722 emergency_recover_state_from_failure( transceiver, self._app_id, self, placements.get_placement_of_vertex(self)) raise
def set_router_time_outs( self, timeout_mantissa, timeout_exponent, transceiver, placements, extra_monitor_cores_to_set): """ Supports setting of the router time outs for a set of chips via\ their extra monitor cores. :param timeout_mantissa: what timeout mantissa to set it to :type timeout_exponent: int :type timeout_mantissa: int :param timeout_exponent: what timeout exponent to set it to :param transceiver: the spinnman interface :param placements: placements object :param extra_monitor_cores_to_set: which vertices to use :rtype: None """ # pylint: disable=too-many-arguments core_subsets = convert_vertices_to_core_subset( extra_monitor_cores_to_set, placements) process = SetRouterTimeoutProcess( transceiver.scamp_connection_selector) process.set_timeout( timeout_mantissa, timeout_exponent, core_subsets)
def set_reinjection_router_emergency_timeout( self, timeout_mantissa, timeout_exponent, transceiver, placements, extra_monitor_cores_to_set): """ Sets the timeout of the routers :param timeout_mantissa: \ The mantissa of the timeout value, between 0 and 15 :type timeout_mantissa: int :param timeout_exponent: \ The exponent of the timeout value, between 0 and 15 :type timeout_exponent: int :param transceiver: the spinnMan instance :param placements: the placements object :param extra_monitor_cores_to_set: \ the set of vertices to change the local chip for. """ # pylint: disable=too-many-arguments core_subsets = convert_vertices_to_core_subset( extra_monitor_cores_to_set, placements) process = SetRouterEmergencyTimeoutProcess( transceiver.scamp_connection_selector) process.set_timeout( timeout_mantissa, timeout_exponent, core_subsets)
def set_reinjection_router_emergency_timeout(self, timeout_mantissa, timeout_exponent, transceiver, placements, extra_monitor_cores_to_set): """ Sets the timeout of the routers :param timeout_mantissa: \ The mantissa of the timeout value, between 0 and 15 :type timeout_mantissa: int :param timeout_exponent: \ The exponent of the timeout value, between 0 and 15 :type timeout_exponent: int :param transceiver: the spinnMan instance :param placements: the placements object :param extra_monitor_cores_to_set: \ the set of vertices to change the local chip for. """ # pylint: disable=too-many-arguments core_subsets = convert_vertices_to_core_subset( extra_monitor_cores_to_set, placements) process = SetRouterEmergencyTimeoutProcess( transceiver.scamp_connection_selector) process.set_timeout(timeout_mantissa, timeout_exponent, core_subsets)
def reset_reinjection_counters( self, transceiver, placements, extra_monitor_cores_to_set): """ Resets the counters for reinjection :param ~spinnman.transceiver.Transceiver transceiver: the spinnMan interface :param ~pacman.model.placements.Placements placements: the placements object :param extra_monitor_cores_to_set: which monitors control the routers to reset the counters of :type extra_monitor_cores_to_set: iterable(ExtraMonitorSupportMachineVertex) """ core_subsets = convert_vertices_to_core_subset( extra_monitor_cores_to_set, placements) process = ResetCountersProcess(transceiver.scamp_connection_selector) try: process.reset_counters(core_subsets) except: # noqa: E722 emergency_recover_state_from_failure( transceiver, self._app_id, self, placements.get_placement_of_vertex(self)) raise
def clear_reinjection_queue( self, transceiver, placements, extra_monitor_cores_to_set): """ Clears the queues for reinjection :param ~spinnman.transceiver.Transceiver transceiver: the spinnMan interface :param ~pacman.model.placements.Placements placements: the placements object :param extra_monitor_cores_to_set: Which extra monitors need to clear their queues. :type extra_monitor_cores_to_set: iterable(ExtraMonitorSupportMachineVertex) """ core_subsets = convert_vertices_to_core_subset( extra_monitor_cores_to_set, placements) process = ClearQueueProcess(transceiver.scamp_connection_selector) try: process.reset_counters(core_subsets) except: # noqa: E722 emergency_recover_state_from_failure( transceiver, self._app_id, self, placements.get_placement_of_vertex(self)) raise