Problem using multisplit and cache efficiency?

Managing anatomically complex model cells with the CellBuilder. Importing morphometric data with NEURON's Import3D tool or Robert Cannon's CVAPP. Where to find detailed morphometric data.
Post Reply
Keivan
Posts: 127
Joined: Sat Apr 22, 2006 4:28 am

Problem using multisplit and cache efficiency?

Post by Keivan » Wed Jul 18, 2007 7:58 am

Hi everybody

I have some question about the multiprocessor programming of anatomically detailed neurons:

1) I have a multi processor computer (a desktop not a cluster), which method is better for me: multisplit or splitcell?

2) I could not understand the neurons manual (mutisplit and splitcell), how can I use this methods? Is there a simpler manual or help about these new features?

3) I was created a cell previously, how can I upgrade it with these new features?

4) Is cache efficiency improvements, effective in desktop computers or it is only for cluster computers? Is this feature requires activation?

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

Post by hines » Wed Jul 18, 2007 11:15 am

1) multisplit. Especially if you have more than two processors. splitcell is also limited in that (in the whole cell) sections can only be connected at positions 0 or 1 of the parent. This is a problem for a lot of cells in which dendrites are connected to soma(.5)

2) At present, no simpler manual or help. Ted...?:)

3) Do not change any of your code that creates the cell. Create the cell on every cpu, throw away the part that is not supposed to exist, and connect with the right pc.multisplit calls.

I have a lot of hoc code that decides on the best split points for balance and implements the above strategy. However it is not yet organized into an easy to use recipe and itself has no documentation. If you send me, michael.hines@yale.edu, a zip file of your hoc,ses,mod files necessary to run on a single computer set up to produce some kind of trajectory for a hundred ms or so and tell me how many machines you have, I'll send you back a hoc file you can load_file in your code that will produce the same trajectory on that many machines.

4) yes. Some of the cache efficiency is automatic. To get it all, use cvode.cache_efficient(1)

eacheon
Posts: 97
Joined: Wed Jan 18, 2006 2:20 pm

Post by eacheon » Sat Oct 20, 2007 11:17 pm

hines wrote:1) multisplit. Especially if you have more than two processors. splitcell is also limited in that (in the whole cell) sections can only be connected at positions 0 or 1 of the parent. This is a problem for a lot of cells in which dendrites are connected to soma(.5)

2) At present, no simpler manual or help. Ted...?:)

3) Do not change any of your code that creates the cell. Create the cell on every cpu, throw away the part that is not supposed to exist, and connect with the right pc.multisplit calls.

I have a lot of hoc code that decides on the best split points for balance and implements the above strategy. However it is not yet organized into an easy to use recipe and itself has no documentation. If you send me, michael.hines@yale.edu, a zip file of your hoc,ses,mod files necessary to run on a single computer set up to produce some kind of trajectory for a hundred ms or so and tell me how many machines you have, I'll send you back a hoc file you can load_file in your code that will produce the same trajectory on that many machines.

4) yes. Some of the cache efficiency is automatic. To get it all, use cvode.cache_efficient(1)
What does the highlighted text mean exactly? Could you give a simple .hoc script using multisplit as example?

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

Post by hines » Sun Oct 21, 2007 10:24 am

I'm afraid there is no documentation yet. And the usage at the level of the primitives certainly requires advanced hoc programming. However the svn repository version of the standard hoc library now has higher level code that supports multisplit with load balance.
We are in the last stages of writing a paper and have uploaded the single cell parallelization code as a private model in ModelDB. If anyone would like to have a preliminary version of this code, please
write to me (michael.hines@yale.edu) and I will send the link and readonly access code for the model.

eacheon
Posts: 97
Joined: Wed Jan 18, 2006 2:20 pm

Post by eacheon » Sun Oct 21, 2007 3:04 pm

hines wrote:I'm afraid there is no documentation yet. And the usage at the level of the primitives certainly requires advanced hoc programming. However the svn repository version of the standard hoc library now has higher level code that supports multisplit with load balance.
We are in the last stages of writing a paper and have uploaded the single cell parallelization code as a private model in ModelDB. If anyone would like to have a preliminary version of this code, please
write to me (michael.hines@yale.edu) and I will send the link and readonly access code for the model.
"The number of split nodes allowed on a tree is two or fewer. " (from document)
Is this still true? In other words, is it only beneficial to run a cell on <3 cpus, if the model has only 1 tree?

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

Post by hines » Sun Oct 21, 2007 4:39 pm

You can split a tree into as many subtrees as desired. But each subtree can have no more than two splitpoints.

On shared memory machines, most 3d reconstructions(>300 compartments) will give linear speedup on up to 8 processors. For large cells we've seen good results on 16 processors. Good load balance on 8 processors usually requires splitting a cell into about 50 subtrees.

Post Reply