Source code for spinn_front_end_common.interface.interface_functions.locate_executable_start_type

from spinn_front_end_common.abstract_models.\
    abstract_has_associated_binary import AbstractHasAssociatedBinary
from spinn_front_end_common.utilities.utility_objs.executable_start_type \
    import ExecutableStartType
from spinn_front_end_common.utilities import exceptions
from spinn_utilities.progress_bar import ProgressBar


[docs]class LocateExecutableStartType(object): def __call__(self, graph, graph_mapper=None): progress = ProgressBar( graph.n_vertices, "Finding executable_start_types") binary_start_type = None if len(graph.vertices) == 0: return ExecutableStartType.NO_APPLICATION for vertex in progress.over(graph.vertices): placement_binary_start_type = None if isinstance(vertex, AbstractHasAssociatedBinary): placement_binary_start_type = vertex.get_binary_start_type() elif graph_mapper is not None: associated_vertex = graph_mapper.get_application_vertex(vertex) if isinstance(associated_vertex, AbstractHasAssociatedBinary): placement_binary_start_type = \ associated_vertex.get_binary_start_type() if binary_start_type is None: binary_start_type = placement_binary_start_type # check all vertices have the same start type if (placement_binary_start_type is not None and binary_start_type is not None and placement_binary_start_type != binary_start_type): raise exceptions.ConfigurationException( "All binaries must be of the same start type -" " existing binaries have start type {} but " "vertex {} has start type {}".format( binary_start_type, vertex.label, placement_binary_start_type)) if binary_start_type is None: return ExecutableStartType.NO_APPLICATION return binary_start_type