SpiNNakerManchester / sPyNNaker

The SpiNNaker implementation of the PyNN neural networking language
Apache License 2.0
105 stars 44 forks source link

Placer using incorrect cost model on many projections #1469

Closed Christian-B closed 4 months ago

Christian-B commented 4 months ago

found with: import pyNN.spiNNaker as sim

n_neurons = 10000 simtime = 1000

sim.setup(timestep=1.0, min_delay=1.0)

spikeArray = {'spike_times': [[0]]} stimulus = sim.Population(1, sim.SpikeSourceArray, spikeArray, label='stimulus') pop = sim.Population(n_neurons, sim.IF_curr_exp, {}, label='chain') pop.record("spikes") sim.Projection(stimulus, pop, sim.OneToOneConnector(), sim.StaticSynapse(weight=5, delay=1)) sim.Projection(pop[n_neurons - 1], pop[0], sim.OneToOneConnector(), sim.StaticSynapse(weight=5, delay=1)) for i in range(1000): sim.Projection(pop[i], pop[i+1], sim.OneToOneConnector(), sim.StaticSynapse(weight=5, delay=1))

sim.run(simtime) neo = pop.get_data(variables=["spikes"]) spikes = neo.segments[0].spiketrains print(spikes) sim.end()


File "/home/brenninc/spinnaker/PACMAN/pacman/operations/placer_algorithms/application_placer.py", line 541, in _check_could_fit raise PacmanTooBigToPlace(message) pacman.exceptions.PacmanTooBigToPlace: chain will not fit on any possible Chip as a smae_chip_group requires 168184712 bytes but a Chip only has 123469792 bytes Lowering max_core_per_chip may resolve this.

Christian-B commented 4 months ago

May be the same bug causing https://github.com/SpiNNakerManchester/sPyNNaker/issues/1468

Christian-B commented 4 months ago

The cost models are correct. Ok maybe too high but too high is better than too low.

The example with 10,000 connectors needs 10,000 synapse table which are estimated at 168,148,712 bytes