-
Notifications
You must be signed in to change notification settings - Fork 41
Multiple invocations of psolve when using direct memory interface #369
Comments
@iraikov : we have here very simple test to run multiple invocations but it may not be capturing all model aspects and there might be a bug. If it's possible to provide a test to reproduce the issue then it would help us to debug and fix it faster. @nrnhines : Did you encounter similar issue recently? |
Hi @pramodk thanks, this test script causes a segmentation fault on my computer as well. Perhaps there is something peculiar to my setup (MPICH+gcc on Debian). Let me try on Frontera with intel to see if the same issue occurs. |
Interesting! I can tomorrow try it on Ubuntu/Debian system. Could you tell me your cmake arguments used for neuron / coreneuron build? |
Hi @pramodk the test script worked with Intel MPI on Frontera. Another difference was that I built without Interviews. The compilation options for MPICH+gcc were:
|
Fixed a segmentation fault on ubuntu 18.4, gcc7.5.0 with "here very simple test". The #377 will be merged soon. |
@iraikov : could you update coreneuron to latest master and try your test again? If you are building via NEURON then:
and usual |
Thanks @nrnhines @pramodk I will try out the latest coreneuron. On a related note, my specific use case for the "sequence of psolve" functionality is an optimization loop, where the parameters of some density mechanisms are modified before the next psolve is run. Is it correct to expect that the modified model configuration will be transferred to coreneuron when the next psolve is executed? Thank you very much for the rapid fixes.
|
Yes. This is the case where you will have intervening calls to finitialize. (by default a psolve directed to CoreNEURON will in fact |
Hi @nrnhines @pramodk while the second psolve does not cause a segmentation fault, something does not look right with the recorded spike vectors. I am attaching a modified direct transfer spike script, which attempts to run psolve twice and compare the CoreNeuron spike train after each run. It does not look like the CoreNeuron spike vector is resized to 0 when finitialize gets called. Let me know if this is actually expected behavior.
|
Thanks @nrnhines ! |
@iraikov : neuron and coreneuron is now updated. From main neuron repository you can do We have also updated README significantly and one can now do |
Thanks @pramodk the multiple invocations test now works as expected. |
Perfect! Thanks for confirmation ! |
Hello,
Thanks again for your work on direct memory integration with NEURON. One of my use cases involves repeated invocations of psolve as part of an optimization loop. This works in standard NEURON, but when attempting to do the same in CoreNEURON via the direct memory interface with NEURON, either psolve returns immediately and does not conduct the simulation, or causes a segmentation fault. For example, adding a second call to psolve in the test_spikes.py script causes a segmentation fault. Should it be expected the repeated calls to psolve in the same context is supported in CoreNEURON? And if so, is there a specific initialization that has to be performed in between calls to psolve? My current code only invokes finitialize before the next psolve invocation. Thanks a lot for your help.
The text was updated successfully, but these errors were encountered: