Source code for spinn_front_end_common.interface.interface_functions.pre_allocate_resources_for_live_packet_gatherers

# spinn front end common imports
from pacman.model.resources import CoreResource
from pacman.model.resources import PreAllocatedResourceContainer
from pacman.model.resources import SpecificChipSDRAMResource
from spinn_front_end_common.utility_models.live_packet_gather_machine_vertex \
    import LivePacketGatherMachineVertex as LPGVertex
from spinn_utilities.progress_bar import ProgressBar


[docs]class PreAllocateResourcesForLivePacketGatherers(object): """ Adds Live Packet Gatherer resources as required for a machine """ def __call__( self, live_packet_gatherer_parameters, machine, pre_allocated_resources=None): """ :param live_packet_gatherer_parameters:\ the LPG parameters requested by the script :param previous_allocated_resources: other pre-allocated resources :param machine: the spinnaker machine as discovered :return: pre allocated resources """ progress = ProgressBar( len(machine.ethernet_connected_chips), "Preallocating resources for Live Recording") # store how much SDRAM the LPG uses per core lpg_sdram_requirement = LPGVertex.get_sdram_usage() # for every Ethernet connected chip, get the resources needed by the # live packet gatherers sdrams = list() cores = list() for chip in progress.over(machine.ethernet_connected_chips): self._add_chip_lpg_reqs(live_packet_gatherer_parameters, chip, lpg_sdram_requirement, sdrams, cores) # create pre allocated resource container lpg_prealloc_resource_container = PreAllocatedResourceContainer( specific_sdram_usage=sdrams, core_resources=cores) # add other pre allocated resources if pre_allocated_resources is not None: lpg_prealloc_resource_container.extend(pre_allocated_resources) # return pre allocated resources return lpg_prealloc_resource_container @staticmethod def _add_chip_lpg_reqs(lpg_parameters, chip, lpg_sdram, sdrams, cores): sdram_reqs = 0 core_reqs = 0 for lpg_params in lpg_parameters: if (lpg_params.board_address is None or lpg_params.board_address == chip.ip_address): sdram_reqs += lpg_sdram core_reqs += 1 if sdram_reqs > 0: sdrams.append(SpecificChipSDRAMResource(chip, sdram_reqs)) if core_reqs > 0: cores.append(CoreResource(chip, core_reqs))