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.
multisplit checkbox preconditions
Moderator: hines
-
- Posts: 267
- Joined: Fri Nov 28, 2008 3:38 pm
- Location: Yale School of Public Health
-
- Posts: 267
- Joined: Fri Nov 28, 2008 3:38 pm
- Location: Yale School of Public Health
Re: multisplit checkbox preconditions
I can now give a simple example of how I'm getting a "segmentation violation."
Suppose we have a simple mod file implementing diffusion:
(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.
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)
}
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.
-
- Site Admin
- Posts: 6289
- Joined: Wed May 18, 2005 4:50 pm
- Location: Yale University School of Medicine
- Contact:
Re: multisplit checkbox preconditions
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
http://www.neuron.yale.edu/phpBB/viewto ... =22&t=1476
-
- Posts: 267
- Joined: Fri Nov 28, 2008 3:38 pm
- Location: Yale School of Public Health
Re: multisplit checkbox preconditions
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.
$ /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.
-
- Posts: 267
- Joined: Fri Nov 28, 2008 3:38 pm
- Location: Yale School of Public Health
Re: multisplit checkbox preconditions
Hines tells me "Multisplit does not work with LONGITUDINAL_DIFFUSION."