libint2 compiler broken on windows
loriab opened this issue · 0 comments
To be clear: Linux-generated Libint2 library source compiled and run on Windows (or Linux or Mac) works fine. This issue is about Windows-generated Libint2 library source compiled and run on Windows (or Linux).
The libint2 compiler generates faulty library code when compiler is built and run on windows. A few characteristics:
- correct number of sources files and identical header contents (copied and generated)
- some library tests pass, some tests fail
The following tests passed:
libint2/eritest/build
libint2/eritest/run2
libint2/unit/build
libint2/hf/build
libint2/hf++/build
libint2/fortran_example/build
libint2/fortran_example/run
libint2/fortran_test/build
libint2/fortran_test/run
64% tests passed, 5 tests failed out of 14
Total Test time (real) = 281.11 sec
The following tests FAILED:
2 - libint2/eritest/run0 (Failed)
3 - libint2/eritest/run1 (Failed)
6 - libint2/unit/run (Failed)
8 - libint2/hf/run (Failed)
10 - libint2/hf++/run (Failed)
- eri subtests with sum(am) < 3 pass
2: Test command: /psi/gits/libint2-efv/tarballs/genWbldL/build-103/tests/eritest-libint2 "0" "2"
2: Test timeout computed to be: 10000000
2: Testing (ss|ss) : ok
2: Testing (ss|ps) : ok
2: Testing (ss|pp) : ok
2: Testing (ss|ds) : ok
2: Testing (ss|dp) : Elem 0 di= 0 v=0 : ref = 17.0323 libint = 4.11286 relabs_error = 0.758525 abs_error = 12.9194
2: Elem 10 di= 0 v=0 : ref = -5.11289 libint = 3.81277 relabs_error = 1.74572 abs_error = 8.92566
2: Elem 17 di= 0 v=0 : ref = -4.99392 libint = 14.3628 relabs_error = 3.87606 abs_error = 19.3567
2: failed
2: Testing (ss|dd) : Elem 0 di= 0 v=0 : ref = 11.2114 libint = 9.69592 relabs_error = 0.13517 abs_error = 1.51543
- in test 8, the Kinetic energy matrix is wrong by a factor of 2
8: Overlap Integrals: OK
8: Kinetic-Energy Integrals: 2x too big
8: 58.0064 -0.336022 0 3.20409e-17 0 -0.0168328 -0.0168328
8: -0.336022 1.61626 0 -1.55656e-17 0 0.141035 0.141035
8: 0 0 2.02298 0 0 0.155231 -0.155231
8: 3.20409e-17 -1.55656e-17 0 2.02298 0 0.12128 0.12128
8: 0 0 0 0 2.02298 0 0
8: -0.0168328 0.141035 0.155231 0.12128 0 1.52006 -0.00795947
8: -0.0168328 0.141035 -0.155231 0.12128 0 -0.00795947 1.52006
8:
8: Nuclear Attraction Integrals: OK
- one can see the same errors whether Windows-generated library source is built on Windows or Linux
- kinetic ints source files have different numbers of flops and missing lines
> grep flops L/src/_kinetic_D_P_prereq.cc
/** Number of flops = 334 */
> grep flops W/src/_kinetic_D_P_prereq.cc
/** Number of flops = 331 */
> grep inteval L/src/_kinetic_D_P_prereq.cc | grep alpha
fp93 = 5.0000000000000000e-01 * inteval->two_alpha0_bra[vi];
fp92 = fp93 * inteval->two_alpha0_ket[vi];
fp90 = 1.0000000000000000e+00 * inteval->two_alpha0_ket[vi];
fp79 = 5.0000000000000000e-01 * inteval->two_alpha0_ket[vi];
> grep inteval W/src/_kinetic_D_P_prereq.cc | grep alpha
fp92 = 5.0000000000000000e-01 * inteval->two_alpha0_bra[vi];
fp89 = 1.0000000000000000e+00 * inteval->two_alpha0_ket[vi];
fp91 = fp92 * inteval->two_alpha0_ket[vi];
Granted, fixing this isn't high priority, since, afaik, (number of ppl wanting ERI) * (fraction of those building the library) * (fraction of those needing to generate the library from compiler src) * (fraction of those needing to do it on Windows) = 0. So this issue is for the record, and in case a solution is apparent to EFV. If anyone wants to play with Windows generated library source tarballs, they are downloadable from the GH Actions tab run for #233 (diff -Z
for comparison against linux, or run the src through dos2unix
).