Docker: Fix Intel testers (#5517)

This commit is contained in:
SY Wang 2026-07-05 02:42:51 +08:00 committed by GitHub
parent f50e850e17
commit b95687185d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
18 changed files with 236 additions and 146 deletions

View file

@ -141,6 +141,7 @@ add_link_options("$<$<CONFIG:ASAN>:-fsanitize=address>")
# Baseline # Baseline
add_compile_options( add_compile_options(
"$<$<COMPILE_LANG_AND_ID:Fortran,Intel,IntelLLVM>:-g;-traceback>"
"$<$<COMPILE_LANG_AND_ID:Fortran,Intel>:-free;-stand;f08;-fpp;-qopenmp;-heap-arrays;-D__MAX_CONTR=4>" "$<$<COMPILE_LANG_AND_ID:Fortran,Intel>:-free;-stand;f08;-fpp;-qopenmp;-heap-arrays;-D__MAX_CONTR=4>"
"$<$<COMPILE_LANG_AND_ID:Fortran,Intel>:-fp-model;consistent;-fpscomp;logicals>" "$<$<COMPILE_LANG_AND_ID:Fortran,Intel>:-fp-model;consistent;-fpscomp;logicals>"
"$<$<COMPILE_LANG_AND_ID:Fortran,IntelLLVM>:-free;-stand;f08;-fpp;-qopenmp;-D__MAX_CONTR=4>" "$<$<COMPILE_LANG_AND_ID:Fortran,IntelLLVM>:-free;-stand;f08;-fpp;-qopenmp;-D__MAX_CONTR=4>"
@ -149,11 +150,10 @@ add_compile_options(
# Release # Release
add_compile_options( add_compile_options(
"$<$<AND:$<CONFIG:RELEASE>,$<COMPILE_LANG_AND_ID:Fortran,IntelLLVM>>:-O3;-xHOST;-g;-D__HAS_IEEE_EXCEPTIONS>" "$<$<AND:$<CONFIG:RELEASE>,$<COMPILE_LANG_AND_ID:Fortran,IntelLLVM>>:-O3;-xHOST;-D__HAS_IEEE_EXCEPTIONS>"
"$<$<AND:$<CONFIG:RELEASE>,$<COMPILE_LANG_AND_ID:Fortran,Intel>>:-O2;-xHOST;-g;-D__HAS_IEEE_EXCEPTIONS>" "$<$<AND:$<CONFIG:RELEASE>,$<COMPILE_LANG_AND_ID:Fortran,Intel>>:-O2;-xHOST;-D__HAS_IEEE_EXCEPTIONS>"
"$<$<AND:$<CONFIG:RELEASE>,$<COMPILE_LANG_AND_ID:CXX,IntelLLVM>>:-O3;-xHOST;-g>" "$<$<AND:$<CONFIG:RELEASE>,$<COMPILE_LANG_AND_ID:CXX,IntelLLVM>>:-O3;-xHOST>"
"$<$<AND:$<CONFIG:RELEASE>,$<COMPILE_LANG_AND_ID:C,IntelLLVM>>:-O3;-xHOST;-g>" "$<$<AND:$<CONFIG:RELEASE>,$<COMPILE_LANG_AND_ID:C,IntelLLVM>>:-O3;-xHOST>")
)
# Debug # Debug
add_compile_options( add_compile_options(

View file

@ -189,7 +189,11 @@ CONTAINS
dokp = (nimages > 1) dokp = (nimages > 1)
IF (dokp) THEN IF (dokp) THEN
CPASSERT(PRESENT(cell_to_index) .AND. ASSOCIATED(cell_to_index)) IF (PRESENT(cell_to_index)) THEN
CPASSERT(ASSOCIATED(cell_to_index))
ELSE
CPABORT("Missing cell_to_index for k-point calculation")
END IF
END IF END IF
IF (calculate_forces .OR. doat) THEN IF (calculate_forces .OR. doat) THEN

View file

@ -184,7 +184,11 @@ CONTAINS
do_kp = (nimages > 1) do_kp = (nimages > 1)
IF (do_kp) THEN IF (do_kp) THEN
CPASSERT(PRESENT(cell_to_index) .AND. ASSOCIATED(cell_to_index)) IF (PRESENT(cell_to_index)) THEN
CPASSERT(ASSOCIATED(cell_to_index))
ELSE
CPABORT("Missing cell_to_index for k-point calculation")
END IF
END IF END IF
IF (calculate_forces .OR. doat) THEN IF (calculate_forces .OR. doat) THEN

View file

@ -1398,11 +1398,13 @@ CONTAINS
END IF END IF
NULLIFY (work) NULLIFY (work)
IF (PRESENT(work_opt) .AND. SIZE(work_opt) >= 4) THEN deallocate_work = .TRUE.
deallocate_work = .FALSE. IF (PRESENT(work_opt)) THEN
deallocate_work = SIZE(work_opt) < 4
END IF
IF (.NOT. deallocate_work) THEN
work => work_opt work => work_opt
ELSE ELSE
deallocate_work = .TRUE.
ALLOCATE (work(4)) ALLOCATE (work(4))
! Allocate the work storage on the fly ! Allocate the work storage on the fly
DO i = 1, 4 DO i = 1, 4

View file

@ -224,7 +224,9 @@ CONTAINS
! * * * ! * * *
wunit = default_output_unit wunit = default_output_unit
IF (PRESENT(iwunit) .AND. iwunit > 0) wunit = iwunit IF (PRESENT(iwunit)) THEN
IF (iwunit > 0) wunit = iwunit
END IF
IF (task == 'START') THEN IF (task == 'START') THEN
CALL cite_reference(Byrd1995) CALL cite_reference(Byrd1995)
@ -450,7 +452,9 @@ CONTAINS
! * * * ! * * *
wunit = default_output_unit wunit = default_output_unit
IF (PRESENT(iwunit) .AND. iwunit > 0) wunit = iwunit IF (PRESENT(iwunit)) THEN
IF (iwunit > 0) wunit = iwunit
END IF
keep_space_group = .FALSE. keep_space_group = .FALSE.
IF (PRESENT(spgr)) THEN IF (PRESENT(spgr)) THEN
@ -1047,7 +1051,9 @@ CONTAINS
INTEGER :: i, nbdd, wunit INTEGER :: i, nbdd, wunit
wunit = default_output_unit wunit = default_output_unit
IF (PRESENT(iwunit) .AND. iwunit > 0) wunit = iwunit IF (PRESENT(iwunit)) THEN
IF (iwunit > 0) wunit = iwunit
END IF
! ************ ! ************
! Initialize nbdd, x_projected, constrained and boxed. ! Initialize nbdd, x_projected, constrained and boxed.
@ -1307,7 +1313,9 @@ CONTAINS
tu, wmc, wmp, wmw, zibp tu, wmc, wmp, wmw, zibp
wunit = default_output_unit wunit = default_output_unit
IF (PRESENT(iwunit) .AND. iwunit > 0) wunit = iwunit IF (PRESENT(iwunit)) THEN
IF (iwunit > 0) wunit = iwunit
END IF
! References: ! References:
! !
@ -2155,7 +2163,9 @@ CONTAINS
INTEGER :: i, iact, k, wunit INTEGER :: i, iact, k, wunit
wunit = default_output_unit wunit = default_output_unit
IF (PRESENT(iwunit) .AND. iwunit > 0) wunit = iwunit IF (PRESENT(iwunit)) THEN
IF (iwunit > 0) wunit = iwunit
END IF
nenter = 0 nenter = 0
ileave = n + 1 ileave = n + 1
@ -2373,7 +2383,9 @@ CONTAINS
REAL(KIND=dp) :: a1, a2, ddot REAL(KIND=dp) :: a1, a2, ddot
wunit = default_output_unit wunit = default_output_unit
IF (PRESENT(iwunit) .AND. iwunit > 0) wunit = iwunit IF (PRESENT(iwunit)) THEN
IF (iwunit > 0) wunit = iwunit
END IF
IF (.NOT. (task(1:5) == 'FG_LN')) THEN IF (.NOT. (task(1:5) == 'FG_LN')) THEN
@ -2583,7 +2595,9 @@ CONTAINS
INTEGER :: i, wunit INTEGER :: i, wunit
wunit = default_output_unit wunit = default_output_unit
IF (PRESENT(iwunit) .AND. iwunit > 0) wunit = iwunit IF (PRESENT(iwunit)) THEN
IF (iwunit > 0) wunit = iwunit
END IF
IF (iprint >= 0) THEN IF (iprint >= 0) THEN
WRITE (wunit, 7001) epsmch WRITE (wunit, 7001) epsmch
@ -2670,7 +2684,9 @@ CONTAINS
INTEGER :: i, imod, wunit INTEGER :: i, imod, wunit
wunit = default_output_unit wunit = default_output_unit
IF (PRESENT(iwunit) .AND. iwunit > 0) wunit = iwunit IF (PRESENT(iwunit)) THEN
IF (iwunit > 0) wunit = iwunit
END IF
! 'word' records the status of subspace solutions. ! 'word' records the status of subspace solutions.
@ -2768,7 +2784,9 @@ CONTAINS
INTEGER :: i, wunit INTEGER :: i, wunit
wunit = default_output_unit wunit = default_output_unit
IF (PRESENT(iwunit) .AND. iwunit > 0) wunit = iwunit IF (PRESENT(iwunit)) THEN
IF (iwunit > 0) wunit = iwunit
END IF
IF (iprint >= 0 .AND. .NOT. (task(1:5) == 'ERROR')) THEN IF (iprint >= 0 .AND. .NOT. (task(1:5) == 'ERROR')) THEN
WRITE (wunit, 3003) WRITE (wunit, 3003)
@ -3059,7 +3077,9 @@ CONTAINS
! !
wunit = default_output_unit wunit = default_output_unit
IF (PRESENT(iwunit) .AND. iwunit > 0) wunit = iwunit IF (PRESENT(iwunit)) THEN
IF (iwunit > 0) wunit = iwunit
END IF
IF (nsub <= 0) RETURN IF (nsub <= 0) RETURN
IF (iprint >= 99) WRITE (wunit, 4001) IF (iprint >= 99) WRITE (wunit, 4001)

View file

@ -309,9 +309,11 @@ CONTAINS
nfixd=nfixed_atoms, & nfixd=nfixed_atoms, &
fixd_list=fixd_list) fixd_list=fixd_list)
IF (ASSOCIATED(fixd_list)) THEN IF (ASSOCIATED(fixd_list)) THEN
IF (PRESENT(unit) .AND. unit > 0) THEN IF (PRESENT(unit)) THEN
WRITE (unit, "(/,T2,A,T9,A,T71,I10)") & IF (unit > 0) THEN
"DIMER|", "Number of fixed atoms to adjust dimer vector", nfixed_atoms WRITE (unit, "(/,T2,A,T9,A,T71,I10)") &
"DIMER|", "Number of fixed atoms to adjust dimer vector", nfixed_atoms
END IF
END IF END IF
DO ii = 1, nfixed_atoms DO ii = 1, nfixed_atoms
IF (.NOT. fixd_list(ii)%restraint%active) THEN IF (.NOT. fixd_list(ii)%restraint%active) THEN

View file

@ -91,84 +91,110 @@ CONTAINS
exist = .FALSE. exist = .FALSE.
WRITE (string1, *) icontact IF (my_h00 .OR. my_h01 .OR. my_s00 .OR. my_s01) THEN
WRITE (string2, *) ispin IF (.NOT. PRESENT(icontact)) THEN
CPABORT("Missing contact index for NEGF restart filename")
! try to read from the filename that is generated automatically from the printkey
contact_section => section_vals_get_subs_vals(negf_section, "CONTACT")
print_key => section_vals_get_subs_vals(contact_section, "RESTART", i_rep_section=icontact)
IF (my_h00) THEN
IF (ispin == 0) THEN
middle_name = "N"//TRIM(string1)//"-H00"
ELSE
middle_name = "N"//TRIM(string1)//"-H00-S"//TRIM(string2)
END IF END IF
filename = negf_generate_filename(logger, print_key, middle_name=middle_name, & WRITE (string1, *) icontact
extension=".hs", my_local=.FALSE.)
END IF
IF (my_h01) THEN IF (my_h00 .OR. my_h01) THEN
IF (ispin == 0) THEN IF (.NOT. PRESENT(ispin)) THEN
middle_name = "N"//TRIM(string1)//"-H01" CPABORT("Missing spin index for NEGF restart filename")
ELSE END IF
middle_name = "N"//TRIM(string1)//"-H01-S"//TRIM(string2) WRITE (string2, *) ispin
END IF END IF
filename = negf_generate_filename(logger, print_key, middle_name=middle_name, &
extension=".hs", my_local=.FALSE.)
END IF
IF (my_s00) THEN ! Try to read from the filename that is generated automatically from the print key.
middle_name = "N"//TRIM(string1)//"-S00" contact_section => section_vals_get_subs_vals(negf_section, "CONTACT")
filename = negf_generate_filename(logger, print_key, middle_name=middle_name, & print_key => section_vals_get_subs_vals(contact_section, "RESTART", i_rep_section=icontact)
extension=".hs", my_local=.FALSE.)
END IF
IF (my_s01) THEN IF (my_h00) THEN
middle_name = "N"//TRIM(string1)//"-S01" IF (ispin == 0) THEN
filename = negf_generate_filename(logger, print_key, middle_name=middle_name, & middle_name = "N"//TRIM(string1)//"-H00"
extension=".hs", my_local=.FALSE.) ELSE
END IF middle_name = "N"//TRIM(string1)//"-H00-S"//TRIM(string2)
END IF
! try to read from the filename that is generated automatically from the printkey filename = negf_generate_filename(logger, print_key, middle_name=middle_name, &
print_key => section_vals_get_subs_vals(negf_section, "SCATTERING_REGION%RESTART") extension=".hs", my_local=.FALSE.)
IF (my_h) THEN
IF (ispin == 0) THEN
middle_name = "Hs"
ELSE
middle_name = "Hs-S"//TRIM(string2)
END IF END IF
filename = negf_generate_filename(logger, print_key, middle_name=middle_name, &
extension=".hs", my_local=.FALSE.)
END IF
IF (my_s) THEN IF (my_h01) THEN
middle_name = "Ss" IF (ispin == 0) THEN
filename = negf_generate_filename(logger, print_key, middle_name=middle_name, & middle_name = "N"//TRIM(string1)//"-H01"
extension=".hs", my_local=.FALSE.) ELSE
END IF middle_name = "N"//TRIM(string1)//"-H01-S"//TRIM(string2)
END IF
IF (my_hc) THEN filename = negf_generate_filename(logger, print_key, middle_name=middle_name, &
IF (ispin == 0) THEN extension=".hs", my_local=.FALSE.)
middle_name = "Hsc-N"//TRIM(string1) END IF
ELSE
middle_name = "Hsc-N"//TRIM(string1)//"-S"//TRIM(string2) IF (my_s00) THEN
middle_name = "N"//TRIM(string1)//"-S00"
filename = negf_generate_filename(logger, print_key, middle_name=middle_name, &
extension=".hs", my_local=.FALSE.)
END IF
IF (my_s01) THEN
middle_name = "N"//TRIM(string1)//"-S01"
filename = negf_generate_filename(logger, print_key, middle_name=middle_name, &
extension=".hs", my_local=.FALSE.)
END IF END IF
filename = negf_generate_filename(logger, print_key, middle_name=middle_name, &
extension=".hs", my_local=.FALSE.)
END IF END IF
IF (my_sc) THEN IF (my_h .OR. my_s .OR. my_hc .OR. my_sc) THEN
middle_name = "Ssc-N"//TRIM(string1) IF (my_h .OR. my_hc) THEN
filename = negf_generate_filename(logger, print_key, middle_name=middle_name, & IF (.NOT. PRESENT(ispin)) THEN
extension=".hs", my_local=.FALSE.) CPABORT("Missing spin index for NEGF restart filename")
END IF END IF
WRITE (string2, *) ispin
END IF
! try to read from the filename that is generated automatically from the printkey IF (my_hc .OR. my_sc) THEN
print_key => section_vals_get_subs_vals(negf_section, "PRINT%RESTART") IF (.NOT. PRESENT(icontact)) THEN
CPABORT("Missing contact index for NEGF restart filename")
END IF
WRITE (string1, *) icontact
END IF
! Try to read from the filename that is generated automatically from the print key.
print_key => section_vals_get_subs_vals(negf_section, "SCATTERING_REGION%RESTART")
IF (my_h) THEN
IF (ispin == 0) THEN
middle_name = "Hs"
ELSE
middle_name = "Hs-S"//TRIM(string2)
END IF
filename = negf_generate_filename(logger, print_key, middle_name=middle_name, &
extension=".hs", my_local=.FALSE.)
END IF
IF (my_s) THEN
middle_name = "Ss"
filename = negf_generate_filename(logger, print_key, middle_name=middle_name, &
extension=".hs", my_local=.FALSE.)
END IF
IF (my_hc) THEN
IF (ispin == 0) THEN
middle_name = "Hsc-N"//TRIM(string1)
ELSE
middle_name = "Hsc-N"//TRIM(string1)//"-S"//TRIM(string2)
END IF
filename = negf_generate_filename(logger, print_key, middle_name=middle_name, &
extension=".hs", my_local=.FALSE.)
END IF
IF (my_sc) THEN
middle_name = "Ssc-N"//TRIM(string1)
filename = negf_generate_filename(logger, print_key, middle_name=middle_name, &
extension=".hs", my_local=.FALSE.)
END IF
END IF
IF (my_h_scf) THEN IF (my_h_scf) THEN
! Try to read from the filename that is generated automatically from the print key.
print_key => section_vals_get_subs_vals(negf_section, "PRINT%RESTART")
filename = negf_generate_filename(logger, print_key, & filename = negf_generate_filename(logger, print_key, &
extension="", my_local=.FALSE., iter_string=.TRUE.) extension="", my_local=.FALSE., iter_string=.TRUE.)
END IF END IF
@ -252,14 +278,15 @@ CONTAINS
root = outPath(1:my_ind1)//my_middle_name(2:LEN_TRIM(my_middle_name)) root = outPath(1:my_ind1)//my_middle_name(2:LEN_TRIM(my_middle_name))
END IF END IF
IF (PRESENT(iter_string) .AND. iter_string) THEN postfix = extension
! use the cp_iter_string as a postfix IF (PRESENT(iter_string)) THEN
postfix = "-"//TRIM(cp_iter_string(logger%iter_info, print_key=print_key, for_file=.TRUE.)) IF (iter_string) THEN
IF (TRIM(postfix) == "-") postfix = "" ! use the cp_iter_string as a postfix
! and add the extension postfix = "-"//TRIM(cp_iter_string(logger%iter_info, print_key=print_key, for_file=.TRUE.))
postfix = TRIM(postfix)//extension IF (TRIM(postfix) == "-") postfix = ""
ELSE ! and add the extension
postfix = extension postfix = TRIM(postfix)//extension
END IF
END IF END IF
! and let the logger generate the filename ! and let the logger generate the filename

View file

@ -244,6 +244,7 @@ CONTAINS
INTEGER :: dim_op, handle, i, iatom, imo, imoloc, & INTEGER :: dim_op, handle, i, iatom, imo, imoloc, &
ispin, j, l_spin, lb, nao, naosub, & ispin, j, l_spin, lb, nao, naosub, &
natoms, nmo, nmosub, nspins, s_spin, ub natoms, nmo, nmosub, nspins, s_spin, ub
LOGICAL :: loc_coeff_spin_resolved
REAL(KIND=dp) :: my_occ, occ_imo REAL(KIND=dp) :: my_occ, occ_imo
REAL(KIND=dp), DIMENSION(:), POINTER :: occupations REAL(KIND=dp), DIMENSION(:), POINTER :: occupations
REAL(KIND=dp), DIMENSION(:, :), POINTER :: vecbuffer REAL(KIND=dp), DIMENSION(:, :), POINTER :: vecbuffer
@ -267,13 +268,17 @@ CONTAINS
local_molecules=local_molecules, particle_set=particle_set, & local_molecules=local_molecules, particle_set=particle_set, &
para_env=para_env, mos=mos) para_env=para_env, mos=mos)
nspins = SIZE(mos, 1) nspins = SIZE(mos, 1)
loc_coeff_spin_resolved = .FALSE.
IF (PRESENT(loc_coeff)) THEN
loc_coeff_spin_resolved = nspins*2 == SIZE(loc_coeff)
END IF
s_spin = 1 s_spin = 1
l_spin = nspins l_spin = nspins
IF (PRESENT(myspin)) THEN IF (PRESENT(myspin)) THEN
s_spin = myspin s_spin = myspin
l_spin = myspin l_spin = myspin
END IF END IF
IF (PRESENT(loc_coeff) .AND. nspins*2 == SIZE(loc_coeff)) THEN IF (loc_coeff_spin_resolved) THEN
ALLOCATE (moloc_coeff(s_spin:s_spin + 2*(l_spin - s_spin) + 1)) ALLOCATE (moloc_coeff(s_spin:s_spin + 2*(l_spin - s_spin) + 1))
ELSE ELSE
ALLOCATE (moloc_coeff(s_spin:l_spin)) ALLOCATE (moloc_coeff(s_spin:l_spin))
@ -284,7 +289,7 @@ CONTAINS
nmosub = localized_wfn_control%nloc_states(ispin) nmosub = localized_wfn_control%nloc_states(ispin)
CALL cp_fm_struct_create(tmp_fm_struct, nrow_global=nao, & CALL cp_fm_struct_create(tmp_fm_struct, nrow_global=nao, &
ncol_global=nmosub, para_env=para_env, context=mo_coeff%matrix_struct%context) ncol_global=nmosub, para_env=para_env, context=mo_coeff%matrix_struct%context)
IF (PRESENT(loc_coeff) .AND. nspins*2 == SIZE(loc_coeff)) THEN IF (loc_coeff_spin_resolved) THEN
CALL cp_fm_create(moloc_coeff(2*ispin - 1), tmp_fm_struct) CALL cp_fm_create(moloc_coeff(2*ispin - 1), tmp_fm_struct)
CALL cp_fm_create(moloc_coeff(2*ispin), tmp_fm_struct) CALL cp_fm_create(moloc_coeff(2*ispin), tmp_fm_struct)
ELSE ELSE
@ -359,7 +364,7 @@ CONTAINS
END IF END IF
nmosub = localized_wfn_control%nloc_states(ispin) nmosub = localized_wfn_control%nloc_states(ispin)
IF (PRESENT(loc_coeff) .AND. nspins*2 == SIZE(loc_coeff)) THEN IF (loc_coeff_spin_resolved) THEN
CALL cp_fm_to_fm(loc_coeff(2*ispin - 1), moloc_coeff(2*ispin - 1)) CALL cp_fm_to_fm(loc_coeff(2*ispin - 1), moloc_coeff(2*ispin - 1))
CALL cp_fm_to_fm(loc_coeff(2*ispin), moloc_coeff(2*ispin)) CALL cp_fm_to_fm(loc_coeff(2*ispin), moloc_coeff(2*ispin))
ELSE ELSE

View file

@ -1325,14 +1325,13 @@ CONTAINS
INTEGER :: nimg, nkind, nsgf, natorb, na, n_mix_cols, mix_offset INTEGER :: nimg, nkind, nsgf, natorb, na, n_mix_cols, mix_offset
INTEGER :: n_atom, max_orb, max_shell INTEGER :: n_atom, max_orb, max_shell
INTEGER :: raw_state_status, raw_state_unit INTEGER :: raw_state_status, raw_state_unit
LOGICAL :: discard_mixed_output, do_combined_mixing, do_dipole, do_quadrupole, & LOGICAL :: advance_native_mixer, discard_mixed_output, do_combined_mixing, &
native_sign_mixing, skip_charge_mixing, & do_dipole, do_quadrupole, native_sign_mixing, &
reuse_native_input, skip_scf_dispersion, skip_scf_dispersion_energy, & skip_charge_mixing, reuse_native_input, skip_scf_dispersion, &
seed_native_from_rho, & skip_scf_dispersion_energy, seed_native_from_rho, &
skip_scf_dispersion_gradient, skip_scf_dispersion_potential, & skip_scf_dispersion_gradient, skip_scf_dispersion_potential, &
use_native_mixer, use_no_mixer use_native_mixer, use_no_mixer
REAL(KIND=dp) :: native_seed_charge, norm, moment_alpha, & REAL(KIND=dp) :: native_seed_charge, norm, new_charge, pao
new_charge, pao
#if defined(__TBLITE_DEBUG_DIAGNOSTICS) #if defined(__TBLITE_DEBUG_DIAGNOSTICS)
INTEGER :: debug_status INTEGER :: debug_status
CHARACTER(LEN=32) :: debug_value CHARACTER(LEN=32) :: debug_value
@ -1405,21 +1404,24 @@ CONTAINS
CPABORT("Unknown tblite SCC mixer") CPABORT("Unknown tblite SCC mixer")
END SELECT END SELECT
END IF END IF
IF (use_native_mixer .AND. use_rho .AND. (.NOT. calculate_forces) .AND. & IF (use_native_mixer) THEN
scf_env%iter_count > dft_control%qs_control%xtb_control%tblite_mixer_iterations) THEN IF (.NOT. ASSOCIATED(scf_env)) CPABORT("tblite SCC mixer requires a QS SCF environment")
CPABORT("tblite SCC mixer exceeded TBLITE_MIXER/ITERATIONS") IF (use_rho .AND. (.NOT. calculate_forces)) THEN
END IF IF (scf_env%iter_count > dft_control%qs_control%xtb_control%tblite_mixer_iterations) THEN
IF (use_native_mixer .AND. use_rho .AND. (.NOT. calculate_forces) .AND. & CPABORT("tblite SCC mixer exceeded TBLITE_MIXER/ITERATIONS")
scf_env%iter_count == 1) THEN END IF
CALL tb_configure_mixer(tb, dft_control%qs_control%xtb_control%tblite_mixer_iterations, & IF (scf_env%iter_count == 1) THEN
dft_control%qs_control%xtb_control%tblite_mixer_memory, & CALL tb_configure_mixer(tb, dft_control%qs_control%xtb_control%tblite_mixer_iterations, &
dft_control%qs_control%xtb_control%tblite_mixer_damping, & dft_control%qs_control%xtb_control%tblite_mixer_memory, &
dft_control%qs_control%xtb_control%tblite_mixer_omega0, & dft_control%qs_control%xtb_control%tblite_mixer_damping, &
dft_control%qs_control%xtb_control%tblite_mixer_min_weight, & dft_control%qs_control%xtb_control%tblite_mixer_omega0, &
dft_control%qs_control%xtb_control%tblite_mixer_max_weight, & dft_control%qs_control%xtb_control%tblite_mixer_min_weight, &
dft_control%qs_control%xtb_control%tblite_mixer_weight_factor, & dft_control%qs_control%xtb_control%tblite_mixer_max_weight, &
dft_control%qs_control%xtb_control%tblite_mixer_solver) dft_control%qs_control%xtb_control%tblite_mixer_weight_factor, &
CALL tb_reset_mixer(tb) dft_control%qs_control%xtb_control%tblite_mixer_solver)
CALL tb_reset_mixer(tb)
END IF
END IF
END IF END IF
nspin = dft_control%nspins nspin = dft_control%nspins
IF (nspin /= tb%wfn%nspin) CPABORT("CP2K/tblite spin channel mismatch") IF (nspin /= tb%wfn%nspin) CPABORT("CP2K/tblite spin channel mismatch")
@ -1438,12 +1440,14 @@ CONTAINS
IF (ASSOCIATED(tb%dipbra)) do_dipole = .TRUE. IF (ASSOCIATED(tb%dipbra)) do_dipole = .TRUE.
IF (ASSOCIATED(tb%quadbra)) do_quadrupole = .TRUE. IF (ASSOCIATED(tb%quadbra)) do_quadrupole = .TRUE.
reuse_native_input = .FALSE. reuse_native_input = .FALSE.
IF (use_native_mixer .AND. scf_env%iter_count == 1) THEN IF (use_native_mixer) THEN
reuse_native_input = ANY(ABS(tb%wfn%qsh) > 1.0E-14_dp) IF (scf_env%iter_count == 1) THEN
IF (do_dipole) reuse_native_input = reuse_native_input .OR. & reuse_native_input = ANY(ABS(tb%wfn%qsh) > 1.0E-14_dp)
ANY(ABS(tb%wfn%dpat) > 1.0E-14_dp) IF (do_dipole) reuse_native_input = reuse_native_input .OR. &
IF (do_quadrupole) reuse_native_input = reuse_native_input .OR. & ANY(ABS(tb%wfn%dpat) > 1.0E-14_dp)
ANY(ABS(tb%wfn%qpat) > 1.0E-14_dp) IF (do_quadrupole) reuse_native_input = reuse_native_input .OR. &
ANY(ABS(tb%wfn%qpat) > 1.0E-14_dp)
END IF
END IF END IF
n_atom = SIZE(particle_set) n_atom = SIZE(particle_set)
nkind = SIZE(atomic_kind_set) nkind = SIZE(atomic_kind_set)
@ -1609,7 +1613,11 @@ CONTAINS
IF (use_native_mixer) THEN IF (use_native_mixer) THEN
IF (.NOT. ALLOCATED(tb%mixer)) CPABORT("tblite mixer not initialized") IF (.NOT. ALLOCATED(tb%mixer)) CPABORT("tblite mixer not initialized")
IF (use_rho .AND. (.NOT. calculate_forces) .AND. scf_env%iter_count > 1) THEN advance_native_mixer = .FALSE.
IF (use_rho .AND. (.NOT. calculate_forces)) THEN
advance_native_mixer = scf_env%iter_count > 1
END IF
IF (advance_native_mixer) THEN
CALL tb%mixer%next(error) CALL tb%mixer%next(error)
IF (ALLOCATED(error)) CPABORT("tblite native mixer failed") IF (ALLOCATED(error)) CPABORT("tblite native mixer failed")
CALL tb%mixer%get(tb%wfn%qsh) CALL tb%mixer%get(tb%wfn%qsh)
@ -1840,7 +1848,6 @@ CONTAINS
CALL tb%pot%reset CALL tb%pot%reset
tb%e_es = 0.0_dp tb%e_es = 0.0_dp
tb%e_scd = 0.0_dp tb%e_scd = 0.0_dp
moment_alpha = scf_env%p_mix_alpha
IF (nspin > 1) THEN IF (nspin > 1) THEN
DO iatom = 1, n_atom DO iatom = 1, n_atom
ii = tb%calc%bas%ish_at(iatom) ii = tb%calc%bas%ish_at(iatom)

View file

@ -10,7 +10,7 @@
# ENERGY : LS + KG embed + Harris (Diag) MAO basis # ENERGY : LS + KG embed + Harris (Diag) MAO basis
"2H2O_ecmao.inp" = [{matcher="M011", tol=1e-10, ref=-34.08394572951}] "2H2O_ecmao.inp" = [{matcher="M011", tol=1e-10, ref=-34.08394572951}]
# ENERGY : LS + KG embed + Harris (Diag) MAO basis options # ENERGY : LS + KG embed + Harris (Diag) MAO basis options
"2H2O_ecmao2.inp" = [{matcher="M011", tol=1e-08, ref=-34.45746110722}] "2H2O_ecmao2.inp" = [{matcher="M011", tol=2e-08, ref=-34.45746110722}]
# ENERGY : LS + KG embed + Harris (Diag) dipole # ENERGY : LS + KG embed + Harris (Diag) dipole
"HF_ec_dipole.inp" = [{matcher="M011", tol=1e-08, ref=-24.8917060368}] "HF_ec_dipole.inp" = [{matcher="M011", tol=1e-08, ref=-24.8917060368}]
# ENERGY : LS + KG embed + Harris (Diag) dipole # ENERGY : LS + KG embed + Harris (Diag) dipole

View file

@ -4,13 +4,13 @@
# in case a new directory is added just add it at the top of the list.. # in case a new directory is added just add it at the top of the list..
# the order will be regularly checked and modified... # the order will be regularly checked and modified...
QS/regtest-floquet QS/regtest-floquet
QS/regtest-dft-d4-auto-ref libdftd4 QS/regtest-dft-d4-auto-ref libdftd4 libint !ifx
QS/regtest-dft-d2-auto-ref libint QS/regtest-dft-d2-auto-ref libint !ifx
QS/regtest-dft-d3-auto-ref libint QS/regtest-dft-d3-auto-ref libint !ifx
QS/regtest-dft-d3-bj-auto-ref libint QS/regtest-dft-d3-bj-auto-ref libint !ifx
QS/regtest-dft-d3-lib-ref libint s_dftd3 QS/regtest-dft-d3-lib-ref libint s_dftd3 !ifx
QS/regtest-dft-d3bj-lib-ref libint s_dftd3 QS/regtest-dft-d3bj-lib-ref libint s_dftd3 !ifx
QS/regtest-libgint libGint libint offload_cuda QS/regtest-libgint libGint libint offload_cuda !ifx
QS/regtest-pcc QS/regtest-pcc
QS/regtest-new-pulay-mixing QS/regtest-new-pulay-mixing
QS/regtest-gcscf QS/regtest-gcscf
@ -184,7 +184,7 @@ Fist/regtest-3
MC/regtest MC/regtest
QS/regtest-gw libint !ifx QS/regtest-gw libint !ifx
QS/regtest-kp-1 libint !ifx QS/regtest-kp-1 libint !ifx
QS/regtest-kp-1-spg libint spglib !ifx QS/regtest-kp-1-spg libint spglib !ifx
QS/regtest-kp-1-spglib libint spglib !ifx QS/regtest-kp-1-spglib libint spglib !ifx
QS/regtest-nmr-1 QS/regtest-nmr-1
QS/regtest-nmr-4 QS/regtest-nmr-4
@ -316,8 +316,8 @@ QS/regtest-cdft-4-3
QS/regtest-gpw-6-4 QS/regtest-gpw-6-4
QS/regtest-tddfpt-soc libint !ifx QS/regtest-tddfpt-soc libint !ifx
QS/regtest-dft-vdw-corr-1 QS/regtest-dft-vdw-corr-1
QS/regtest-dft-d3-s-ref s_dftd3 QS/regtest-dft-d3-s-ref s_dftd3
QS/regtest-dft-d3bj-s-ref s_dftd3 QS/regtest-dft-d3bj-s-ref s_dftd3
QS/regtest-cdft-4-2 QS/regtest-cdft-4-2
QS/regtest-hybrid-2 libint !ifx QS/regtest-hybrid-2 libint !ifx
QS/regtest-admm-qps libint !ifx QS/regtest-admm-qps libint !ifx
@ -455,6 +455,6 @@ QS/regtest-trexio trexio
QS/regtest-trexio-2 trexio QS/regtest-trexio-2 trexio
QS/regtest-rtbse-gxac libint greenx !ifx QS/regtest-rtbse-gxac libint greenx !ifx
QS/regtest-cneo QS/regtest-cneo
QS/regtest-tddfpt-bse libint libxc QS/regtest-tddfpt-bse libint libxc !ifx
QS/regtest-tdwf QS/regtest-tdwf
QS/regtest-hybrid-ace-gs libint QS/regtest-hybrid-ace-gs libint !ifx

View file

@ -27,6 +27,7 @@ RUN ./install_cp2k_toolchain.sh \
--with-libsmeagol \ --with-libsmeagol \
--with-libtorch=no \ --with-libtorch=no \
--with-deepmd=no \ --with-deepmd=no \
--with-gauxc=no \
--dry-run --dry-run
# Dry-run leaves behind config files for the followup install scripts. # Dry-run leaves behind config files for the followup install scripts.

View file

@ -27,6 +27,7 @@ RUN ./install_cp2k_toolchain.sh \
--with-libsmeagol \ --with-libsmeagol \
--with-libtorch=no \ --with-libtorch=no \
--with-deepmd=no \ --with-deepmd=no \
--with-gauxc=no \
--dry-run --dry-run
# Dry-run leaves behind config files for the followup install scripts. # Dry-run leaves behind config files for the followup install scripts.

View file

@ -27,6 +27,7 @@ RUN ./install_cp2k_toolchain.sh \
--with-libsmeagol \ --with-libsmeagol \
--with-libtorch=no \ --with-libtorch=no \
--with-deepmd=no \ --with-deepmd=no \
--with-gauxc=no \
--dry-run --dry-run
# Dry-run leaves behind config files for the followup install scripts. # Dry-run leaves behind config files for the followup install scripts.

View file

@ -27,6 +27,7 @@ RUN ./install_cp2k_toolchain.sh \
--with-libsmeagol \ --with-libsmeagol \
--with-libtorch=no \ --with-libtorch=no \
--with-deepmd=no \ --with-deepmd=no \
--with-gauxc=no \
--dry-run --dry-run
# Dry-run leaves behind config files for the followup install scripts. # Dry-run leaves behind config files for the followup install scripts.

View file

@ -551,6 +551,7 @@ FROM {base_image}
with_libsmeagol="", with_libsmeagol="",
with_libtorch="no", with_libtorch="no",
with_deepmd="no", with_deepmd="no",
with_gauxc="no",
) )

