multisplit checkbox preconditions

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

Moderator: hines

Post Reply
ramcdougal
Posts: 160
Joined: Fri Nov 28, 2008 3:38 pm
Location: Yale School of Public Health

multisplit checkbox preconditions

Post by ramcdougal » Sun Mar 29, 2009 12:34 am

I'm running Neuron 7.0 (281:80827e3cd201) and have been experimenting with multisplit. What preconditions are necessary before checking the "multisplit" box in the parallel computing toolbox so that the simple act of checking the box does not result in an error?



For example, I experimented with the ca3a.geo file from http://senselab.med.yale.edu/ModelDB/Sh ... odel=20007
If inside neuron I typed «load_file("ca3a.geo")» and then «forall nseg=5», I could open the parallel computing toolbox and click multisplit without incident. If, instead, I used «forall nseg=6», checking the multisplit box gives the error:

No children of soma(0.416667)
/usr/local/nrn/x86_64/bin/nrniv: LoadBalance failure:
near line 4
{multisplit(multisplit_)}
^
LoadBalance[3].execerror("LoadBalance failure:")
LoadBalance[3].ms_split(Vector[54], 0, 0.416667, 7, 443.4)
LoadBalance[3].multisplit(0, 443.4, Vector[54])
ParallelComputeTool[0].use_thread()
and others

What does this error mean? Does multisplit assume that there are an odd number of segments? (There are obvious reasons to use an odd number of segments, but I'm trying to understand what multisplit needs.)

When I use the model I'm interested in (which runs fine in a non-parallel setting) with an odd number of segments and hit the multisplit checkbox, I get the error:

/usr/local/nrn/x86_64/bin/nrniv: Segmentation violation
near line 1
{multisplit(multisplit_)}
^
ParallelContext[0].multisplit()
ParallelComputeTool[0].use_thread()
ParallelComputeTool[0].multisplit(1)

I haven't found a short example that causes a similar problem, but my basic question is the same: what is assumed by the code that runs when the multisplit box is checked?

Thanks.

ramcdougal
Posts: 160
Joined: Fri Nov 28, 2008 3:38 pm
Location: Yale School of Public Health

Re: multisplit checkbox preconditions

Post by ramcdougal » Sun Mar 29, 2009 3:10 pm

I can now give a simple example of how I'm getting a "segmentation violation."

Suppose we have a simple mod file implementing diffusion:

Code: Select all

NEURON {
 SUFFIX diff
}

BREAKPOINT {
 SOLVE state METHOD sparse
}

STATE {
 z   (1)
}

KINETIC state {
 COMPARTMENT 1 {z}
 LONGITUDINAL_DIFFUSION 1 {z}
 ~z << (0)
}
(No, I would never be this careless about units in production code; I just don't want to be distracting with too many details.)

As before, I start NEURON, «load_file("ca3a.geo")» and «forall nseg=5». This time I also insert the diffusion dynamics: «forall insert diff». I open up the parallel computing toolbox, hit multisplit and again get the error:

/usr/local/nrn/x86_64/bin/nrniv: Segmentation violation
near line 3
{multisplit(multisplit_)}
^
ParallelContext[0].multisplit()
ParallelComputeTool[0].use_thread()
ParallelComputeTool[0].multisplit(1)

Does multisplit not like kinetic blocks and/or longitudinal_diffusion? Or... what is the problem here?

Thanks again.

ted
Site Admin
Posts: 5621
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Re: multisplit checkbox preconditions

Post by ted » Mon Mar 30, 2009 1:30 pm

Have you tested your mod file with mkthreadsafe? If mkthreadsafe is unfamiliar to you, please see
http://www.neuron.yale.edu/phpBB/viewto ... =22&t=1476

ramcdougal
Posts: 160
Joined: Fri Nov 28, 2008 3:38 pm
Location: Yale School of Public Health

Re: multisplit checkbox preconditions

Post by ramcdougal » Mon Mar 30, 2009 2:15 pm

mkthreadsafe reports no problems:

$ /usr/local/nrn/x86_64/bin/mkthreadsafe
diff.mod

What assumptions are made by the code that executes when the multisplit checkbox is selected? Thanks.

A side note: For those who installed NEURON on Ubuntu like I did (converted the rpm to deb via alien), there are two issues with mkthreadsafe:

1. No links to mkthreadsafe (or nocmodl) are automatically created in /usr/local/bin. Since links for nrngui, nrnivmodl, etc... are inserted correctly, I assume this problem would arise even in an rpm-based system.

2. Ubuntu does not use bash as its default script shell. As distributed, mkthreadsafe on Ubuntu crashes with "/usr/local/nrn/x86_64/bin/mkthreadsafe: 42: Syntax error: Bad fd number" My working solution is to replace the first line with an explicit request for bash: "#!/bin/bash" The problem lies in mkthreadsafe's use of the >& operator. Scroll to the bottom of http://diveintomark.org/archives/2006/0 ... -fd-number for more of an explanation.

ramcdougal
Posts: 160
Joined: Fri Nov 28, 2008 3:38 pm
Location: Yale School of Public Health

Re: multisplit checkbox preconditions

Post by ramcdougal » Mon Mar 30, 2009 2:31 pm

Hines tells me "Multisplit does not work with LONGITUDINAL_DIFFUSION."

Post Reply