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 load_application_mc_routes(self, placements, extra_monitor_cores_for_data, transceiver): """ Get the extra monitor cores to load up the application-based\ multicast routes (used by data in). :param placements: the placements object :type placements: :py:class:`~pacman.model.placements.Placements` :param extra_monitor_cores_for_data: \ the extra monitor cores to get status from :type extra_monitor_cores_for_data: \ iterable(:py:class:`ExtraMonitorSupportMachineVertex`) :param transceiver: the spinnMan interface :type transceiver: :py:class:`~spinnman.Transceiver` :rtype: None """ core_subsets = self._convert_vertices_to_core_subset( extra_monitor_cores_for_data, placements) process = LoadApplicationMCRoutesProcess( transceiver.scamp_connection_selector) try: return process.load_application_mc_routes(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 load_system_mc_routes( self, placements, extra_monitor_cores_for_data, transceiver): """ Get the extra monitor cores to load up the system-based \ multicast routes (used by data in). :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 """ core_subsets = self._convert_vertices_to_core_subset( extra_monitor_cores_for_data, placements) process = LoadSystemMCRoutesProcess( transceiver.scamp_connection_selector) try: return process.load_system_mc_routes(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 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_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(self, placements, transceiver): """ Get the reinjection status from this extra monitor vertex :param transceiver: the spinnMan interface :param placements: the placements object :return: the reinjection status for this vertex """ placement = placements.get_placement_of_vertex(self) process = ReadStatusProcess(transceiver.scamp_connection_selector) try: return process.get_reinjection_status(placement.x, placement.y, placement.p) except: # noqa: E722 emergency_recover_state_from_failure(transceiver, self._app_id, self, placement) raise
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 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 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
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