Psolve direct#1192
Conversation
Trajectory recording appends to Vectors.
Codecov Report
@@ Coverage Diff @@
## master #1192 +/- ##
==========================================
+ Coverage 33.07% 33.40% +0.33%
==========================================
Files 569 570 +1
Lines 108957 109248 +291
==========================================
+ Hits 36037 36499 +462
+ Misses 72920 72749 -171
Continue to review full report at Codecov.
|
Current HEAD b9e3eb3b of coreneuron psolve-direct has link problems. e.g. => Binary creating x86_64/special-core x86_64/libcorenrnmech.so: undefined reference to `coreneuron::point_register_mech(char const**, void (*)(double*, int*, int), void (*)(coreneuron::NrnThread*, coreneuron::Memb_list*, int), void (*)(coreneuron::NrnThread*, coreneuron::Memb_list*, int), void (*)(coreneuron::NrnThread*, coreneuron::Memb_list*, int), void (*)(coreneuron::NrnThread*, coreneuron::Memb_list*, int), int, void* (*)(), void (*)(), int)' collect2: error: ld returned 1 exit status
Contains bug but idea is basically sound.
deferred_type2artdata_ replaced by deferred_type2artml_ to properly figure out the Point_process* from type and mechanism index.
Begin extending tests involving psolve with CoreNERUON to verify that psolve is restartable.
|
For testcorenrn, sequence of coreneuron psolve (mode 2) is failing for: However half nrn psolve (tstop/2) followed by coreneuron psolve (tstop) using mode(1) is only failing for The later suggest a lacuna in nrn -> corenrn. And the mode 2 failures suggest missing transfers in the corenrn->nrn direction. |
int nrn_random123_setseq(Rand* r, uint32_t seq, char which); int nrn_random123_getseq(Rand* r, uint32_t* seq, char* which); Update external/coreneuron Extend a couple tests for psolve.
This is needed at least to update nrnran123 sequence state in order to be able to continue psolve on either side. Updated coreneuron and testcorenrn.
|
One remaining error for existing tests. Notes for manual testing. Note that |
testcorenrn WATCH test runs successfully with mode 2.
This is fixed by the change to nmodl mentioned by the above commit 293985b |
I think you're right. In the latest CoreNEURON CI run (here) everything is OK on CPU, both with mod2c and nmodl. There are still GPU-specific failures to investigate: (the same tests fail with both mod2c and nmodl when GPU support is enabled)
I'm not sure. I hope to pick this back up this week so I should have a better idea soon! |
olupton
left a comment
There was a problem hiding this comment.
Looking good. I didn't stare at every single line of code, but I scanned through and I think we have done a lot of CI / interactive testing of these branches already.
|
@nrnhines we need to merge this: neuronsimulator/testcorenrn#5 and then update the submodule |
|
@pramodk is making final retouches to CoreNEURON PR and we will update the submodule after the merge. |
|
@pramodk Time to squash and merge? (and I will clean up the commit message :) |
|
still need to merge CoreNEURON PR and update submodule here 🚀 |
…same as NEURON only (#528) * This means: - CoreNEURON direct mode does not do its own version of finitialize(). - On entry to CoreNEURON, all state needed to continue a simulation is copied from NEURON (including Event Queue). - On exit from CoreNEURON all state needed to continue the simulation in NEURON is copied from CoreNEURON (including EventQueue) * Implementation for copying event queue back to NEURON. * This pull request is associated with neuronsimulator/nrn#1192 * Improve GPU TrajectoryRequests support: any variable (voltage, imembrane or any mechanism data) can be recorded now. * Add extra #pragma acc wait while recording values from GPU - drop update_{fast_imem,voltage}_from_gpu() methods, those values are now copied by the generic trajectory handling. - add comment explaining why this version may be quite slow, and how it can be improved. * Updated nmodl to latest master to fix the various issues (CPU & GPU) * Check the overflow of NetSendBuffer_t from GPU execution - See rationale for this change in BlueBrain/mod2c/pull/68 - Update the mod2c submodule for CI to pick change of BlueBrain/mod2c/pull/68 * Fixed NEURON_BRANCH setting issue in the CI * Update PatternStim for direct mode. No special treatment except share Info Fixes #416 Co-authored-by: Alexandru S�<83>vulescu <alexandru.savulescu@epfl.ch> Co-authored-by: Michael Hines <michael.hines@yale.edu> Co-authored-by: Olli Lupton <oliver.lupton@epfl.ch> Co-authored-by: Pramod Kumbhar <pramod.s.kumbhar@gmail.com> Co-authored-by: Ioannis Magkanaris <iomagkanaris@gmail.com> Co-authored-by: Nicolas Cornu <nicolac76@yahoo.fr>
|
@pramodk No problem. It is an excellent commit message! |
ParallelContext.psolve(tstop) behavior for CoreNEURON direct mode is same as NEURON only.
This means CoreNEURON direct mode does not do its own version of finitialize().
On entry to CoreNEURON, all state needed to continue a simulation transfer is copied from NEURON (including Event Queue).
On exit from CoreNEURON all state needed to continue the simulation from NEURON is copied from CoreNEURON (including EventQueue)
Closes #1066 #826
This PR is associated with PR's for BlueBrain/CoreNeuron#528 neuronsimulator/testcorenrn#5 BlueBrain/mod2c#63
For coverage, using:
But note that coverage is not reaching into external/coreneuron files.
As of 26.05.2021 the only missing coverage of modified code in the NEURON part is