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

Multisend available in NEURON by default. #1537

Merged
merged 8 commits into from Dec 14, 2021
Merged

Conversation

nrnhines
Copy link
Member

@nrnhines nrnhines commented Nov 20, 2021

Turn off default printing of multisend setup space/performance info.
This is also done in BlueBrain/CoreNeuron#692

pc.spike_compress(-1) acts according to documentation (does not
change any multisend properties).

neuron.coreneuron specifies correct multisend args derived
from current NEURON settings from pc.spike_compress third arg
(available from pc.send_time(8))

test using https://github.com/nrnhines/tqperf

git checkout hines/test1
nrnivmodl -coreneuron mod
mpiexec -n 4 nrniv -mpi -python test1.py

Turn off default printing of multisend setup space/performance info.

pc.spike_compress(-1) acts according to documentation (does not
change any multisend properties).

neuron.coreneuron specifies correct multisend args derived
from current NEURON settings from pc.spike_compress third arg
(available from pc.send_time(8))/
Consistent praxis prototype. Fixes int vs long int problem on arm64.

nrntimeout_call defined (even though used only if HAVE_SIGACTION)
@codecov-commenter
Copy link

codecov-commenter commented Nov 21, 2021

Codecov Report

Merging #1537 (a3c49cc) into master (903136d) will decrease coverage by 0.18%.
The diff coverage is 63.63%.

Impacted file tree graph

@@            Coverage Diff             @@
##           master    #1537      +/-   ##
==========================================
- Coverage   43.97%   43.79%   -0.19%     
==========================================
  Files         550      552       +2     
  Lines      110410   110973     +563     
==========================================
+ Hits        48558    48602      +44     
- Misses      61852    62371     +519     
Impacted Files Coverage Δ
share/lib/python/neuron/coreneuron.py 76.92% <0.00%> (ø)
src/nrniv/bgpdmasetup.cpp 0.00% <ø> (ø)
src/nrnoc/nrntimeout.cpp 53.84% <ø> (ø)
src/nrniv/netpar.cpp 81.24% <100.00%> (-0.36%) ⬇️
src/nrnoc/hocprax.cpp 65.38% <100.00%> (ø)
src/nrniv/structpool.h 77.58% <0.00%> (-10.65%) ⬇️
src/nrnmpi/mpispike.cpp 61.99% <0.00%> (-4.12%) ⬇️
src/nrniv/bbsavestate.cpp 89.80% <0.00%> (-0.06%) ⬇️
src/nrniv/bgpdma.cpp 8.30% <0.00%> (ø)
... and 2 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 903136d...a3c49cc. Read the comment docs.

@nrnhines
Copy link
Member Author

@pramodk Note that when building with -DNRN_ENABLE_MPI_DYNAMIC="ON" Then ninja test generates

         33 - external_ringtest::coreneuron_cpu_mpi_offline (Failed)
         36 - external_ringtest::compare_results (Failed)
         40 - testcorenrn_bbcore::coreneuron_cpu_offline (Failed)
         42 - testcorenrn_bbcore::compare_results (Failed)
         46 - testcorenrn_deriv::coreneuron_cpu_offline (Failed)
         48 - testcorenrn_deriv::compare_results (Failed)
         52 - testcorenrn_gf::coreneuron_cpu_offline (Failed)
         54 - testcorenrn_gf::compare_results (Failed)
         56 - testcorenrn_patstim::coreneuron_cpu_offline (Failed)
         58 - testcorenrn_patstim::compare_results (Failed)
         62 - testcorenrn_vecplay::coreneuron_cpu_offline (Failed)
         64 - testcorenrn_vecplay::compare_results (Failed)
         68 - testcorenrn_vecevent::coreneuron_cpu_offline (Failed)
         70 - testcorenrn_vecevent::compare_results (Failed)
         74 - testcorenrn_watch::coreneuron_cpu_offline (Failed)
         76 - testcorenrn_watch::compare_results (Failed)
         80 - testcorenrn_conc::coreneuron_cpu_offline (Failed)
         82 - testcorenrn_conc::compare_results (Failed)
         86 - testcorenrn_kin::coreneuron_cpu_offline (Failed)
         88 - testcorenrn_kin::compare_results (Failed)

Due to For dynamic MPI support you must pass '--mpi-lib ...' explicitly needed in offline mode. I'm wondering if it would be more convenient to look for that info in a NRNCORE_NRNMPILIB environment variable set by user if --mpi-lib is not present.
Otherwise, some CMakeLists.txt files would need to augment MPIEXEC_POSTFLAGS for the special-core tests, and that might be difficult to choose. Alternatively the code that loads libmpi... could figure out what libnrnmpi... to load just like is done on the NEURON side.

@nrnhines
Copy link
Member Author

I don't see how --mpi-lib /path/... can work in offline mode since ldd libcorenrnmpi_ompi.so does not list libmpi... and coreneuron does not explicitly dlopen the latter. (On the NEURON side, libmpi is dlopen first and, if successful, then the compatible libnrnmpi is dlopen.)

@nrnhines nrnhines mentioned this pull request Nov 29, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants