def get_sdram_usage_for_atoms(self, vertex_slice, graph): send_buffer_size = 0 if self._send_buffer_times is not None: send_buffer_size = self._send_buffer_max_space recording_size = (ReverseIPTagMulticastSourcePartitionedVertex. get_recording_data_size(1)) if self._recording_enabled: if self._using_auto_pause_and_resume: recording_size += self._minimum_sdram_for_buffering else: recording_size += self._record_buffer_size recording_size += (ReverseIPTagMulticastSourcePartitionedVertex .get_buffer_state_region_size(1)) mallocs = \ ReverseIPTagMulticastSourcePartitionedVertex.n_regions_to_allocate( self._send_buffer_times is not None, self._recording_enabled) allocation_size = mallocs * constants.SARK_PER_MALLOC_SDRAM_USAGE return ((constants.DATA_SPECABLE_BASIC_SETUP_INFO_N_WORDS * 4) + (ReverseIPTagMulticastSourcePartitionedVertex. _CONFIGURATION_REGION_SIZE) + send_buffer_size + recording_size + allocation_size + (ReverseIPTagMulticastSourcePartitionedVertex. get_provenance_data_size(0)))
def get_sdram_usage_for_atoms(self, vertex_slice, graph): send_buffer_size = 0 if self._send_buffer_times is not None: send_buffer_size = self._send_buffer_max_space recording_size = ReverseIPTagMulticastSourcePartitionedVertex.get_recording_data_size(1) if self._record_buffer_size > 0: recording_size += self._record_buffer_size recording_size += ReverseIPTagMulticastSourcePartitionedVertex.get_buffer_state_region_size(1) mallocs = ReverseIPTagMulticastSourcePartitionedVertex.n_regions_to_allocate( self._send_buffer_times is not None, self._recording_enabled ) allocation_size = mallocs * constants.SARK_PER_MALLOC_SDRAM_USAGE return ( (constants.DATA_SPECABLE_BASIC_SETUP_INFO_N_WORDS * 4) + (ReverseIPTagMulticastSourcePartitionedVertex._CONFIGURATION_REGION_SIZE) + send_buffer_size + recording_size + allocation_size )
def create_subvertex(self, vertex_slice, resources_required, label=None, constraints=None): send_buffer_times = self._send_buffer_times if (self._send_buffer_times is not None and len(self._send_buffer_times) > 0): if hasattr(self._send_buffer_times[0], "__len__"): send_buffer_times = self._send_buffer_times[ vertex_slice.lo_atom:vertex_slice.hi_atom + 1] subvertex = ReverseIPTagMulticastSourcePartitionedVertex( n_keys=vertex_slice.n_atoms, resources_required=resources_required, machine_time_step=self._machine_time_step, timescale_factor=self._timescale_factor, label=label, constraints=constraints, board_address=self._board_address, receive_port=self._receive_port, receive_sdp_port=self._receive_sdp_port, receive_tag=self._receive_tag, virtual_key=self._virtual_key, prefix=self._prefix, prefix_type=self._prefix_type, check_keys=self._check_keys, send_buffer_times=send_buffer_times, send_buffer_max_space=self._send_buffer_max_space, send_buffer_space_before_notify=( self._send_buffer_space_before_notify), send_buffer_notification_ip_address=( self._send_buffer_notification_ip_address), send_buffer_notification_port=self._send_buffer_notification_port, send_buffer_notification_tag=self._send_buffer_notification_tag) subvertex.set_no_machine_time_steps(self._no_machine_time_steps) subvertex.first_machine_time_step = self._first_machine_time_step if self._record_buffer_size > 0: sdram_per_ts = 0 if self._using_auto_pause_and_resume: # Currently not known how much SDRAM might be used per # timestep by this object, so we assume a minimum value here sdram_per_ts = 8 subvertex.enable_recording( self._record_buffering_ip_address, self._record_buffering_port, self._record_buffering_board_address, self._record_buffering_tag, self._record_buffer_size, self._record_buffer_size_before_receive, self._minimum_sdram_for_buffering, sdram_per_ts) self._subvertices.append((vertex_slice, subvertex)) return subvertex
def create_subvertex(self, vertex_slice, resources_required, label=None, constraints=None): send_buffer_times = self._send_buffer_times if self._send_buffer_times is not None and len(self._send_buffer_times) > 0: if hasattr(self._send_buffer_times[0], "__len__"): send_buffer_times = self._send_buffer_times[vertex_slice.lo_atom : vertex_slice.hi_atom + 1] subvertex = ReverseIPTagMulticastSourcePartitionedVertex( n_keys=self.n_atoms, resources_required=resources_required, machine_time_step=self._machine_time_step, timescale_factor=self._timescale_factor, label=label, constraints=constraints, board_address=self._board_address, receive_port=self._receive_port, receive_sdp_port=self._receive_sdp_port, receive_tag=self._receive_tag, virtual_key=self._virtual_key, prefix=self._prefix, prefix_type=self._prefix_type, check_keys=self._check_keys, send_buffer_times=send_buffer_times, send_buffer_max_space=self._send_buffer_max_space, send_buffer_space_before_notify=(self._send_buffer_space_before_notify), send_buffer_notification_ip_address=(self._send_buffer_notification_ip_address), send_buffer_notification_port=self._send_buffer_notification_port, send_buffer_notification_tag=self._send_buffer_notification_tag, ) subvertex.set_no_machine_time_steps(self._no_machine_time_steps) subvertex.first_machine_time_step = self._first_machine_time_step if self._record_buffer_size > 0: subvertex.enable_recording( self._record_buffering_ip_address, self._record_buffering_port, self._record_buffering_board_address, self._record_buffering_tag, self._record_buffer_size, self._record_buffer_size_before_receive, ) self._subvertices.append((vertex_slice, subvertex)) return subvertex