jgarridoalcazar / SpikingCerebellum

2 stars 1 forks source link

How to install and use the cerebellum module? #1

Closed lguyot closed 6 years ago

lguyot commented 6 years ago

This issue is written in the context this HBP Neurorobotics task: https://hbpneurorobotics.atlassian.net/browse/NUIT-36

In order to install the cerebellum module, I executed successfully the following instructions (taken from $HBP/user-scripts/nrp_functions):

cd $HBP/nest-simulator/SpikingCerebellum/src/CerebellumModule mkdir -p build && cd build && cmake .. && make && make install cd ../../../../build/ && cmake -DCMAKE_INSTALL_PREFIX:PATH=$HOME/.local \ -Dwith-gsl=ON -Dwith-mpi=ON -Dwith-music=ON -Dexternal-modules=cerebellum \ .. make -j$NRP_NUM_MAKE_PROCESSES || { echo NEST-SPIKING-CEREBELLUM: BUILD ERROR; exit 1; } make install || { echo NEST-SPIKING-CEREBELLUM: INSTALL ERROR; exit 1; }

I can check that installation worked as expected with the following:

ls /home/lguyot/.local/lib/nest
cerebellummodule.so  libcerebellummodule.so
ldd ~/.local/bin/nest
libcerebellummodule.so => /home/lguyot/.local/bin/../lib/nest/libcerebellummodule.so

The documentation says:

The module can be loaded into NEST using (cerebellummodule) Install (in SLI) nest.Install(cerebellummodule) (in PyNEST)

But if I run the following commands:

source ~/.opt/platform_venv/bin/activate
python install_cerebellum.py

where install_cerebellum.py contains only

import nest 
try:
    nest.Install('cerebellummodule')
except nest.NESTError:
    pass 

I get a

Segmentation fault

How should I install and use cerebellum module?

jgarridoalcazar commented 6 years ago

I am trying to reproduce this issue, but it seems to work in my PyNN/NEST 2.14 installation (with no HBP platform installed). If I am not wrong, the NRP is using NEST 2.12. Could you please confirm it?

jgarridoalcazar commented 6 years ago

With NEST 2.12 I success on compiling and loading the module too. The steps that you run seems to be correct.

lguyot commented 6 years ago

Hi Jesus, Thanks for investigating. I confirm that I am using NEST 2.12. So, on your computer you can execute nest.Install('cerebellummodule') without any segmentation fault? (Could you provide me with the detailed command?). What do you think is happening with my installation?

jgarridoalcazar commented 6 years ago

Exactly, no segmentation fault at all. Even I can run the brain building script with no issue. The Python commands that I use are as follows:

jgarrido@jgarrido-5520:~/Downloads$ python
Python 2.7.12 (default, Dec  4 2017, 14:50:18) 
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import nest
[INFO] [2018.8.6 14:9:43 /home/jgarrido/Downloads/nest-2.12.0/nestkernel/rng_manager.cpp:226 @ Network::create_rngs_] : Creating default RNGs
[INFO] [2018.8.6 14:9:43 /home/jgarrido/Downloads/nest-2.12.0/nestkernel/rng_manager.cpp:221 @ Network::create_rngs_] : Deleting existing random number generators
[INFO] [2018.8.6 14:9:43 /home/jgarrido/Downloads/nest-2.12.0/nestkernel/rng_manager.cpp:226 @ Network::create_rngs_] : Creating default RNGs
[INFO] [2018.8.6 14:9:43 /home/jgarrido/Downloads/nest-2.12.0/nestkernel/rng_manager.cpp:272 @ Network::create_grng_] : Creating new default global RNG

              -- N E S T --

  Copyright (C) 2004 The NEST Initiative
  Version 2.12.0 Aug  6 2018 12:30:27

This program is provided AS IS and comes with
NO WARRANTY. See the file LICENSE for details.

Problems or suggestions?
  Visit http://www.nest-simulator.org

Type 'nest.help()' to find out more about NEST.
>>> nest.Install('cerebellummodule')

Aug 06 14:09:50 Install [Info]: 
    loaded module Cerebellum Module

I have no idea where this issue could come from. It seems correctly installed. Other people have reported segmentation fault when using a particular synapse model included in the module (but no segmentation fault on nest.Install command). I am also investigating that issue but I didn't manage to reproduce it neither.

Which compiler version are you using?

lguyot commented 6 years ago

This is gcc 5.4.0. I am on Ubuntu 16.04 LTS.

 14:21 $ python
    Python 2.7.12 (default, Dec  4 2017, 14:50:18) 
    [GCC 5.4.0 20160609] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import nest
    [INFO] [2018.8.6 14:21:46 /home/lguyot/Documents/NRP/nest- 
    simulator/nestkernel/rng_manager.cpp:226 @ Network::create_rngs_] : Creating default RNGs
    [INFO] [2018.8.6 14:21:46 /home/lguyot/Documents/NRP/nest- 
    simulator/nestkernel/rng_manager.cpp:221 @ Network::create_rngs_] : Deleting existing random 
     number generators
    [INFO] [2018.8.6 14:21:46 /home/lguyot/Documents/NRP/nest- 
    simulator/nestkernel/rng_manager.cpp:226 @ Network::create_rngs_] : Creating default RNGs
    [INFO] [2018.8.6 14:21:46 /home/lguyot/Documents/NRP/nest- 
    simulator/nestkernel/rng_manager.cpp:272 @ Network::create_grng_] : Creating new default global 
    RNG

              -- N E S T --

    Copyright (C) 2004 The NEST Initiative
    Version 2.12.0 Aug  6 2018 10:33:52

    This program is provided AS IS and comes with
    NO WARRANTY. See the file LICENSE for details.

    Problems or suggestions?
    Visit http://www.nest-simulator.org

   Type 'nest.help()' to find out more about NEST.
    >>> nest.Install('cerebellummodule')
    Segmentation fault
jgarridoalcazar commented 6 years ago

Same thing here. So definitely no clue, but no way to reproduce the issue. We have installed the module in 3 different machines with no segmentation faults. Do you think that I could get access to one system/environment reproducing the issue (ssh with guest account, virtual machine or any other way)?

jgarridoalcazar commented 6 years ago

After checking your log above I have realized that you should NOT need the nest.Install command as you already compiled NEST with the cerebellum module, so all the neuron and synapse models should be already available without nest.Install.

lguyot commented 6 years ago

So far, it is only on my computer (but I need to get it working there so as to deploy the VOR experiment on the Lugano CSCS servers). I'll ask my colleagues if they can reproduce the segmentation fault.

The nest.Install command is commented out in iCub_VOR_UGR_brain_GOLGI.py and I wasn't sure if it was necessary. As you can read in my comments in https://hbpneurorobotics.atlassian.net/browse/NUIT-36, I cannot run this file with python successfully (I have downsized it to few instructions).

jgarridoalcazar commented 6 years ago

I think the relevant issue here is the segmentation fault on using the stdp_cos synapse (sim.projection....). nest.Install probably will get a segmentation fault when loading a module which is already linked during compilation time.

lguyot commented 6 years ago

In this case, we can close this issue about installation and loading. Then I can open a new one about the failure of


                    VN_population,
                    sim.AllToAllConnector(),
                    receptor_type='AMPA',
                    synapse_type = stdp_cos)```

which results in "Terminated without an active exception".
jgarridoalcazar commented 6 years ago

Great. Thanks