Different results on i686 and x86_64 machines
Different results on i686 and x86_64 machines
Any ideas why I get very different results when I compile and run my code on an i686 (32-bit) Linux machine versus an x86_64 (64-bit) Linux machine? See plot above. These plots were generated using the exact same .mod and .hoc files.
P.S. The plot shows the response of a thalamocortical relay neuron to a constant hyperpolarizing current. An H-current and T-type Calcium current are supposed to interact and cause the cell to rebound (as in the red case).
Re: Different results on i686 and x86_64 machines
P.S.S. - I tried NEURON 6.0 and 7.0, with similar results.
-
- Site Admin
- Posts: 6300
- Joined: Wed May 18, 2005 4:50 pm
- Location: Yale University School of Medicine
- Contact:
Re: Different results on i686 and x86_64 machines
Shouldn't happen. To diagnose the problem, it will be necessary to reproduce it. Can you zip up just enough code to reproduce the result, and send it to me
ted dot carnevale at yale dot edu
?
ted dot carnevale at yale dot edu
?
-
- Site Admin
- Posts: 6300
- Joined: Wed May 18, 2005 4:50 pm
- Location: Yale University School of Medicine
- Contact:
Re: Different results on i686 and x86_64 machines
The problem was caused by an error in a mod file.
Before comparing results of 32 vs 64 bit simulations, I started checking the mod files with modlunit--which finds syntax errors as well as units inconsistencies. Its chief limitation is that once it finds and reports an error, it quits, so using modlunit is a matter of making repeated "test and revise" cycles.
modlunit ishift.mod
first reported this trivial units inconsistencywhich won't affect simulation results, and is very easy to correct. vsh was a STATE that was not assigned any particular units, so replacing witheliminated the units inconsistency.
The next pass with modlunit reportedThis is a serious error--I'm surprised that the code executes. However, this error is also easy to fix. Just replacewith
mjb7 reported the following:
Before comparing results of 32 vs 64 bit simulations, I started checking the mod files with modlunit--which finds syntax errors as well as units inconsistencies. Its chief limitation is that once it finds and reports an error, it quits, so using modlunit is a matter of making repeated "test and revise" cycles.
modlunit ishift.mod
first reported this trivial units inconsistency
Code: Select all
units: 1
units: 0.001 m2-kg/sec2-coul
The units of the previous two expressions are not conformable
at line 55 in file ihshift.mod
evaluate_fct(v,vsh<<ERROR>>)
Code: Select all
PROCEDURE evaluate_fct(v(mV), vsh(mV)) {
Code: Select all
: PROCEDURE evaluate_fct(v(mV), vsh(mV)) {
PROCEDURE evaluate_fct(v(mV), vsh) {
The next pass with modlunit reported
Code: Select all
too few arguments at line 68 in file ihshift.mod
evaluate_fct(v)<<ERROR>>
Code: Select all
evaluate_fct(v)
Code: Select all
: evaluate_fct(v)
evaluate_fct(v, vsh)
The curves matched exactly once I corrected the ihshift file (I checked the others, and they didn't have any unit errors).