View file

@ -90,8 +90,14 @@ elif [[ "${PROFILE}" == "toolchain_intel" ]] && [[ "${VERSION}" == "psmp" ]]; th
cmake \ cmake \
-GNinja \ -GNinja \
-DCMAKE_INSTALL_PREFIX="${INSTALL_PREFIX}" \ -DCMAKE_INSTALL_PREFIX="${INSTALL_PREFIX}" \
-DCP2K_USE_EVERYTHING=OFF \ -DCP2K_USE_EVERYTHING=ON \
-DCP2K_USE_MPI=ON \ -DCP2K_USE_LIBTORCH=OFF \
-DCP2K_USE_OPENPMD=OFF \
-DCP2K_USE_DEEPMD=OFF \
-DCP2K_USE_GAUXC=OFF \
-DCP2K_USE_MIMIC=OFF \
-DCP2K_USE_PEXSI=OFF \
-DCP2K_USE_DLAF=OFF \
-Werror=dev \ -Werror=dev \
.. |& tee ./cmake.log .. |& tee ./cmake.log
CMAKE_EXIT_CODE=$? CMAKE_EXIT_CODE=$?
@ -100,8 +106,14 @@ elif [[ "${PROFILE}" == "toolchain_intel" ]] && [[ "${VERSION}" == "ssmp" ]]; th
cmake \ cmake \
-GNinja \ -GNinja \
-DCMAKE_INSTALL_PREFIX="${INSTALL_PREFIX}" \ -DCMAKE_INSTALL_PREFIX="${INSTALL_PREFIX}" \
-DCP2K_USE_EVERYTHING=OFF \ -DCP2K_USE_EVERYTHING=ON \
-DCP2K_USE_MPI=OFF \ -DCP2K_USE_MPI=OFF \
-DCP2K_USE_LIBTORCH=OFF \
-DCP2K_USE_DEEPMD=OFF \
-DCP2K_USE_GAUXC=OFF \
-DCP2K_USE_MIMIC=OFF \
-DCP2K_USE_PEXSI=OFF \
-DCP2K_USE_DLAF=OFF \
-Werror=dev \ -Werror=dev \
.. |& tee ./cmake.log .. |& tee ./cmake.log
CMAKE_EXIT_CODE=$? CMAKE_EXIT_CODE=$?

