Command: GetVpRNG


gid GetVpRNG -> rngtype

[1] Morrison A Mehring C Geisel T Aertsen A and Diesmann M (2005)
Advancing the boundaries of high connectivity network simulation
with distributed computing. Neural Computation 17(8):1776-1801
The article is available at


gid - global id of the node
Tobias Potjans Moritz Helias Diesmann

This function is helpful in the implementation of parallelized wiring
routines that create idential random structures independent of the
number of machines and threads participating in the simulation. The
function is used in SLI libraries e.g. in the implementation of
RandomConvergentConnect. There is probably no need to directly use
GetVpRNG in scripts describing a particular simulation.

In NEST each node (e.g. neuron) is assigned to a virtual process and
each virtual process maintains its own random number generator. In a
simulation run the virtual processes are equally distributed over the
participating machines and threads as speciefied by the user. In NEST
2.0 virtual processes are identified with threads. Thus with the
option /total_num_virtual_procs of [0] set to n there are in total
always n threads (virtual processes) independent of the number of
participating machines. The concept of virtual processes is described
in detail in [1].

Identical results are achieved independent of the number of machines
and threads participating in a simulation if all operations modifying
a neuron and its incoming synapses use the random number generator of
the virtual process the neuron is assigned to.

An ArgumentTypeError is raised if GetVpRNG is called for a
non-local gid.


In the implementation of RandomConvergentConnect the Connect
operations are only carried out on the machine the target neuron lives
on. Whether the neuron is located on a specific machine is tested
using the /local property of the neuron. The random selection of
source neurons is made using the random number generator of the thread
the target neuron is assigned to.