Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NEST 5g simulation kernel #920

Merged
merged 621 commits into from Aug 3, 2018
Merged

NEST 5g simulation kernel #920

merged 621 commits into from Aug 3, 2018

Conversation

@jakobj
Copy link
Contributor

@jakobj jakobj commented Apr 6, 2018

This PR contains the new NEST kernel ("5g") as described in https://doi.org/10.3389/fninf.2018.00002
As described in the manuscript, it includes major changes to the connection infrastructure, in particular by replacing the purely postsynaptic storage of connection information via a sparse table by a two-tier connection infrastructure.

Currently, there are still some issues that are being worked on (see https://github.com/jakobj/nest-simulator/issues). Nevertheless we would like to ask @heplesser @stinebuu @hakonsbm @jougs @apeyser @terhorstd to review the changes.

Thank you to everyone who contributed to the devlopment of the new kernel!

terhorstd and others added 30 commits Mar 7, 2018
cleanup of compute_compressed_secondary_recv_buffer_positions
Replaced uint by unsigned int.
…flags

Fix compilation with manual instrumentation enabled
stinebuu and others added 10 commits Jul 17, 2018
Add docstrings to c++ test cases
Add short doc for set/get local device id in volume transmitter
Remove unnecessary pointers to vectors
Conflicts:
	nestkernel/connection_manager.cpp
	nestkernel/connector_model_impl.h
	nestkernel/event_delivery_manager.cpp
	nestkernel/source_table.h
5g review hep
@alberto-antonietti
Copy link
Contributor

@alberto-antonietti alberto-antonietti commented Jul 31, 2018

I have noted that calling nest.GetConnections with 5g takes 3-times the amount of time needed with the current nest/master. Running the following simple script with a single thread:

import nest
import time

def tic():
    global startTime_for_tictoc
    startTime_for_tictoc = time.time()

def toc():
    if 'startTime_for_tictoc' in globals():
        tempo = float(time.time()) - float(startTime_for_tictoc)
        print ("Elapsed time is %.3f seconds" % tempo)
    else:
	print "Toc: start time not set"


A=nest.Create('iaf_cond_exp',1000)
B=nest.Create('iaf_cond_exp',2000)

nest.Connect(A,B,'all_to_all','static_synapse')

tic()
C = nest.GetConnections(A,B)
toc()

The elapsed time with 5g kernel is 28 seconds, while with the current master is 10 seconds.

Is this worsening expected?

@heplesser
Copy link
Contributor

@heplesser heplesser commented Aug 1, 2018

@hakonsbm I think you looked at the performance of GetConnections in 5G earlier. Could you take a look at @alberto-antonietti's comment?

jakobj added 2 commits Aug 1, 2018
5g review fixes
Additional fixes
heplesser and others added 4 commits Aug 3, 2018
Merging latest changes from master to 5g
Updated SLI examples
@jakobj
Copy link
Contributor Author

@jakobj jakobj commented Aug 3, 2018

@alberto-antonietti since 5g changed the core connection infrastructure, we needed to rewrite most of GetConnections. the initial implementation was indeed slower than master, but @hakonsbm has worked on improving its performance (see data in jakobj#104). from those benchmarks, i would expect 5g to actually be faster than master. have you used the most recent version of 5g? if this is the case, can you reproduce the numbers from jakobj#104?

@heplesser
Copy link
Contributor

@heplesser heplesser commented Aug 3, 2018

After the longest code review in NEST history, with over 250 commits during the review, all seems ready now and we are about to merge #920!

@heplesser heplesser merged commit b69389b into nest:master Aug 3, 2018
1 check passed
1 check passed
continuous-integration/travis-ci/pr The Travis CI build passed
Details
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.