Source code for spinn_front_end_common.interface.interface_functions.buffer_extractor

from spinn_front_end_common.utilities.exceptions import ConfigurationException
from spinn_front_end_common.interface.buffer_management.buffer_models \
    import AbstractReceiveBuffersToHost
from spinn_utilities.progress_bar import ProgressBar


[docs]class BufferExtractor(object): """ Extracts data in between runs """ __slots__ = [] def __call__(self, machine_graph, placements, buffer_manager, ran_token): if not ran_token: raise ConfigurationException("The ran token has not been set") # Count the regions to be read n_regions_to_read = 0 vertices = list() for vertex in machine_graph.vertices: if isinstance(vertex, AbstractReceiveBuffersToHost): n_regions_to_read += len(vertex.get_recorded_region_ids()) vertices.append(vertex) progress = ProgressBar( n_regions_to_read, "Extracting buffers from the last run") # Read back the regions for vertex in vertices: placement = placements.get_placement_of_vertex(vertex) for recording_region_id in vertex.get_recorded_region_ids(): buffer_manager.get_data_for_vertex( placement, recording_region_id) progress.update() progress.end()