Lets try again.
On 3/24/2012 9:43 PM, Ray Sheppard wrote:
Hi Guangping, Nick and everyone,
I was waiting for someone to write in but I thought I might toss in
my two cents. First, in the
data you sent, you had about 7 or 8 digits of precision in your
calculations. The number system
in a computer is a closed set. At some point you go from a very large
number to a very small
number by adding a positive value. So, computers use approximations
by definition. IEEE 754-2008
defines required precision standards. We will skip over the whole,
you can not achieve greater
precision than your least precise input part and the Numerical
Analysis, how these these precisions
propagate through a calculation part. A single precision (32-bit
floating point number) has about 7 and
a quarter digits of precision according to the standard. Beyond that,
you will need to understand how
error terms propagate as they are combined. A particular processor
might have a term E1f. 12*E1f
is not the same as the sum of the series X=1->12 EXf where each X is
on a unique processor. For numbers
of X less than about a thousand, this is usually negligible. In other
words, the sum of the differences in
the error functions falls at least one digit below the guaranteed
precision. So, in short, the fact that your
computer will happily print out a bunch of lower significant digits,
that does not mean they have any meaning.
I hope this is helpful.
Ray
On 3/24/2012 6:15 PM, Nick Papior Andersen wrote:
As well as reductions in parallel should never be expected to yield
the exact same result every time. There are numerical rounding
differences when not enforcing the same reduction scheme every time,
which is the case when using MPI-library reductions. I will not argue
whether it can or can not contribute to an error of that order, but
the fact that your convergence path is not similar I would not expect
the exact same result, after all you are targeting a tolerance, not
an "exact" solution.
But also as Huan notes, is it the same executable?
Nick
2012/3/24 Huan Tran <[email protected] <mailto:[email protected]>>
I think 0.001 eV is a small quantity, and it may come from
different library when you run 1 core (serial) and 12 core
(parallel).
On Sat, Mar 24, 2012 at 5:50 AM, Guangping Zhang <[email protected]
<mailto:[email protected]>> wrote:
Dear siesta users:
I have now encounter a question: the results differ when
using different number of core to parallel.
1 core:
siesta: 124 -33928.6003 -33928.6031 -33928.6366
0.0002 -4.1261
siesta: 125 -33928.6004 -33928.6012 -33928.6346
0.0001 -4.1251
siesta: 126 -33928.6003 -33928.6009 -33928.6344
0.0001 -4.1258
siesta: E_KS(eV) = -33928.6012
siesta: E_KS - E_eggbox = -33928.6012
12 core:
siesta: 123 -33928.6004 -33928.6064 -33928.6398
0.0003 -4.1246
siesta: 124 -33928.6003 -33928.6026 -33928.6360
0.0001 -4.1257
siesta: 125 -33928.6003 -33928.6018 -33928.6352
0.0001 -4.1256
siesta: 126 -33928.6004 -33928.5996 -33928.6331
0.0001 -4.1253
siesta: E_KS(eV) = -33928.6001
siesta: E_KS - E_eggbox = -33928.6001
The E_KS differs 0.001 eV. I think it is significant. I think
the number of core using to paralle only affect the speed.
The results should be the same. Or there is something I am
missing?
And I have another question: when I do the geometry
optimization, which energy is used to calculated the force?
And when I do molecular dynamics, which energy is used for
the force?
I think the KS energy of a single point DFT calculation and
the KS energy of a molecular dynamics should be the same for
the same structure. Am I right?
Any suggestions will be regarded.
Best
Guangping
2012-03-24
------------------------------------------------------------------------
Guangping Zhang
--
Regards
Huan Tran
Department of Physics
University of Basel, Switzerland
Email: [email protected] <mailto:[email protected]>