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

General issues of interest both for network and
individual cell parallelization.

Moderator: hines

Post Reply
Eelke Spaak
Posts: 10
Joined: Tue Oct 21, 2008 4:43 am

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

Post by Eelke Spaak » Wed Dec 17, 2008 5:42 am

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?

hines
Site Admin
Posts: 1577
Joined: Wed May 18, 2005 3:32 pm

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

Post by hines » Wed Dec 17, 2008 2:21 pm

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.

hines
Site Admin
Posts: 1577
Joined: Wed May 18, 2005 3:32 pm

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

Post by hines » Wed Jan 07, 2009 10:16 am

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.

Post Reply