def allocate_constrained_resources(self, resources, constraints, chips=None): """ Attempts to use the given resources of the machine, constrained\ by the given placement constraints. :param resources: The resources to be allocated :type resources:\ :py:class:`pacman.model.resources.resource_container.ResourceContainer` :param constraints: An iterable of constraints containing the\ :py:class:`pacman.model.constraints.placer_constraints.placer_chip_and_core_constraint.PlacerChipAndCoreConstraint`;\ note that other types are ignored and no exception will be\ thrown :type constraints: iterable of \ :py:class:`pacman.model.constraints.abstract_constraints.abstract_constraint.AbstractConstraint` :param chips: The optional list of (x, y) tuples of chip coordinates\ of chips that can be used. Note that any chips passed in\ previously will be ignored :type chips: iterable of (int, int) :return: The x and y coordinates of the used chip, the processor_id,\ and the ip tag and reverse ip tag allocation tuples :rtype: (int, int, int, list((int, int)), list((int, int))) :raise PacmanValueError: If the constraints cannot be met given the\ current allocation of resources """ (x, y, p) = utility_calls.get_chip_and_core(constraints, chips) (board_address, ip_tags, reverse_ip_tags) = \ utility_calls.get_ip_tag_info(constraints) chips = None if x is not None and y is not None: chips = [(x, y)] return self.allocate_resources(resources, chips, p, board_address, ip_tags, reverse_ip_tags)
def get_maximum_constrained_resources_available(self, constraints, chips=None): """ Get the maximum resources available given the constraints :param constraints: the constraints to match :type: iterable of\ :py:class:`pacman.model.constraints.abstract_constraint.AbstractConstraint` :param chips: the chips to locate the max available resources of :type chips: iterable of spinnmachine.chip.Chip """ (x, y, p) = utility_calls.get_chip_and_core(constraints, chips) (board_address, ip_tags, reverse_ip_tags) = \ utility_calls.get_ip_tag_info(constraints) chips = None if x is not None and y is not None: chips = [(x, y)] return self.get_maximum_resources_available(chips, p, board_address, ip_tags, reverse_ip_tags)