Page 1 of 1

"(...) unable to associate a PlayRecord item with a thread"

Posted: Wed Dec 17, 2008 5:42 am
by Eelke Spaak
I am developing and testing with NEURON 7.0a264 on a dual-core Intel T7300 processor with Windows Vista 32 bit. My model is getting more complex (and the simulations slower) all the time, and multithreaded simulation would obviously be a convenient way of speeding things up a bit. Also, I might start simulating my model on my department's cluster sometime in the future and multi-threading would be even more welcome in that scenario.

However, when I use the ParallelComputeTool, enter "2" for the number of threads, and then attempt to run the simulation, I get a message "We were unable to associate a PlayRecord item with a thread", and NEURON refuses to simulate. Clicking 'Refresh' in the tool has no effect, and using the standard RunControl 'Init & Run' button rather than my custom-built run routine also yields the same error.

Is there some special handling of vector.play() that I should be aware of during multithreaded simulation? Or does anyone have any other ideas on how to fix this?

Re: "(...) unable to associate a PlayRecord item with a thread"

Posted: Wed Dec 17, 2008 2:21 pm
by hines
What variable are you playing into?
Actually, maybe it is easier to cut to the chase and for you to email me a zip file
with all the hoc,ses,mod, data files I need to see the problem.
Send to michael.hines@yale.edu.

Re: "(...) unable to associate a PlayRecord item with a thread"

Posted: Wed Jan 07, 2009 10:16 am
by hines
From the code you sent, I see you are playing into a variable that belongs to an ARTIFICIAL_CELL.
At present, there is no good way for you to give a hint as to which thread this cell is in since
the optional first arg must be a POINT_PROCESS.
Although I can, in fact, figure out which thread owns the artificial cell, an artificial cell is not
associated with any integrator (computation only happens when the NET_RECEIVE block of
the artificial cell is called) and so in general it makes no sense to play into an artificial cell
every time step or even at specific times.
I'm guessing you were trying to make the artificial cell spike at the times specfied in
a Vector. One good way to do this is to begin with
nrn/examples/nrniv/netcon/vecevent.mod . It is actually an artificial cell
(has no BREAKPOINT and the NET_RECEIVE calls net_event) so merely replace the
POINT_PROCESS keyword with ARTIFICIAL_CELL.