Source code for spinn_front_end_common.utilities.utility_objs.executable_targets

# Copyright (c) 2017-2019 The University of Manchester
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

from collections import defaultdict
from spinn_utilities.overrides import overrides
from spinn_utilities.ordered_set import OrderedSet
from spinnman.model import ExecutableTargets as SuperExecTargets


[docs]class ExecutableTargets(SuperExecTargets): __slots__ = ["_binary_type_map"] # pylint: disable=arguments-differ def __init__(self): super(ExecutableTargets, self).__init__() self._binary_type_map = defaultdict(OrderedSet)
[docs] @overrides(SuperExecTargets.add_subsets, extend_defaults=True, additional_arguments={"executable_type"}) def add_subsets(self, binary, subsets, executable_type=None): SuperExecTargets.add_subsets(self, binary, subsets) if executable_type is not None: self._binary_type_map[executable_type].add(binary)
[docs] @overrides(SuperExecTargets.add_processor, extend_defaults=True, additional_arguments={"executable_type"}) def add_processor(self, binary, chip_x, chip_y, chip_p, executable_type=None): SuperExecTargets.add_processor(self, binary, chip_x, chip_y, chip_p) if executable_type is not None: self._binary_type_map[executable_type].add(binary)
[docs] def get_n_cores_for_executable_type(self, executable_type): """ returns the number of cores that the executable type is using :param executable_type: the executable type for locating n cores of :return: the number of cores using this executable type """ return sum( len(self.get_cores_for_binary(aplx)) for aplx in self._binary_type_map[executable_type])
[docs] def get_binaries_of_executable_type(self, executable_type): """ get the binaries of a given a executable type :param execute_type: the executable type enum value :return: iterable of binaries with that executable type """ return self._binary_type_map[executable_type]
[docs] def executable_types_in_binary_set(self): """ get the executable types in the set of binaries :return: iterable of the executable types in this binary set. """ return self._binary_type_map.keys()