Source code for spinn_front_end_common.utility_models.chip_power_monitor_application_vertex

from pacman.executor.injection_decorator import inject_items
from pacman.model.graphs.application import ApplicationVertex

from spinn_front_end_common.abstract_models.\
    abstract_generates_data_specification import \
    AbstractGeneratesDataSpecification
from spinn_front_end_common.abstract_models.\
    abstract_has_associated_binary import \
    AbstractHasAssociatedBinary
from spinn_front_end_common.utility_models.\
    chip_power_monitor_machine_vertex import ChipPowerMonitorMachineVertex

from spinn_utilities.overrides import overrides


[docs]class ChipPowerMonitorApplicationVertex( ApplicationVertex, AbstractHasAssociatedBinary, AbstractGeneratesDataSpecification): """ class for representing idle time recording code in a application graph. """ def __init__( self, label, constraints, n_samples_per_recording, sampling_frequency): """ chip power monitor application vertex constructor :param label: vertex label :param constraints: constraints for the vertex :param n_samples_per_recording: how many samples to take before / recording to sdram the total :param sampling_frequency: how many microseconds between sampling """ ApplicationVertex.__init__(self, label, constraints, 1) self._n_samples_per_recording = n_samples_per_recording self._sampling_frequency = sampling_frequency @property @overrides(ApplicationVertex.n_atoms) def n_atoms(self): return 1
[docs] @overrides(ApplicationVertex.create_machine_vertex) def create_machine_vertex(self, vertex_slice, resources_required, label=None, constraints=None): return ChipPowerMonitorMachineVertex( constraints=constraints, label=label, n_samples_per_recording=self._n_samples_per_recording, sampling_frequency=self._sampling_frequency)
[docs] @overrides(AbstractHasAssociatedBinary.get_binary_file_name) def get_binary_file_name(self): return ChipPowerMonitorMachineVertex.binary_file_name()
[docs] @inject_items({"time_scale_factor": "TimeScaleFactor", "machine_time_step": "MachineTimeStep", "n_machine_time_steps": "TotalMachineTimeSteps", "ip_tags": "MemoryIpTags"}) @overrides( AbstractGeneratesDataSpecification.generate_data_specification, additional_arguments={ "machine_time_step", "time_scale_factor", "n_machine_time_steps", "ip_tags"}) def generate_data_specification( self, spec, placement, machine_time_step, time_scale_factor, n_machine_time_steps, ip_tags): # generate spec for the machine vertex placement.vertex._generate_data_specification( spec, machine_time_step, time_scale_factor, n_machine_time_steps, ip_tags)
[docs] @overrides(AbstractHasAssociatedBinary.get_binary_start_type) def get_binary_start_type(self): return ChipPowerMonitorMachineVertex.binary_start_type()
[docs] @overrides(ApplicationVertex.get_resources_used_by_atoms) def get_resources_used_by_atoms(self, vertex_slice): return self._get_resources_used_by_atoms(vertex_slice)
@inject_items({ "n_machine_time_steps": "TotalMachineTimeSteps", "machine_time_step": "MachineTimeStep", "time_scale_factor": "TimeScaleFactor"}) def _get_resources_used_by_atoms( self, vertex_slice, n_machine_time_steps, time_scale_factor, machine_time_step): return ChipPowerMonitorMachineVertex.get_resources( n_machine_time_steps, machine_time_step, time_scale_factor, self._n_samples_per_recording, self._sampling_frequency)