Wheel that supports MUSIC if installed.#2096
Conversation
Move around some of the tests and use find_path / find_library
also (temporarily) allow C++ MPI headers to see if things build
MUSIC won't be needing those much longer.
Hines/enable music
742c787 to
9958eaa
Compare
9958eaa to
23c7337
Compare
5a8a813 to
c886d6c
Compare
c43eb91 to
6bd3d7b
Compare
6bd3d7b to
08d806e
Compare
Status - blockedOk so this is hitting a blocking snag. IssueLong story short, shipping C++ features in wheels (i.e. Details# On my ubuntu
(nrn_test_venv_310) savulesc@bbd-cjngk03:~/Workspace/nrn$ python test/music_tests/runtests.py
MUSIC_LIBDIR: /nrnwheel/MUSIC/lib
MUSIC located in: /nrnwheel/MUSIC/lib
MUSIC_BINPATH: /nrnwheel/MUSIC/bin:
NRN_ENABLE_MPI_DYNAMIC=ON
NRN_LIBMUSIC_PATH=/nrnwheel/MUSIC/lib/libmusic.so
PATH: /nrnwheel/MUSIC/bin:/home/savulesc/Workspace/nrn/nrn_test_venv_310/bin:/home/savulesc/.local/bin:/home/savulesc/bin:/home/savulesc/.local/bin:/home/savulesc/bin:/usr/local/Modules/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin:/opt/puppetlabs/bin:/home/savulesc/.local/share/JetBrains/Toolbox/scripts:/home/savulesc/.local/share/JetBrains/Toolbox/scripts
/home/savulesc/Workspace/nrn/nrn_test_venv_310/lib/python3.10/site-packages/neuron/.data/lib/libnrnmusic.so: undefined symbol: _ZN5MUSIC4PortC2EPNS_5SetupESs
...
subprocess.CalledProcessError: Command 'mpiexec -n 2 /nrnwheel/MUSIC/bin/music test2.music' returned non-zero exit status 1.
(nrn_test_venv_310) savulesc@bbd-cjngk03:~/Workspace/nrn$ c++filt _ZN5MUSIC4PortC2EPNS_5SetupESs
MUSIC::Port::Port(MUSIC::Setup*, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)
(nrn_test_venv_310) savulesc@bbd-cjngk03:~/Workspace/nrn$ nm -A /nrnwheel/MUSIC/lib/libmusic.so | xargs c++filt | grep MUSIC::Port::Port
MUSIC::Port::Port(MUSIC::Setup*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)
MUSIC::Port::Port(MUSIC::Setup*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)
MUSIC::Port::Port(MUSIC::Setup*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) [clone .cold]# On the docker image
[root@f23f375dfb64 nrn]# nm -A /opt/nrnwheel/MUSIC/lib/libmusic.so | xargs c++filt | grep MUSIC::Port::Port
MUSIC::Port::Port(MUSIC::Setup*, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)
MUSIC::Port::Port(MUSIC::Setup*, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)
MUSIC::Port::Port(MUSIC::Setup*, std::basic_string<char, std::char_traits<char>, std::allocator<char> >) [clone .cold]What next?On thing that could work is if MUSIC provided a C-API, i.e. |
|
@alexsavulescu @nrnhines Hi, sorry but I saw this first now that Alex brought it to my attention. I guess it is the std::string argument which is the problem? Would it help if I would overload the Port constructor such that it can take a C string? In that case you could cast the argument to a C string. Also, MUSIC does provide a C api (in music-c.h). NEURON could use that instead of the C++ API, but could we maybe try out the solution I suggest above first? Do you need help from me to try it out? I don't think that I easily could reproduce this error... |
|
@mdjurfeldt unfortunately I haven't explored the MUSIC code yet, but it is encouraging that there is a C-API. Regarding the overload, I'm not sure, but if the MUSIC classes that we inherit from in NEURON have |
|
Yes, please give me advice how to reproduce the error. |
PR description updated with how-to |
|
Could this potentially be revived now that #1963 has been resolved? Or is licensing an issue (I see MUSIC still seems to be under GPL v3)? |
I believe so. I don't think the license is an issue as the wheel would not contain any MUSIC software. On the user machine it just connects to MUSIC if the user wants to use it and MUSIC is installed. (like MPI and Python Dynamic) @mdjurfeldt would you like to see this completed? |
A beginning...
Extends #2092 (dynamic loading of MUSiC) which extends #1896 (reenable MUSIC support on a build machine).
How to test wheels locally for this PR
https://nrn.readthedocs.io/en/8.2.2/install/python_wheels.html#building-the-docker-image
https://nrn.readthedocs.io/en/8.2.2/install/python_wheels.html#using-the-docker-image
https://nrn.readthedocs.io/en/8.2.2/install/python_wheels.html#launch-the-wheel-building
https://nrn.readthedocs.io/en/8.2.2/install/python_wheels.html#testing-the-wheels