<< Main Manual 

Parallel Processing of a Network Simulation

NeuronetExperimenter supports the parallel execution of simulations. The way it works is that a fraction of the network of neurons is integrated on each processor and synchronized during each timestep. This results in output data that is EXACTLY the same as if it were run on a single processor -- only it was usually generated faster. Since there is a certain amount of overhead in synchronizing the processes during the timesteps (especially in clusters), you generally want to maximize the number of neurons integrated on each processor as well as maximize the number of equations in each neuron to see big speed increases. This means you will not likely see significant speed increases in small networks (<~100) unless each neuron is highly complex.

NOTE: For the fastest program execution, only use these parallel features if you actually have a multi-processor machine or cluster. For single-processor machines, the standalone NeuronetExperimenter command will work faster.

For example, on a dual-core iMac (with OS 10.4) running a 400-neuron network, where each neuron had 7 differential equations, we got the following time for a 5 second simulation to execute:

> time NeuronetExperimenter rhmd_m.setup
time 2 m 0 s

On the same machine and using the same network, running NeuronetExperimenter on the two cores results in the following execution time:
> time pNeuronetExperimenter rhmd_m.setup 2
time 1 m 15 s

Or a 40% decrease in the execution time, where a 50% decrease is the maximum we could ever hope for.
 
Notice that we used the special script pNeuronetExperimenter to run the parallel simulations. This takes the .setup file as the first argument and the number of processors to run as the second argument. The time command we used is a separate built-in program that simply measures the amount of time another program takes to run (in this case pNeuronetExperimenter).

For dual-processor machines, the abbreviated command, dNeuronetExperimenter, can be used to start the parallel execution of rhm_m.setup as follows ('d' is for dual):

> dNeuronetExperimenter rhmd_m.setup

For four-processor machines, the abbreviated command, qNeuronetExperimenter, can be used to start the parallel execution of rhm_m.setup as follows ('q' is for quad):

> qNeuronetExperimenter rhmd_m.setup

On multi-process clusters, the details of program execution will be highly specific to how your cluster is arranged. Likewise, the types of networks that will work optimally on your cluster will be dependent on how it is arranged (JAH: more on this later).

<< Main Manual