Dear Xavier,
I think the most efficient way would be to drop the entires “src_iter” loop and simply place the entire source node collection in conn_filter, just as the target collection. Then, one would only need a single GetConnections() call and would avoid a lot of duplicate parsing of the connection tables.
The one downside with that approach is that one may need quite some memory to store the connectome returned by GetConnections(). If we assume a layer size of 10000 neurons and a connectivity of 10% within the layer, we get 10 million connections. Each of those requires 40B in the representation returned by GetConnections(), so 400 MB in total. But this is manageable in most cases. And if the simulation is distributed on say 8 MPI ranks, it would only be 50 MB per rank, and only until DumpLayerConnections completes.
It would be nice if you could try to implement this. Could you try to use modern C++-style loops ( for ( auto& conn : …) )?
The proper solution to avoid the memory overhead would be for GetConnections not to return the actual collection of connections, but actually a iterator over it so that we can avoid the memory overhead entirely. But that would be a larger change to the code.
Best, Hans Ekkehard
--
Prof. Dr. Hans Ekkehard Plesser
Department of Data Science Faculty of Science and Technology Norwegian University of Life Sciences PO Box 5003, 1432 Aas, Norway
Phone +47 6723 1560 Email hans.ekkehard.plesser@nmbu.nomailto:hans.ekkehard.plesser@nmbu.no Home http://arken.nmbu.no/~plesser
From: Xavier Otazu xotazu@cvc.uab.cat Date: Saturday, 16 March 2024 at 12:35 To: users@nest-simulator.org users@nest-simulator.org Subject: [NEST Users] Re: DumpLayerConnections() enhancement request [Some people who received this message don't often get email from xotazu@cvc.uab.cat. Learn why this is important at https://aka.ms/LearnAboutSenderIdentification ]
Hi Hans,
I have taken a look at the cpp code implementing DumpLayerConnections(). I have seen that, for every pre-synaptic neuron, it looks for the corresponding connections with all the post-sytnaptic neurons. Would it be faster to do it the other way around? That is, for every post-synaptic, looking for the corresponding pre-synaptic neurons. I was thinking about it because GetConnections() find connections on every MPI rank for every post-synaptic neuron.
If you believe it could bring some speedup, I could try to modify the cpp code.
Thanks a lot in advance,
Xavier _______________________________________________ NEST Users mailing list -- users@nest-simulator.org To unsubscribe send an email to users-leave@nest-simulator.org