Source code for spinn_front_end_common.interface.interface_functions.pre_allocate_resources_for_chip_power_monitor

# spinn front end common imports
from pacman.model.resources.core_resource import CoreResource
from pacman.model.resources.pre_allocated_resource_container import \
    PreAllocatedResourceContainer
from pacman.model.resources.specific_chip_sdram_resource import \
    SpecificChipSDRAMResource

# spinn front end common imports
from spinn_front_end_common.utility_models.\
    chip_power_monitor_machine_vertex import \
    ChipPowerMonitorMachineVertex

# utils
from spinn_utilities.progress_bar import ProgressBar


[docs]class PreAllocateResourcesForChipPowerMonitor(object): """ Adds chip power monitor resources as required for a machine """ def __call__( self, machine, n_machine_time_steps, n_samples_per_recording, sampling_frequency, time_scale_factor, machine_time_step, pre_allocated_resources=None): """ :param pre_allocated_resources: other pre-allocated resources :param machine: the spinnaker machine as discovered :param n_machine_time_steps: the number of machine\ time steps used by the simulation during this phase :param n_samples_per_recording: how many samples between record entries :param sampling_frequency: the frequency of sampling :param time_scale_factor: the time scale factor :param machine_time_step: the machine time step :return: pre allocated resources """ progress_bar = ProgressBar( len(list(machine.chips)), "Preallocating resources for chip power monitor") # store how much SDRAM the LPG uses per core resources = ChipPowerMonitorMachineVertex.get_resources( n_machine_time_steps=n_machine_time_steps, n_samples_per_recording=n_samples_per_recording, sampling_frequency=sampling_frequency, time_scale_factor=time_scale_factor, time_step=machine_time_step) # for every Ethernet connected chip, get the resources needed by the # live packet gatherers sdrams = list() cores = list() for chip in progress_bar.over(machine.chips): sdrams.append( SpecificChipSDRAMResource(chip, resources.sdram.get_value())) cores.append(CoreResource(chip, 1)) # create pre allocated resource container cpm_pre_allocated_resource_container = PreAllocatedResourceContainer( specific_sdram_usage=sdrams, core_resources=cores) # add other pre allocated resources if pre_allocated_resources is not None: cpm_pre_allocated_resource_container.extend( pre_allocated_resources) # return pre allocated resources return cpm_pre_allocated_resource_container