Assembly function in sPyNNaker

2 views
Skip to first unread message

Alberto Arturo Vergani

unread,
Jul 27, 2022, 10:55:26 AM7/27/22
to SpiNNaker Users Group
Dear expert.

I'd like to merge different populations with the classic PyNN routine called Assembly  (http://neuralensemble.org/docs/PyNN/neurons.html#assemblies).

The idea is then to record state variables from the whole assembly created.

But, it seems that sPyNNaker is not able to adopt that function. 

If there are some suggestions, I thanks in advanced.

Best,
Alberto

Andrew Gait

unread,
Jul 27, 2022, 11:19:28 AM7/27/22
to SpiNNaker Users Group
Hi Alberto,

You are correct - sPyNNaker does not currently support Assembly.

If you want to record state variables then you have to do it for each individual Population.

On SpiNNaker each Population runs on separate core(s), so there is no operational benefit of implementing Assembly.

The best we could do would be having an Assembly which is just semantic sugar for
for Population in Assembly ...
and it's straightforward enough for a user to implement this themselves in their own scripts that we don't really see the point of adding it either.

If you can make a case as to why using an Assembly would be better in a particular example then please let us know; our viewpoint is that at best it's not necessary and at worst the Neo object you get back from e.g. Assembly.get_data(...) would be much more confusing to understand in a plot than calling Population.get_data(...) and getting Neo objects for each individual Population(View).

We are therefore reluctant to implement Assembly objects.

Andy

----------------------------------------------------
Dr. Andrew Gait (he/him),
Research Software Engineer,
APT Group,
Department of Computer Science,
The University of Manchester,
Oxford Road, Manchester M13 9PL

email: andre...@manchester.ac.uk
web: http://personalpages.manchester.ac.uk/staff/Andrew.Gait/

I do not expect a reply to this email outside of normal working hours

From: spinnak...@googlegroups.com <spinnak...@googlegroups.com> on behalf of Alberto Arturo Vergani <verga...@gmail.com>
Sent: 27 July 2022 15:55
To: SpiNNaker Users Group <spinnak...@googlegroups.com>
Subject: [SpiNNaker Mailing List] Assembly function in sPyNNaker
 
--
You received this message because you are subscribed to the Google Groups "SpiNNaker Users Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to spinnakeruser...@googlegroups.com.
To view this discussion on the web, visit https://groups.google.com/d/msgid/spinnakerusers/b1e61a1c-5e74-4394-9816-6f45c4e1327bn%40googlegroups.com.

Chris Huyck

unread,
Jul 28, 2022, 4:18:43 AM7/28/22
to Alberto Arturo Vergani, SpiNNaker Users Group

Hey Alberto, I hope all is well.  It’s nice to see you’re still working with this stuff.  A simple way to do this would have been to use the original population to create the assembly you want.  You could then record it and print it.  All of the other PyNN stuff on top of that is just syntactic sugar.  It’s one of the reasons I stick with population connection lists. 

-Chris

 

From: spinnak...@googlegroups.com <spinnak...@googlegroups.com> On Behalf Of Alberto Arturo Vergani
Sent: 27 July 2022 15:55
To: SpiNNaker Users Group <spinnak...@googlegroups.com>
Subject: [SpiNNaker Mailing List] Assembly function in sPyNNaker

 

Dear expert.

--

Andrew Rowley

unread,
Jul 28, 2022, 6:10:30 AM7/28/22
to Chris Huyck, Alberto Arturo Vergani, SpiNNaker Users Group

Hi,

 

Just to add that connection lists can be problematic on SpiNNaker due to the need for these to be loaded on to the machine directly, where other connector types can be generated on the machine, after only loading the connection descriptions.  For reasonably simple connectivity this is fine, but as the networks get bigger with more connection, this can end up being slow to load.  How much that matters to you depends on what you are doing of course, and whether there are connectors implemented that support what you want to do.

 

An alternative to this is that we now support PopulationView objects on SpiNNaker.  This would then let you do a similar thing with having a single big Population, and then you can create PopulationView objects into that Population that really represent the underlying groupings that you want to connect.  You can then create Projections between the PopulationView objects with normal connectors such as the FixedProbabilityConnector or OneToOneConnector and the details are handled by the software, including generation of the connections on the machine even between these sub-populations.

 

Additionally note that the latest git version of the software can take advantage of the Population objects (not the PopulationView objects as yet).  These are then grouped in such a way as to make it easier to do routing between Populations on the machine, which helps a lot in very big networks.  Because of this, if the only advantage of using a single Population is to record the data in a single unit, it may be better to instead handle the data from multiple Population objects to ensure that the mapping on to the hardware is as efficient as possible.

 

Andrew :)

Reply all
Reply to author
Forward
0 new messages