User Tools

Site Tools


neurali:nemo

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
neurali:nemo [2016/02/24 01:42]
profpro [NeMo]
neurali:nemo [2020/06/08 22:20] (current)
Line 1: Line 1:
 +====== NeMo ======
  
 +Esistono due versioni di Nemo
 +
 +  * La prima si compila ma non è completa
 +    * [[neurali:nemo sourceforge]] (non usare)
 +  * La seconda è completa ma non si compila (oppure devo escludere CUDA)
 +    * https://github.com/pmediano/NeMo
 +    * {{:neurali:nemo-mpi-master.zip|}} da GitHub 2 MB
 +    * {{:neurali:nemo-mpi-master-compilato-senza-cuda.zip|}}
 +
 +
 +====Descrizione ====
 +NeMo (2010?12?) è una libreria per realizzare un simulatore di [[neurali:spiking neural network]] (SNN) ad alte prestazioni, 
 +
 +  * simula reti neurali con [[neurali:NEST modello Izhikevich]]
 +    * Nemo adotta per [[neurali:NEST modello Izhikevich]] una integrazione numerica Eulero con passo di 0.25 ms (altrove dice passo fisso di 1 ms)
 +  * Si possono aggiungere facilmente nuovi modelli di neuroni come plugin
 +  * sfrutta l'esecuzione parallela di istruzioni su GPU di tipo CUDA 
 +  * Riesce a simulare reti di 100000 neuroni SNN.
 +
 +  * NeMo (che non compila CUDA!) è anche una libreria di C++ (con collegamenti per il C e Python) 
 +  * NeMo è supportato da [[neurali:PyNN]]
 +  * Nemo (che non compila CUDA!) ha una interfaccia grafica [[neurali:SpikeStream]] 
 +  * Nemo (che non compila CUDA!) lavora a basso livello: devo aggiungere un neurone alla volta
 +  * NeMo usa spesso libreria [[neurali:Boost]]
 +  * ([[neurali:iSpike]] può codificare dati in impulsi e viceversa
 +
 +===Domande===
 +  * esistono anche altri modelli di neuroni, tra cui input neuron, ma non esiste output neuron....???
 +  * esistono i layer su NeMo? no, i neuroni vanno collegati a mano...
 +
 +===== Compilazione =====
 +  
 +Dipendenze:
 +  cmake openmp libboost-filesystem-dev libboost-date-time-dev libboost-system-dev 
 +  libboost-program-options-dev libboost-python-dev nvidia-cuda-toolkit (non free, contrib,130MB) 
 +  
 +Prova
 +
 +  nvcc --version
 +
 +se ti risponde 5+, sei fregato... vedi [[neurali:nemo_output_compilazione]]
 +
 +
 +  
 +  mkdir build
 +  cd build
 +  CC=gcc-4.7 CXX=g++-4.7 cmake ..
 +  make 
 +  make install 
 +
 +NOTA: tentativo inutile, nvcc non funziona nemmeno cambiando gcc
 +
 +[[neurali:nemo output compilazione]]...  e installazione
 +
 +
 +
 +
 +
 +====Definizioni====
 +
 +Lo sviluppatore che vuole usare NeMo per poter avviare una simulazione deve definire:
 +    * neuroni e sinapsi in un oggetto //network//
 +    * parametri in un oggetto //configuration//
 +    * oggetto //simulation// (definito dai due precedenti oggetti)
 +
 +
 +===== Per definire un neurone =====
 +
 +  * [[neurali:modelli di neuroni e di sinapsi]]
 +  * **Neurone**: modello, indice per posizione, parametri del modello (virgola mobile)
 +  * **Sinapsi**: neurone sorgente e obiettivo, peso (virgola fissa), costante TAU conduttanza (max 64ms), plasticità (V/F), indice sinapsi opzionale
 +
 +===== Funzione STDP =====
 +
 +Dopo aver impostato la plasticità sinaptica tra i singoli neuroni, si può attivare la **funzione STDP globale** dell'oggetto //simulation//.
 +
 +Vedere prima [[neurali:sinapsi eccitatoria e inibitoria]]
 +
 +È necessario definire 
 +
 +  * i valori massimi dei pesi sinapsi consentiti (eccitatorio ed inibitorio)
 +  * la larghezza della finestra STDP
 +  * un array //pre-post pair// (quando l'eccitazione anticipa l'attivazione)
 +  * un array //post-pre pair//  (quando l'attivazione anticipa l'eccitazione)
 +
 +[[neurali:stdp_learning_method]]
 +
 +[[neurali:nemo esempio1 c++]]
 +
 +[[neurali:nemo appunti c++]]
 +
 +[[neurali::ispike esempio2]] insieme a Nemo
neurali/nemo.txt · Last modified: 2020/06/08 22:20 (external edit)