- Notifications
You must be signed in to change notification settings - Fork 106
Open
Description
I am trying out this code (https://github.com/NeuromorphicProcessorProject/snn_toolbox/blob/master/examples/mnist_keras_spiNNaker.py), and after running the main function it is giving me the following error. I am using pypi version of SNNtoolbox. I have also provided my config file below.
Can anyone please help me on this ?
The whole output after calling out the main function:
SpinnmanIOException Traceback (most recent call last) Input In [5], in <cell line: 67>() 62 config.write(configfile) 64 # RUN SNN TOOLBOX # 65 ################### ---> 67 main(config_filepath) File ~/.local/lib/python3.8/site-packages/snntoolbox/bin/run.py:31, in main(filepath) 29 if filepath is not None: 30 config = update_setup(filepath) ---> 31 run_pipeline(config) 32 return 34 parser = argparse.ArgumentParser( 35 description='Run SNN toolbox to convert an analog neural network into ' 36 'a spiking neural network, and optionally simulate it.') File ~/.local/lib/python3.8/site-packages/snntoolbox/bin/utils.py:145, in run_pipeline(config, queue) 142 return snn.run(**test_set) 144 # Simulate network --> 145 results = run(spiking_model, **testset) 147 # Clean up 148 spiking_model.end_sim() File ~/.local/lib/python3.8/site-packages/snntoolbox/bin/utils.py:220, in run_parameter_sweep.<locals>.decorator.<locals>.wrapper(snn, **testset) 216 if len(param_values) > 1: 217 print("\nCurrent value of parameter to sweep: " + 218 "{} = {:.2f}\n".format(param_name, p)) --> 220 results.append(run_single(snn, **testset)) 222 # Plot and return results of parameter sweep. 223 try: File ~/.local/lib/python3.8/site-packages/snntoolbox/bin/utils.py:142, in run_pipeline.<locals>.run(snn, **test_set) 140 @run_parameter_sweep(config, queue) 141 def run(snn, **test_set): --> 142 return snn.run(**test_set) File ~/.local/lib/python3.8/site-packages/snntoolbox/simulation/utils.py:606, in AbstractSNN.run(self, x_test, y_test, dataflow, **kwargs) 603 # Main step: Run the network on a batch of samples for the duration 604 # of the simulation. 605 print("\nStarting new simulation...\n") --> 606 output_b_l_t = self.simulate(**data_batch_kwargs) 608 # Halt if model is to be serialised only. 609 if self.config.getboolean('tools', 'serialise_only'): File ~/.local/lib/python3.8/site-packages/snntoolbox/simulation/target_simulators/spiNNaker_target_sim.py:381, in SNN.simulate(self, **kwargs) 379 if self.config.getboolean('tools', 'serialise_only'): 380 sys.exit('finished after serialisation') --> 381 self.sim.run(self._duration) 382 print("\nCollecting results...") 383 output_b_l_t = self.get_recorded_vars(self.layers) File ~/.local/lib/python3.8/site-packages/spynnaker8/__init__.py:703, in run(simtime, callbacks) 701 if not globals_variables.has_simulator(): 702 raise ConfigurationException(FAILED_STATE_MSG) --> 703 return __pynn["run"](simtime, callbacks=callbacks) File ~/.local/lib/python3.8/site-packages/pyNN/common/control.py:111, in build_run.<locals>.run(simtime, callbacks) 96 def run(simtime, callbacks=None): 97 """ 98 Advance the simulation by `simtime` ms. 99 (...) 109 the initial conditions (time ``t = 0``), use the ``reset()`` function. 110 """ --> 111 return run_until(simulator.state.t + simtime, callbacks) File ~/.local/lib/python3.8/site-packages/pyNN/common/control.py:93, in build_run.<locals>.run_until(time_point, callbacks) 90 callback_events.extend((callback(simulator.state.t), callback) 91 for callback in active_callbacks) 92 else: ---> 93 simulator.state.run_until(time_point) 94 return simulator.state.t File ~/.local/lib/python3.8/site-packages/spynnaker8/spinnaker.py:119, in SpiNNaker.run_until(self, tstop) 114 """ Run the simulation until the given simulation time. 115 116 :param tstop: when to run until in milliseconds 117 """ 118 # Build data --> 119 self._run_wait(tstop - self.t) File ~/.local/lib/python3.8/site-packages/spynnaker8/spinnaker.py:150, in SpiNNaker._run_wait(self, duration_ms, sync_time) 143 def _run_wait(self, duration_ms, sync_time=0.0): 144 """ Run the simulation for a length of simulation time. 145 146 :param duration_ms: The run duration, in milliseconds 147 :type duration_ms: int or float 148 """ --> 150 super(SpiNNaker, self).run(duration_ms, sync_time) File ~/.local/lib/python3.8/site-packages/spynnaker/pyNN/abstract_spinnaker_common.py:380, in AbstractSpiNNakerCommon.run(self, run_time, sync_time) 371 if (self.config.getboolean("Reports", "reports_enabled") and 372 self.config.getboolean( 373 "Reports", "write_redundant_packet_count_report") and 374 not self._use_virtual_board and run_time is not None and 375 not self._has_ran and self._config.getboolean( 376 "Reports", "writeProvenanceData")): 377 self.extend_extra_post_run_algorithms( 378 ["RedundantPacketCountReport"]) --> 380 super().run(run_time, sync_time) 381 for projection in self._projections: 382 projection._clear_cache() File ~/.local/lib/python3.8/site-packages/spinn_front_end_common/interface/abstract_spinnaker_base.py:780, in AbstractSpinnakerBase.run(self, run_time, sync_time) 778 @overrides(SimulatorInterface.run) 779 def run(self, run_time, sync_time=0): --> 780 self._run(run_time, sync_time) File ~/.local/lib/python3.8/site-packages/spinn_front_end_common/interface/abstract_spinnaker_base.py:932, in AbstractSpinnakerBase._run(self, run_time, sync_time) 929 self._max_run_time_steps = None 931 if self._machine is None: --> 932 self._get_machine(total_run_time, n_machine_time_steps) 933 self._do_mapping(run_time, total_run_time) 935 # Check if anything has per-timestep SDRAM usage File ~/.local/lib/python3.8/site-packages/spinn_front_end_common/interface/abstract_spinnaker_base.py:1211, in AbstractSpinnakerBase._get_machine(self, total_run_time, n_machine_time_steps) 1208 # If we are using a directly connected machine, add the details to get 1209 # the machine and transceiver 1210 if self._hostname is not None: -> 1211 self._machine_by_hostname(n_machine_time_steps, total_run_time) 1213 elif self._use_virtual_board: 1214 self._machine_by_virtual(n_machine_time_steps, total_run_time) File ~/.local/lib/python3.8/site-packages/spinn_front_end_common/interface/abstract_spinnaker_base.py:1267, in AbstractSpinnakerBase._machine_by_hostname(self, n_machine_time_steps, total_run_time) 1264 outputs.append("MemoryMachine") 1265 outputs.append("MemoryTransceiver") -> 1267 executor = self._run_algorithms( 1268 inputs, algorithms, outputs, [], [], "machine_generation") 1269 self._machine = executor.get_item("MemoryMachine") 1270 self._txrx = executor.get_item("MemoryTransceiver") File ~/.local/lib/python3.8/site-packages/spinn_front_end_common/interface/abstract_spinnaker_base.py:1195, in AbstractSpinnakerBase._run_algorithms(self, inputs, algorithms, outputs, tokens, required_tokens, provenance_name, optional_algorithms) 1192 except Exception as e3: 1193 logger.warning("problem when shutting down {}".format(e3), 1194 exc_info=True) -> 1195 raise e File ~/.local/lib/python3.8/site-packages/spinn_front_end_common/interface/abstract_spinnaker_base.py:1175, in AbstractSpinnakerBase._run_algorithms(self, inputs, algorithms, outputs, tokens, required_tokens, provenance_name, optional_algorithms) 1165 executor = PACMANAlgorithmExecutor( 1166 algorithms=algorithms, optional_algorithms=optional, 1167 inputs=inputs, tokens=tokens, (...) 1171 provenance_name=provenance_name, 1172 provenance_path=self._pacman_executor_provenance_path) 1174 try: -> 1175 executor.execute_mapping() 1176 self._pacman_provenance.extract_provenance(executor) 1177 return executor File ~/.local/lib/python3.8/site-packages/pacman/executor/pacman_algorithm_executor.py:666, in PACMANAlgorithmExecutor.execute_mapping(self) 664 if self._do_direct_injection: 665 with injection_context(self._internal_type_mapping): --> 666 self.__execute_mapping() 667 else: 668 self.__execute_mapping() File ~/.local/lib/python3.8/site-packages/pacman/executor/pacman_algorithm_executor.py:682, in PACMANAlgorithmExecutor.__execute_mapping(self) 679 timer.start_timing() 681 # Execute the algorithm --> 682 results = algorithm.call(self._internal_type_mapping) 684 if self._provenance_path: 685 self._report_full_provenance(algorithm, results) File ~/.local/lib/python3.8/site-packages/pacman/executor/algorithm_classes/abstract_python_algorithm.py:77, in AbstractPythonAlgorithm.call(self, inputs) 74 method_inputs = self._get_inputs(inputs) 76 # Run the algorithm and get the results ---> 77 results = self.call_python(method_inputs) 79 if results is not None and not isinstance(results, tuple): 80 results = (results,) File ~/.local/lib/python3.8/site-packages/pacman/executor/algorithm_classes/python_class_algorithm.py:97, in PythonClassAlgorithm.call_python(self, inputs) 93 method = self._python_method 94 logger.error("Error when calling {}.{}.{} with inputs {}", 95 self._python_module, self._python_class, method, 96 inputs.keys()) ---> 97 raise e File ~/.local/lib/python3.8/site-packages/pacman/executor/algorithm_classes/python_class_algorithm.py:89, in PythonClassAlgorithm.call_python(self, inputs) 87 method = getattr(instance, self._python_method) 88 try: ---> 89 return method(**inputs) 90 except Exception as e: 91 method = "__call__" File ~/.local/lib/python3.8/site-packages/spinn_front_end_common/interface/interface_functions/machine_generator.py:143, in MachineGenerator.__call__(self, hostname, bmp_details, downed_chips, downed_cores, downed_links, board_version, auto_detect_bmp, scamp_connection_data, boot_port_num, reset_machine_on_start_up, report_waiting_logs, max_sdram_size, repair_machine, ignore_bad_ethernets, default_report_directory) 139 if board_version is None: 140 raise ConfigurationException( 141 "Please set a machine version number in the " 142 "corresponding configuration (cfg) file") --> 143 txrx.ensure_board_is_ready() 144 txrx.discover_scamp_connections() 145 return txrx.get_machine_details(), txrx File ~/.local/lib/python3.8/site-packages/spinnman/transceiver.py:981, in Transceiver.ensure_board_is_ready(self, number_of_boards, width, height, n_retries, extra_boot_values) 979 # verify that the version is the expected one for this transceiver 980 if version_info is None: --> 981 raise SpinnmanIOException( 982 "Failed to communicate with the machine") 983 if (version_info.name != _SCAMP_NAME or 984 not self.is_scamp_version_compabible( 985 version_info.version_number)): 986 raise SpinnmanIOException( 987 "The machine is currently booted with {}" 988 " {} which is incompatible with this transceiver, " 989 "required version is {} {}".format( 990 version_info.name, version_info.version_number, 991 _SCAMP_NAME, _SCAMP_VERSION)) SpinnmanIOException: IO Error: Failed to communicate with the machine .spynnaker.cfg file
[Machine] #------- # Information about the target SpiNNaker board or machine: # machineName: The name or IP address or the target board # One and only one of the three machineName, spalloc_server or virtual_board = True must be set # machine name is typically a URL and then version is required machineName = 192.168.240.1 version = 5 # spalloc_server is typically a URL and then port and user are required spalloc_server = None spalloc_port = 22244 spalloc_user = None # If using virtual_board both width and height must be set virtual_board = False # Allowed values pairs are (2,2) (8,8) (n*12,m*12) and (n*12+4, m*12+4) width = None height = None # Time scale factor allows the slowing down of the simulation time_scale_factor = None [Reports] # options are DEFAULT or a file path # In all cases oldest folders are automatically deleted to max_reports_kept= default_report_file_path = DEFAULT # options are DEFAULT, or a file path # In all cases oldest folders are automatically deleted to max_reports_kept= default_application_data_file_path = DEFAULT [Mode] # mode = Production or Debug # In Debug mode all report boolean config values are automatically overwritten to True mode = Production # Additional config options can be found in: # /home/sauravpawar/.local/lib/python3.8/site-packages/spinn_front_end_common/interface/spinnaker.cfg # /home/sauravpawar/.local/lib/python3.8/site-packages/spynnaker/pyNN/spynnaker.cfg # Copy any additional settings you want to change here including section headings Config file creation:
# SNN TOOLBOX CONFIGURATION # ############################# # Create a config file with experimental setup for SNN Toolbox. configparser = import_configparser() config = configparser.ConfigParser() config['paths'] = { 'path_wd': path_wd, # Path to model. 'dataset_path': path_wd, # Path to dataset. 'filename_ann': model_name # Name of input model. } config['tools'] = { 'evaluate_ann': True, # Test ANN on dataset before conversion. # Normalize weights for full dynamic range. 'normalize': True, 'scale_weights_exp': True } config['simulation'] = { # Chooses execution backend of SNN toolbox. 'simulator': 'spiNNaker', 'duration': 50, # Number of time steps to run each sample. 'num_to_test': 5, # How many test samples to run. 'batch_size': 1, # Batch size for simulation. # SpiNNaker seems to require 0.1 for comparable results. 'dt': 0.1 } config['input'] = { 'poisson_input': True, # Images are encodes as spike trains. 'input_rate': 1000 } config['cell'] = { 'tau_syn_E': 0.01, 'tau_syn_I': 0.01 } config['output'] = { 'plot_vars': { # Various plots (slows down simulation). 'spiketrains', # Leave section empty to turn off plots. 'spikerates', 'activations', 'correlation', 'v_mem', 'error_t'} } Metadata
Metadata
Assignees
Labels
No labels