-
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
Wheel that supports MUSIC if installed. #2096
base: master
Are you sure you want to change the base?
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
d170a16
to
c9dd9fb
Compare
✔️ c9dd9fb -> Azure artifacts URL |
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 |
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