View file

@ -34,14 +34,16 @@ case "$with_sirius" in
if [ "$ARCH" = "x86_64" ]; then if [ "$ARCH" = "x86_64" ]; then
if [ "${with_intel}" != "__DONTUSE__" ]; then if [ "${with_intel}" != "__DONTUSE__" ]; then
# Avoid Intel's "-backtrace"
unset CXXFLAGS
SIRIUS_OPT="-DNDEBUG -O2 -g ${MATH_CFLAGS}" SIRIUS_OPT="-DNDEBUG -O2 -g ${MATH_CFLAGS}"
SIRIUS_DBG="-O1 -g ${MATH_CFLAGS}" SIRIUS_DBG="-O1 -g ${MATH_CFLAGS}"
# SIRIUS_DBG and SIRIUS_OPT are not really considered by CMake and rather the CMAKE_BUILD_TYPE matters. # SIRIUS_DBG and SIRIUS_OPT are not really considered by CMake and rather the CMAKE_BUILD_TYPE matters.
# The CMAKE_BUILD_TYPEs "Release" and "RelWithDebInfo" employ -O3/-O2, but already -O2 makes the SIRIUS # The CMAKE_BUILD_TYPEs "Release" and "RelWithDebInfo" employ -O3/-O2, but already -O2 makes the SIRIUS
# build quite memory and time intensive. The CMAKE_BUILD_TYPE "Debug" allows for fast compilation, but it # build quite memory and time intensive. The CMAKE_BUILD_TYPE "Debug" allows for fast compilation, but it
# generates very slow code. # generates very slow code.
# EXTRA_CMAKE_FLAGS="-DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS= ${SIRIUS_DBG}" # EXTRA_CMAKE_FLAGS="-DCMAKE_BUILD_TYPE=Debug ${EXTRA_CMAKE_FLAGS}"
EXTRA_CMAKE_FLAGS="-DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_CXX_FLAGS= ${SIRIUS_OPT}" EXTRA_CMAKE_FLAGS="-DCMAKE_BUILD_TYPE=RelWithDebInfo ${EXTRA_CMAKE_FLAGS}"
else else
SIRIUS_OPT="-O3 -DNDEBUG -mtune=native -ftree-loop-vectorize ${MATH_CFLAGS}" SIRIUS_OPT="-O3 -DNDEBUG -mtune=native -ftree-loop-vectorize ${MATH_CFLAGS}"
SIRIUS_DBG="-O2 -g -mtune=native -ftree-loop-vectorize ${MATH_CFLAGS}" SIRIUS_DBG="-O2 -g -mtune=native -ftree-loop-vectorize ${MATH_CFLAGS}"