Describe the bug
Geometry optimizer leads to different results for ifort @ ubuntu-20.04 and gcc @ macOS-14.6.1.
To Reproduce
Steps to reproduce the behaviour:
xtb_dev C13H14.xyz --opt --gfn 2 --cycles 1
Relevant lines of code
write(*,*) "Uaug before davidson"
do i = 1, nvar1
write(*,*) Uaug(i,1)
end do
call solver_sdavidson(nvar1,r4dum,Aaug,Uaug,eaug,fail,.false.)
write(*,*) "Uaug after davidson"
do i = 1, nvar1
write(*,*) Uaug(i,1)
end do
solver_sdavidson leads to different results for both architectures for Uaug, even though all input variables are equal for both architectures. Possible reasons might be blas_dot or sdot functions that lead to different results for different architectures and compilers. (In some examples, norm2 and sqrt(sdot(x, var1, 1, var1, 1)) led to different results.
Output showing the error
Please provide all input and output file such that we confirm your report.
........................................................................
.............................. CYCLE 1 ..............................
........................................................................
iter E dE RMSdq gap omega full diag
1 -35.5785110 -0.355785E+02 0.129E-04 4.46 0.0 T
2 -35.5785110 -0.205844E-10 0.784E-05 4.46 245.5 T
3 -35.5785110 0.249401E-10 0.458E-05 4.46 419.8 T
SCC iter. ... 0 min, 0.003 sec
gradient ... 0 min, 0.002 sec
* total energy : -34.9341040 Eh change -0.7595276E-09 Eh
gradient norm : 0.0325983 Eh/α predicted 0.0000000E+00 (-100.00%)
Uaug before davidson
-6.26123365E-05
-9.22085601E-05
-6.20031715E-05
-4.61859192E-04
....
0.999469101
Uaug after davidson
-6.26123365E-05
-9.22085601E-05
-6.20031715E-05
-4.61859192E-04
...
0.999469101
displ. norm : 0.0325983 α lambda 0.0000000E+00
maximum displ.: 0.0170929 α in ANC's #43, #45, #63, ...
*** FAILED TO CONVERGE GEOMETRY OPTIMIZATION IN 1 ITERATIONS ***
Expected behaviour
Numerically equal results for all systems, on which xtb is compilable.
........................................................................
.............................. CYCLE 1 ..............................
........................................................................
iter E dE RMSdq gap omega full diag
1 -35.5785110 -0.355785E+02 0.271E-05 4.46 0.0 T
2 -35.5785110 -0.175504E-11 0.151E-05 4.46 1277.3 T
3 -35.5785110 -0.177636E-12 0.996E-06 4.46 1931.4 T
SCC iter. ... 0 min, 0.004 sec
gradient ... 0 min, 0.003 sec
* total energy : -34.9341040 Eh change -0.3772840E-09 Eh
gradient norm : 0.0325980 Eh/α predicted 0.0000000E+00 (-100.00%)
Uaug before davidson
-6.2612402E-05
-9.2208698E-05
-6.2002968E-05
-4.6185814E-04
...
0.9994691
Uaug after davidson
-4.5103282E-03
-6.6389972E-03
-4.4081416E-03
-3.2373566E-02
...
0.9863185
displ. norm : 0.1671367 α lambda -0.3699289E-02
maximum displ.: 0.0759934 α in ANC's #43, #15, #45, ...
*** FAILED TO CONVERGE GEOMETRY OPTIMIZATION IN 1 ITERATIONS ***
Reason for the divergence (at least as far I see) was linking the "wrong" BLAS library (Apple Accelerate BLAS instead of openblas). Using openblas solved the issue.
Describe the bug Geometry optimizer leads to different results for
ifort @ ubuntu-20.04
andgcc @ macOS-14.6.1
.To Reproduce Steps to reproduce the behaviour:
xtb_dev C13H14.xyz --opt --gfn 2 --cycles 1
Relevant lines of code
solver_sdavidson
leads to different results for both architectures forUaug
, even though all input variables are equal for both architectures. Possible reasons might beblas_dot
orsdot
functions that lead to different results for different architectures and compilers. (In some examples,norm2
andsqrt(sdot(x, var1, 1, var1, 1))
led to different results.Output showing the error
Please provide all input and output file such that we confirm your report.
Expected behaviour Numerically equal results for all systems, on which
xtb
is compilable.Additional context C13H14.xyz.txt xtb.log