ANCOPT optimizer not consistent for `gcc @ macOS-14.6.1`
Closed this issue · 1 comments
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 ***
Additional context
C13H14.xyz.txt
xtb.log
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.