Oh, nuts. Somehow, in replying to the most recent post by ounos, clicked on the wrong button at some point and ended up editing away his post, leaving just a few quotes and my replies. My apologies, Jim! I had too many browser tabs open, and was more careful in composing my thoughts than in executing my actions. So much for my own abilities as a serial and/or parallel processor.
Anyway, what follows are quotes from ounos's post and my replies to them.
--Ted
any NMODL mechanism is assumed not to be thread-safe
Users are merely advised to test all mod files with a utility called mkthreadsafe--see "How to make NMODL code thread safe" in
http://www.neuron.yale.edu/phpBB/viewto ... =22&t=1476, which also provides specific examples of problem cases and how to fix them.
ted wrote:
Distributed simulation of network models requires careful attention to program structure, because there is no guarantee that a presynaptic cell and its postsynaptic target will both exist on the same processor
I see, so in such cases there is still shared state (i.e. the state of the postsynaptic target).
Not unless the term "shared state" means something other than I think it does. In NEURON, synaptic mechanisms are attached to the postsynaptic cell, and spike triggered synaptic transmission is implemented with an event delivery system that detects a threshold crossing in the presynaptic cell and then communicates an "event", after some delay, that perturbs a state variable in a synaptic mechanism. The problem is how to ensure that events that occur in a presynaptic cell on one processor are conveyed to all target synapses that are attached to postsynaptic cells on other processors. To ensure that this happens regardless of the number of processors and how cells are distributed over them, model setup code must assign a unique integer ("global identifier" or gid) to each spike source, "tell" each synaptic mechanism the gids of all spike sources that drive it, and associate each cell with the processor that handles it. So in a sense there is "shared" information--the gids--but the "state of the postsynaptic target" is not shared. For more info about gids etc. see Hines & Carnevale 2008 (cited earlier in this discussion thread), and/or one of the following:
Migliore, M, Cannia, C., Lytton, W.W., Markram, H. and Hines, M.L.
Parallel network simulations with NEURON.
Journal of Computational Neuroscience
21:119-129, 2006.
Discussion of NEURON in Brette et al.
Simulation of networks of spiking neurons: a review of tools and strategies.
J. Comput. Neurosci. 23:349-398, 2007.
I wouldn't consider marginally different results, caused by essentially picking different initial seeds, as a problem.
Parallelizing serial code often requires numerous changes that may affect model setup, initialization, simulation execution, and reporting of results. Errors may be introduced at any step that destroy the fidelity of the parallel implementation to the original serial implementation. If a parallel implementation cannot produce results that are identical to those generated by a serial implementation, then one cannot claim that results generated with the parallel implementation are a reliable indication of the behavior of the serial implementation.
it didn't run long enough
Randomness has been used to modulate many model attributes--not just initial conditions, but numbers of cells, which cells are connected, where synaptic mechanisms are located, synaptic weights, channel densities, shifts of voltage dependencies network architecture, synaptic weights, channel density, cellular branching pattern--about any imaginable parameter. None of these perturbations dissipates with increasing run time. Even initial condition perturbations may not dissipate with time (e.g. a system with multiple "basins of attraction" (like a pendulum clock)).