Code Monkey home page Code Monkey logo

neurongpu's Introduction

This repository has been discontinued. NeuronGPU is currently being integrated in the NEST Initiative as NEST GPU

https://github.com/nest/nest-gpu

NeuronGPU

A GPU-MPI library for simulation of large-scale networks of spiking neurons. Can be used in Python, in C++ and in C.

With this library it is possible to run relatively fast simulations of large-scale networks of spiking neurons. For instance, on a single Nvidia GeForce RTX 2080 Ti GPU board it is possible to simulate the activity of 1 million multisynapse AdEx neurons with 1000 synapse per neurons, for a total of 1 billion synapse, using the fifth-order Runge-Kutta method with adaptive stepsize as differential equations solver, in little more than 70 seconds per second of neural activity. The MPI communication is also very efficient. The python interface is very similar to that of the NEST simulator: the most used commands are practically identical, dictionaries are used to define neurons, connections and synapsis properties in the same way.

To start using it,, have a look at the examples in the python/examples and c++/examples folders.

neurongpu's People

Contributors

golosio avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

neurongpu's Issues

MPI_Isend or MPI_Send?May be loss data?

In neurongpu.cu(Line 524 & 528) & spike_mpi.cu(320 & 351),If use "MPI_Isend" & "MPI_Irecv"(Not blocking),may be not recv data(lose data)?Is that right?

Is there anything like nest.ResetNetwork?

I would like to run the simulation under different conditions automatically with a loop. It looks like this :

for i in range(times):
net = Network(sim_dict, net_dict, stim_dict)
net.create()
net.connect()
net.simulate(sim_dict['t_sim'])
SaveData()

However, when a simulation is completed, the next one would be stuck at net.create() , as ValueError: Nodes cannot be created after calibration.
I think we need a reset operation like nest.ResetNetwork to initialize the network before we start to create it again, but I could not find it. Is there anything like this, please?

The usage of MPI feature is not documented

Differently from NEST, in the current version of NeuronGPU nodes are not distributed automatically among MPI processes. The user must decide in advance how they are distributed, create nodes that must be connected remotely using the function RemoteCreate and connect nodes in different MPI process using the function RemoteConnect. Unfortunately this is a relatively new feature and is not yet documented.

STDP depresses cortico - cortical connections in a "minimal" three neurons Thalamo - Cortical model

I considered a simple 3 neurons system to mimic thalamus —> cortex and cortex <—> cortex interactions:

Axon delay : t_a = 1.5
Dendritic delay : t_d = 0.5
dt_stdp_update = t_post + t_d - (t_pre + t_a) = ∆t

Network:

"aeif" neurons

  • TH : Thalamic neuron
  • CX1 : Cortex neuron 1
  • CX2 : Cortex neuron 2
  • SG : 3 spike generators

Connections:

TH —> CX1 , CX2
CX1 <—> CX2
SG0 —> TH
SG1 —> CX1
SG2 —> CX2

Parameters:

W_th_cx_0 = 100.
Wmax_th_cx = 105.
lambda_th = 0.03

W_cx_cx_0 = 0.01
Wmax_cx_cx = 150.
lambda_cx = 0.1

Spike generators are set to make the network firing at times:

TH Spike Times = [100.5 , 200.5 , 300.5 , 400.5] ms
CX1 Spike Times = [102.5 , 202.5 , 302.5 , 402.5] ms
CX2 Spike Times = [104.5 , 204.5 , 304.5 , 404.5] ms

Since t_d - t_a = -1 ms every 100 ms (we neglect 100 ms ISI):

  1. TH —> CX1 : ∆t = 2ms -1ms > 0 connection should POTENTIATE (OK)
  2. TH —> CX2 : ∆t = 4ms -1ms > 0 connection should POTENTIATE (OK)
  3. CX1 —> CX2 : ∆t = 2ms -1ms > 0 connection should POTENTIATE (connection get depressed)
  4. CX2 —> CX1 : ∆t = -2ms -1ms < 0 connection should WEAKEN (updates correctly negatives ∆t but neglects potentiations (∆t=97. ms))

although thalamo - cortical connections are potentiated correctly, cortico-cortical connections are bidirectionally depressed making it impossible to form pairs of coupled neurons

I attach a zip with code and output of this system " issue_case_1.py
and the code to run the same model with only CX firing "issue_case_2.py"
Issue_3neurons_NGPU.zip

"weight" not used?

"iaf_psc_exp/iaf_psc_exp_g/iaf_psc_exp_hc" all these update dont use "weight"?But in nest,
V_.weighted_spikes_ex_ = B_.spikes_ex_.get_value( lag );
V_.weighted_spikes_in_ = B_.spikes_in_.get_value( lag );
S_.i_syn_ex_ += V_.weighted_spikes_ex_;
S_.i_syn_in_ += V_.weighted_spikes_in_;

if not use ”weight“,then send/recv spike will be meaningless.Am I wrong, or is it not implemented?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.