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

Conversation

@jakobj
Contributor

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 some commits Mar 7, 2018

Merge pull request #2 from terhorstd/5g-cleanup
cleanup of compute_compressed_secondary_recv_buffer_positions
Merge pull request #1 from heplesser/5g
Replaced uint by unsigned int.
Merge pull request #10 from jakobj/fix/disable-timing_disable-counts_…
…flags

Fix compilation with manual instrumentation enabled

stinebuu and others added some commits Jul 17, 2018

Merge pull request #118 from jakobj/doc/cpptests
Add docstrings to c++ test cases
Merge pull request #119 from jakobj/doc/volume-transmitter
Add short doc for set/get local device id in volume transmitter
Merge pull request #117 from hakonsbm/remove_pointers_revised
Remove unnecessary pointers to vectors
Merge remote-tracking branch 'Jacob/5g' into 5g_review_fixes
Conflicts:
	nestkernel/connection_manager.cpp
	nestkernel/connector_model_impl.h
	nestkernel/event_delivery_manager.cpp
	nestkernel/source_table.h
@alberto-antonietti

This comment has been minimized.

Show comment
Hide comment
@alberto-antonietti

alberto-antonietti Jul 31, 2018

Contributor

I have noted that calling nest.GetConnections with 5g takes 3-times the amount of time needed with the currentnest/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 masteris 10 seconds.

Is this worsening expected?

Contributor

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 currentnest/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 masteris 10 seconds.

Is this worsening expected?

@heplesser

This comment has been minimized.

Show comment
Hide comment
@heplesser

heplesser Aug 1, 2018

Contributor

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

Contributor

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 some commits Aug 1, 2018

heplesser and others added some commits Aug 3, 2018

Merge pull request #126 from heplesser/jakobj_5g
Merging latest changes from master to 5g
@jakobj

This comment has been minimized.

Show comment
Hide comment
@jakobj

jakobj Aug 3, 2018

Contributor

@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?

Contributor

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

This comment has been minimized.

Show comment
Hide comment
@heplesser

heplesser Aug 3, 2018

Contributor

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!

Contributor

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

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