-
Notifications
You must be signed in to change notification settings - Fork 119
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
Extend CoreNEURON POINTER transfer to any RANGE variable in a NRN_THREAD #1622
Conversation
Codecov Report
@@ Coverage Diff @@
## master #1622 +/- ##
==========================================
+ Coverage 45.22% 45.30% +0.07%
==========================================
Files 551 551
Lines 111198 111206 +8
==========================================
+ Hits 50289 50380 +91
+ Misses 60909 60826 -83
Continue to review full report at Codecov.
|
There is likely a but in WATCH statement when checkpoint with cell-permute 1. So that test is currently turned off.
f88f823 test does reveal a bug in CoreNEURON checkpointing but it has nothing to do with the WATCH statement either. It has to do with some kind of permutation problem so that the PreSyn is not properly associated with the correct AxialPP instance (at least after checkpoint read). I.e the visible symptom is that gid's for the spike raster file are wrong. But if gids are stored in the AxialPP instance itself as a PARAMETER RANGE variable, and one
one sees the correct gid in the id range variable associated with the proper time and value. In other words, the first few spikes after a checkpoint restart prints
but the the corresponding spikes in the spike raster out.dat file are
|
@pramod This is ready for review with respect to POINTER functionality. However, I would like to explicitly support the handling of multiple BEFORE SETUP blocks in a single mod file. The axial_pp.mod, axial.mod, and axial.inc files can benefit from that in terms of reducing copies of identical code fragments. However it may involve a similar change over on the CoreNEURON side as well for BlueBrain/CoreNeuron#772 |
@nrnhines : As mentioned in BlueBrain/CoreNeuron#772, lets have a separate PR so that we can get this merged? |
I agree. I'll defer the change to a separate pull request after this is merged. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. Some cosmetic touches.
Just for the record - CircleCI failure seems like a hiccup: Reading package lists... Done
W: --force-yes is deprecated, use one of the options starting with --allow instead.
E: Failed to fetch http://us-east-1.ec2.ports.ubuntu.com/ubuntu-ports/dists/focal-updates/main/binary-arm64/Packages.xz File has unexpected size (1137644 != 1139168). Mirror sync in progress? [IP: 34.207.203.110 80]
Hashes of expected file:
- Filesize:1139168 [weak]
- SHA256:83e3736496f0f874e48d6914bae3a62a5f830581db7071bf6520577bd20e7102
- SHA1:81166858c09120d9bdd1680d1c565cabfe10d16b [weak]
- MD5Sum:c3057169215bd6bdeef8ddf39effab1b [weak]
Release file created at: Thu, 10 Mar 2022 17:53:55 +0000
E: Failed to fetch http://us-east-1.ec2.ports.ubuntu.com/ubuntu-ports/dists/focal-updates/universe/binary-arm64/Packages.xz
E: Some index files failed to download. They have been ignored, or old ones used instead. Have retriggered the CI. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
NEURON { | ||
THREADSAFE | ||
RANGE ri, ia, im | ||
POINTER pv, pia, pim |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@pramodk That is correct. That has always been correct for POINTER to voltage.
# sometimes roundoff to %.8g gives different sort. | ||
srun("sortspike {}/temp {}/nrn.spk".format(dir, dir)) | ||
|
||
srun("sortspike {}/out.dat {}/out.spk".format(dir, dir)) | ||
srun("cmp {}/out.spk {}/nrn.spk".format(dir, dir)) | ||
|
||
cmd = "cat" | ||
for i in chkpntdirs: | ||
cmd = cmd + " " + i + "/out.dat" | ||
srun(cmd + " > " + dir + "/temp") | ||
srun("sortspike {}/temp {}/chkptout.spk".format(dir, dir)) | ||
srun("cmp {}/out.spk {}/chkptout.spk".format(dir, dir)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
just a comment: this all looks bash embedded inside python 😅 but I think we can leave this. In #1682 Olli refactor similar test inside CMake but this one doesn't include MPI or similar options. So hopefully we will be able to clean this after 8.1 by bringing coreneuron integrated into neuron.
Prior to this, POINTER was restricted to point to voltage.
This change depends on BlueBrain/CoreNeuron#772
TODO:
Requires bbcore_write_version 1.5
The test requires merge of BlueBrain/CoreNeuron#748
To test (until BlueBrain/CoreNeuron#748 is merged)