[NRRPLT-4722] Support faux-dynamic MUSIC ports for transfer functions.
This patch fixes a critical issue where the output of distributed simulations did not match that of single process simulations. The issue was due to static synapse creation for proxy connections that did not consider the specific spike devices that were connected - each of which have different default and user configurable values - and would produce similar but incorrect output. Further, fixed port width meant that multiple transfer functions would be connected to the same parrot neurons, resulting in cumulative output to the actual brain neurons rather than properly separated input from each device. To resolve this issue, the following was implemented: - faux large port widths to the brain allowing 5 x population connections - dynamic configuration of these ports via MPI communication - use of Nest freeze/thaw paradigm to try and reduce performance impact Thus, the CLE notifies the remote brain processes of each TF's specific configuration and it is replicated using the appropriate free proxy neurons on each side through direct Nest manipulation. Once the CLE notifies the processes that the transfer functions are loaded, they no longer accept configuration messages and run the simulation. This creates proper transfer function connectivity to workaround the lack of dynamic port creation in MUSIC and produces the same results as the single process version of the Husky experiment. This patch should absolutely be removed and fully refactored when MUSIC supports dynamic port creation, it is a workaround to achieve functionality. Change-Id: Ifee5e668c9644e679861dc7598dff9e9f5c6fa52
Showing
- hbp_nrp_music_interface/hbp_nrp_music_interface/bibi/bibi_music_config.py 8 additions, 1 deletion...terface/hbp_nrp_music_interface/bibi/bibi_music_config.py
- hbp_nrp_music_interface/hbp_nrp_music_interface/cle/MUSICPyNNCommunicationAdapter.py 143 additions, 8 deletions..._nrp_music_interface/cle/MUSICPyNNCommunicationAdapter.py
- hbp_nrp_music_interface/hbp_nrp_music_interface/launch/MUSICBrainProcess.py 100 additions, 13 deletions...rface/hbp_nrp_music_interface/launch/MUSICBrainProcess.py
- hbp_nrp_music_interface/hbp_nrp_music_interface/launch/MUSICLauncher.py 1 addition, 2 deletions...interface/hbp_nrp_music_interface/launch/MUSICLauncher.py
- hbp_nrp_music_interface/hbp_nrp_music_interface/tests/bibi/config.music 3 additions, 3 deletions...interface/hbp_nrp_music_interface/tests/bibi/config.music
- hbp_nrp_music_interface/hbp_nrp_music_interface/tests/bibi/config.xml 3 additions, 3 deletions...c_interface/hbp_nrp_music_interface/tests/bibi/config.xml
- hbp_nrp_music_interface/hbp_nrp_music_interface/tests/cle/test_communication_adapter.py 4 additions, 0 deletions...p_music_interface/tests/cle/test_communication_adapter.py
- hbp_nrp_music_xml/hbp_nrp_music_xml/pynn/connector_factory.py 7 additions, 0 deletions...nrp_music_xml/hbp_nrp_music_xml/pynn/connector_factory.py
- hbp_nrp_music_xml/hbp_nrp_music_xml/pynn/factory.py 13 additions, 0 deletionshbp_nrp_music_xml/hbp_nrp_music_xml/pynn/factory.py
- hbp_nrp_music_xml/hbp_nrp_music_xml/tests/pynn/test_factory.py 1 addition, 1 deletion...rp_music_xml/hbp_nrp_music_xml/tests/pynn/test_factory.py
Please register or sign in to comment