diff --git a/tests/TEST_DIRS b/tests/TEST_DIRS index 98cf3a9f49..c90de5bfe9 100644 --- a/tests/TEST_DIRS +++ b/tests/TEST_DIRS @@ -3,276 +3,276 @@ # Directories have been reordered according the execution time needed for a gfortran pdbg run using 2 MPI tasks # in case a new directory is added just add it at the top of the list.. # the order will be regularly checked and modified... -QS/regtest-grid -QS/regtest-corr_dipm -QS/regtest-admm-gapw libint -QS/regtest-rs-dhft libint libxc -QS/regtest-sos-mp2-lr libint -QS/regtest-rpa-lr libint -QS/regtest-mp2-lr libint -QS/regtest-xastdp libint libxc -QS/regtest-gw2x libint libxc -QS/regtest-negf -QS/regtest-negf-fft fftw3 -QS/regtest-ri-rpa-axk libint -QS/regtest-ri-rpa-rse libint -QS/regtest-cdft-hirshfeld-2 parallel mpiranks>1 -QS/regtest-cdft-hirshfeld -SIRIUS/regtest-1 sirius -QS/regtest-embed libint -QS/regtest-pod -QS/regtest-debug-1 -QS/regtest-debug-2 libint -QS/regtest-debug-3 libint -QS/regtest-cdft-diag -xTB/regtest-1 -xTB/regtest-2 -xTB/regtest-3 -xTB/regtest-4 -xTB/regtest-5 -xTB/regtest-debug -QS/regtest-almo-strong -QS/regtest-elpa-2 elpa -QS/regtest-cdft-5 -Pimd/regtest-1 -Pimd/regtest-2 -QS/regtest-mp2-grad libint -QS/regtest-kp-2 -QS/regtest-pao-2 -QS/regtest-tddfpt-2 libint -QS/regtest-tddfpt-3 -QS/regtest-p-efield -QS/regtest-mp2-stress libint -QS/regtest-ri-rpa libint -QS/regtest-kg libxc -QS/regtest-ec libint -QS/regtest-gpw-4 -QS/regtest-gpw-8 -QS/regtest-gpw-2-3 -QS/regtest-sccs-3 -QS/regtest-gpw-5 -QS/regtest-hfx libint -QS/regtest-hfx-2 libint -Fist/regtest-7-1 -QS/regtest-mom-2 libint -QS/regtest-gw libint -QS/regtest-rel -QS/regtest-admm-qps libint -QS/regtest-sccs-1 -QS/regtest-kp-1 libint -QS/regtest-kp-3 -QS/regtest-slab -ATOM/regtest-pseudo -DFTB/regtest-scc -DFTB/regtest-scc-2 -DFTB/regtest-debug -QS/regtest-gpw-3 -QS/regtest-ot -QS/regtest-gpw-1 libint -QS/regtest-ps-implicit-2-1 -QS/regtest-rtp-3 -QS/regtest-dft-vdw-corr-3 libxc -Fist/regtest-opt -QS/regtest-hfx-block libint -QS/regtest-ls-rtp -QMMM/SE/regtest-force-mixing -QS/regtest-xc -QS/regtest-hfx-wfn-fitting libint libxc -QS/regtest-tddfpt -QS/regtest-tddfpt-stda libint -QS/regtest-libxc libxc libint -QS/regtest-ps-implicit-2-2 -QMMM/QS/regtest-1 -QS/regtest-gpw-6-2 -Fist/regtest-12 -QS/regtest-lvlshift -QS/regtest-plus_u -QS/regtest-ps-implicit-1-3 fftw3 -QS/regtest-admm-4 libint -ATOM/regtest-1 -QS/regtest-gw-ic-model libint -QS/regtest-almo-md -QS/regtest-pao-1 -QS/regtest-ri-mp2 libint -QS/regtest-almo-2 -QS/regtest-nonortho -QS/regtest-gapw-4 libint -QMMM/SE/regtest -Fist/regtest-7-2 -QS/regtest-nmr-uks-1 -QS/regtest-hfx-periodic libint -QS/regtest-hybrid-4 libint libxc -QS/regtest-gapw -QS/regtest-nmr-6 -QS/regtest-ot-1 -QMMM/QS/regtest-cdft parallel mpiranks==2||mpiranks==4||mpiranks==6||mpiranks==16||mpiranks==24 -SE/regtest-2-2 -QS/regtest-gapw-1 -QS/regtest-ps-implicit-1-1 fftw3 -QS/regtest-pao-4 -QS/regtest-kind -QS/regtest-polar -Fist/regtest-5 -QS/regtest-nmr-1 -QS/regtest-ot-2 -QS/regtest-almo-1 -Fist/regtest-1-4 -SE/regtest-3-4 -QS/regtest-mp2-3 libint -QS/regtest-sccs-2 -QS/regtest-dm-ls-scf-3 -QS/regtest-hole-funct -MC/regtest -SE/regtest-3-2 -QS/regtest-bs -QS/regtest-dft-filtermat -QS/regtest-nmr-4 -QS/regtest-gpw-7 -Fist/regtest-pol -Fist/regtest-6 -QS/regtest-ps-implicit-1-2 fftw3 -SE/regtest-2-1 -QS/regtest-dft-vdw-corr-2 libxc libint -QS/regtest-sparsity libint -QS/regtest-admm-2 libint -QS/regtest-double-hybrid-2 libint -SE/regtest -QS/regtest-dm-ls-scf-1 -QS/regtest-admm-dm libint -QS/regtest-md-extrap -QS/regtest-double-hybrid-3 libint -QS/regtest-ps-implicit-2-3 -QS/regtest-gpw-2-2 -QS/regtest-epr-1 -Fist/regtest-4 -Fist/regtest-3 QS/regtest-rma libint mpi3 mpiranks==4 -QS/regtest-hybrid-3 libint -Fist/regtest-excl-R -QMMM/QS/regtest-3 -Fist/regtest-excl-G -ATOM/regtest-2 -QS/regtest-lrigpw -QS/regtest-lrigpw-2 -QS/regtest-admm-3 libint -QS/regtest-cdft-3 parallel mpiranks==2||mpiranks==4||mpiranks==6||mpiranks==16||mpiranks==24 -QS/regtest-gw-cubic libint -QS/regtest-double-hybrid-1 libint -QS/regtest-mp2-4 libint -QS/regtest-sym-3 -QS/regtest-gpw-6-4 -LIBTEST LIBTEST/libvori libvori LIBTEST/libbqb libbqb -Fist/regtest-5-vib mpiranks==1||mpiranks==2||mpiranks==4 -QS/regtest-hfx-stress libint -QS/regtest-admm-1 libint -QS/regtest-sym-4 -QS/regtest-sym-2 -QS/regtest-gapw-3 -QS/regtest-sym-5 -QS/regtest-ri-laplace-mp2 libint -QS/regtest-pexsi pexsi -QS/regtest-sym-1 QS/regtest-rma-3D libint mpi3 mpiranks==8 +TMC/regtest_ana_on_the_fly parallel mpiranks>2 +TMC/regtest parallel mpiranks>1 +TMC/regtest_ana_post_proc parallel mpiranks>1 +xTB/regtest-5 +Pimd/regtest-1 +Pimd/regtest-2 +QS/regtest-pao-2 +QS/regtest-embed libint QS/regtest-rpa-cubic-scaling libint -QS/regtest-cdft-4-3 -Fist/regtest-1-2 -Fist/regtest-1-3 -QS/regtest-rtp-2 -QS/regtest-gpw-6-3 +QS/regtest-kp-2 +QS/regtest-admm-gapw libint +DFTB/regtest-scc-2 +QS/regtest-p-efield +QS/regtest-debug-1 +QS/regtest-debug-2 libint +QS/regtest-gpw-4 +SIRIUS/regtest-1 sirius +QS/regtest-pod +QS/regtest-gpw-2-3 +DFTB/regtest-scc +QS/regtest-xastdp libint libxc +QS/regtest-hfx libint +QS/regtest-cdft-diag +QS/regtest-rel +QS/regtest-debug-3 libint +QS/regtest-gw2x libint libxc +QS/regtest-ls-rtp +QS/regtest-admm-qps libint +ATOM/regtest-pseudo +Fist/regtest-7-1 +QMMM/SE/regtest-force-mixing +QS/regtest-gpw-8 +xTB/regtest-1 +QS/regtest-ot +QS/regtest-mp2-grad libint +QS/regtest-plus_u +QS/regtest-gpw-3 +QS/regtest-ps-implicit-1-3 fftw3 +QS/regtest-ec libint +QS/regtest-ps-implicit-2-2 +QS/regtest-rtp-3 +QS/regtest-pao-1 +QMMM/QS/regtest-1 +QS/regtest-ps-implicit-2-1 +QS/regtest-as-1 libint +xTB/regtest-2 +Fist/regtest-12 +QS/regtest-kg libxc +QS/regtest-ri-rpa libint +QS/regtest-nmr-uks-1 +QS/regtest-libxc libxc libint +SE/regtest-3-2 +QS/regtest-gw-cubic libint +QS/regtest-xc +QS/regtest-almo-2 +SE/regtest-2-2 +QS/regtest-kp-1 libint +QS/regtest-ri-rpa-axk libint +QS/regtest-gapw-1 +QS/regtest-hfx-wfn-fitting libint libxc +QS/regtest-lvlshift +QS/regtest-gapw +QMMM/SE/regtest +QS/regtest-hfx-periodic libint +QS/regtest-tddfpt-stda libint +Fist/regtest-opt +QS/regtest-nmr-6 +QS/regtest-gpw-1 libint +QS/regtest-gapw-4 libint +MC/regtest +QS/regtest-ri-mp2 libint +QS/regtest-negf-fft fftw3 +QS/regtest-dft-vdw-corr-3 libxc +QS/regtest-admm-4 libint +xTB/regtest-debug +Fist/regtest-1-4 +QS/regtest-negf +QS/regtest-hfx-ri libint +QS/regtest-almo-md +QS/regtest-tddfpt-2 libint +SE/regtest-2-1 +QS/regtest-lrigpw-2 +QS/regtest-pao-4 +SE/regtest-3-4 +Fist/regtest-pol +QS/regtest-nmr-4 +QMMM/QS/regtest-cdft parallel mpiranks==2||mpiranks==4||mpiranks==6||mpiranks==16||mpiranks==24 +QS/regtest-gw libint +QS/regtest-ps-implicit-1-1 fftw3 +QS/regtest-mp2-stress libint +QS/regtest-rpa-lr libint +QS/regtest-nmr-1 +QS/regtest-ot-1 Fist/regtest-15 -QS/regtest-hybrid-2 libint +QS/regtest-tddfpt-3 +SE/regtest +QS/regtest-dft-vdw-corr-2 libxc libint +QS/regtest-epr-1 +QS/regtest-lrigpw +Fist/regtest-5 +xTB/regtest-3 +Fist/regtest-6 +QS/regtest-hybrid-4 libint libxc +QS/regtest-mom-2 libint +QS/regtest-hfx-block libint +QS/regtest-ps-implicit-1-2 fftw3 +QS/regtest-slab +QS/regtest-admm-1 libint +QS/regtest-gpw-5 +QS/regtest-admm-3 libint +QS/regtest-kind +QS/regtest-gapw-3 +QS/regtest-dm-ls-scf-3 +QS/regtest-ps-implicit-2-3 +QS/regtest-almo-1 +QS/regtest-admm-2 libint +QS/regtest-admm-dm libint +Fist/regtest-5-vib mpiranks==1||mpiranks==2||mpiranks==4 +QS/regtest-pexsi pexsi +QS/regtest-ot-2 +Fist/regtest-7-2 +QS/regtest-mp2-lr libint +QS/regtest-sparsity libint +QS/regtest-polar +QS/regtest-grid +SE/regtest-4 +QS/regtest-nonortho +QS/regtest-hybrid-3 libint +QS/regtest-almo-trustr +QS/regtest-gpw-6-2 +QS/regtest-md-extrap +QS/regtest-gpw-2-2 +QS/regtest-corr_dipm +LIBTEST +QS/regtest-rtp-2 +QS/regtest-hfx-stress libint +Fist/regtest-3 +QS/regtest-dm-ls-scf-1 +QMMM/QS/regtest-2-erf +QS/regtest-nmr-5 +QS/regtest-hole-funct +QS/regtest-sccs-1 +QS/regtest-bs +QS/regtest-tddfpt +QMMM/QS/regtest-3 +QS/regtest-sccs-3 +ATOM/regtest-1 +QS/regtest-ri-laplace-mp2 libint +NNP/regtest-1 +QS/regtest-cdft-5 +QS/regtest-gpw-7 +QS/regtest-sos-mp2-lr libint +Fist/regtest-1-3 +QS/regtest-almo-strong +QS/regtest-stress +QMMM/QS/regtest-2-swave +QS/regtest-cdft-4-3 +QS/regtest-cdft-3 parallel mpiranks==2||mpiranks==4||mpiranks==6||mpiranks==16||mpiranks==24 +Fist/regtest-4 +Fist/regtest-1-2 +QS/regtest-ri-laplace-mp2-cubic libint +QMMM/QS/regtest-image +QS/regtest-gpw-6-4 +QS/regtest-mp2-4 libint +QS/regtest-ot-1-vib mpiranks==1||mpiranks==2||mpiranks==4 +Fist/regtest-2 +QS/regtest-mp2-2 libint +QMMM/QS/regtest-gapw libint QS/regtest-dm-ls-scf-2 +QS/regtest-mp2-3 libint +QS/regtest-hybrid-2 libint +QS/regtest-chi-1 QS/regtest-cdft-4-2 DFTB/regtest-nonscc -Fist/regtest-2 -SE/regtest-4 -QS/regtest-nmr-5 -QMMM/QS/regtest-shell-pol -TMC/regtest_ana_on_the_fly parallel mpiranks>2 -QS/regtest-stress -QS/regtest-hirshfeld -QMMM/QS/regtest-image +QS/regtest-double-hybrid-3 libint +QS/regtest-dft-filtermat +SE/regtest-3-3 +ATOM/regtest-2 NEB/regtest-4 -QS/regtest-meta -QS/regtest-mp2-2 libint -QS/regtest-ot-refine-2 -QS/regtest-gpw-2-1 +QS/regtest-kp-3 +xTB/regtest-4 +QS/regtest-ri-rpa-rse libint QS/regtest-dft-vdw-corr-1 -QMMM/DFTB/regtest +QS/regtest-epr-2 +QS/regtest-gw-ic-model libint +QS/regtest-rs-dhft libint libxc +QS/regtest-meta QMMM/xTB/regtest QS/regtest-gpw-9 libxc -QMMM/QS/regtest-gapw libint -QS/regtest-cdft-4-1 +QS/regtest-double-hybrid-1 libint +QS/regtest-nlmo QMMM/QS/regtest-4 -TMC/regtest parallel mpiranks>1 -Fist/regtest-1-1 -QS/regtest-chi-1 -Fist/regtest-14 -Fist/regtest-10 -QS/regtest-ot-refine -QS/regtest-cdft-1 +Fist/regtest-8 +QS/regtest-cdft-4-1 QMMM/SE/regtest_2 QS/regtest-mp2-1 libint -QS/regtest-gapw-2 -QMMM/QS/regtest-2-erf +QMMM/DFTB/regtest +Fist/regtest-10 +QS/regtest-sccs-2 +QS/regtest-gpw-6-3 +QS/regtest-sym-4 QS/regtest-md-lgvregion -QMMM/QS/regtest-2-swave -Fist/regtest-8 -QS/regtest-cdft-2 +QS/regtest-hirshfeld QS/regtest-almo-eda -Fist/regtest-gauss -SE/regtest-3-3 -QS/regtest-epr-2 -QS/regtest-ot-1-vib mpiranks==1||mpiranks==2||mpiranks==4 -QS/regtest-elpa-qr elpa mpiranks==1||mpiranks==2||mpiranks==4||mpiranks==6||mpiranks==8 -QS/regtest-all-electron -QS/regtest-hybrid-1 libint -FARMING/regtest-1 -TMC/regtest_ana_post_proc parallel mpiranks>1 -FE/regtest-1 -Fist/regtest-9 -QS/regtest-ot-refine-3 -Fist/regtest-11 -QS/regtest-as libint -QS/regtest-rtp-1 -Fist/regtest-13 -QS/regtest-nmr-3 -NEB/regtest-2 -QS/regtest-cdft-3-1 -QS/regtest-mom-1 -NEB/regtest-1 -QS/regtest-pao-3 -optimize_input/regtest-1 -QS/regtest-spin-spin-1 -QS/regtest-properties/resp -QS/regtest-nmr-2 -SE/regtest-3-1 -Fist/regtest-field -FE/regtest-3 -QS/regtest-optbas -QS/regtest-elpa elpa mpiranks==1||mpiranks==2||mpiranks==4||mpiranks==6||mpiranks==8||mpiranks==16 -QS/regtest-linearscaling -SWARM/regtest-glbopt-1 -TAMC/regtest -QS -NEB/regtest-3 -QS/regtest-lsroks -QMMM/QS/regtest-lrigpw -FE/regtest-2 -QS/regtest-fftw fftw3 -Fist/regtest-quip quip -ATOM/regtest-libxc libxc -Fist/regtest-plumed2 plumed2 -QS/regtest-sto -QS/regtest-ri-laplace-mp2-cubic libint +QS/regtest-gpw-2-1 +QS/regtest-cdft-1 +QS/regtest-ot-refine +QS/regtest-gapw-2 QS/regtest-dm-ls-scf-4 -QS/regtest-almo-trustr -QS/regtest-nlmo -QS/regtest-hfx-ri libint -Fist/regtest-gal19 -NNP/regtest-1 -QS/regtest-as-1 libint +Fist/regtest-1-1 +QS/regtest-all-electron +QMMM/QS/regtest-shell-pol +QS/regtest-double-hybrid-2 libint +Fist/regtest-excl-R +Fist/regtest-14 +QS/regtest-cdft-hirshfeld-2 parallel mpiranks>1 +Fist/regtest-excl-G +FE/regtest-1 +QS/regtest-hfx-2 libint +QS/regtest-nmr-3 +QS/regtest-hybrid-1 libint +QS/regtest-rtp-1 +QS/regtest-as libint +QS/regtest-sym-3 +FARMING/regtest-1 +QS/regtest-cdft-2 +QS/regtest-sym-1 +QS/regtest-sym-2 +QS/regtest-ot-refine-2 +NEB/regtest-2 +QS/regtest-nmr-2 +QS/regtest-cdft-3-1 +QS/regtest-cdft-hirshfeld +QS/regtest-optbas +QS/regtest-spin-spin-1 +QS/regtest-elpa-qr elpa mpiranks==1||mpiranks==2||mpiranks==4||mpiranks==6||mpiranks==8 +QS/regtest-ot-refine-3 +QS/regtest-sym-5 +Fist/regtest-9 +QS/regtest-mom-1 +TAMC/regtest +Fist/regtest-13 +NEB/regtest-1 +QS +Fist/regtest-11 +FE/regtest-3 QS/regtest-spgr spglib +QS/regtest-sto +SWARM/regtest-glbopt-1 +QS/regtest-properties/resp +QS/regtest-pao-3 +DFTB/regtest-debug +optimize_input/regtest-1 +FE/regtest-2 +QS/regtest-lsroks +NEB/regtest-3 +QS/regtest-linearscaling +SE/regtest-3-1 +QMMM/QS/regtest-lrigpw +Fist/regtest-field +Fist/regtest-gauss +QS/regtest-elpa-2 elpa +Fist/regtest-gal19 +QS/regtest-fftw fftw3 +QS/regtest-elpa elpa mpiranks==1||mpiranks==2||mpiranks==4||mpiranks==6||mpiranks==8||mpiranks==16 +ATOM/regtest-libxc libxc Fist/regtest-spgr spglib +Fist/regtest-plumed2 plumed2 +Fist/regtest-quip quip diff --git a/tools/docker/scripts/test_python.sh b/tools/docker/scripts/test_python.sh index 31ba7c2982..535342ca7e 100755 --- a/tools/docker/scripts/test_python.sh +++ b/tools/docker/scripts/test_python.sh @@ -25,6 +25,7 @@ echo "" run_test ./tools/prettify/prettify_test.py run_test mypy --strict ./tools/dashboard/generate_dashboard.py run_test mypy --strict ./tools/regtesting/do_regtest.py +run_test mypy --strict ./tools/regtesting/optimize_test_dirs.py # Test generate_dashboard.py. Running it twice to also execute its caching. mkdir -p /workspace/artifacts/dashboard diff --git a/tools/regtesting/optimize_test_dirs.py b/tools/regtesting/optimize_test_dirs.py new file mode 100755 index 0000000000..c444033230 --- /dev/null +++ b/tools/regtesting/optimize_test_dirs.py @@ -0,0 +1,53 @@ +#!/usr/bin/python3 + +# author: Ole Schuett + +import argparse +from pathlib import Path +import re + + +# ====================================================================================== +def main() -> None: + parser = argparse.ArgumentParser(description="Sorts the test dirs by duration.") + parser.add_argument("regtest_report") + args = parser.parse_args() + + report = Path(args.regtest_report).read_text(encoding="utf8") + match = re.search(">>> (.*?)/UNIT\n", report) + assert match + report_basedir = match.group(1) + + timings = {} + for line in re.findall("<<< (.*?)\n", report): + parts = line.split() + name = parts[0][len(report_basedir) + 1 :] + timings[name] = float(parts[6]) + + cp2k_root = Path(__file__).resolve().parent.parent.parent + test_dirs_fn = cp2k_root / "tests" / "TEST_DIRS" + header_lines = [] + test_dir_lines = [] + for line in test_dirs_fn.read_text(encoding="utf8").split("\n"): + if not line.strip(): + pass + elif line.startswith("#"): + header_lines.append(line) + else: + test_dir_lines.append(line) + + def sort_key(line: str) -> float: + return timings.get(line.split()[0], float("inf")) + + test_dir_lines.sort(key=sort_key, reverse=True) + output = "\n".join(header_lines + test_dir_lines) + "\n" + test_dirs_fn.write_text(output, encoding="utf8") + + print(f"Updated {test_dirs_fn}") + + +# ====================================================================================== +if __name__ == "__main__": + main() + +# EOF