From 1c85e77cd7b10e14ad1106983e4d667af03c8a3e Mon Sep 17 00:00:00 2001 From: "Kurt A. O'Hearn" <1138669+ohearnk@users.noreply.github.com> Date: Sat, 19 Oct 2024 11:14:47 -0400 Subject: [PATCH 01/15] Add dependency checks for required tools for the runtest script. Add support for running tests in parallel with GNU parallel (set PARALLEL_TEST_COUNT to activate. Use 2 cores for running serial tests in Github CI workflow. Default to bash shell for runtest script (invoking shell functions for parallel testing with GNU parallel is bash-specific). Deduplicate test info (use single source of info in test/testlist_*.txt files). Enable parallel tests for GPU versions (set both PARALLEL_TEST_COUNT and CUDA_VISIBLE_DEVICES/HIP_VISIBLE_DEVICES). --- .github/workflows/build_test_serial.yml | 6 +- test/testlist_full.txt | 338 ++++---- test/testlist_full_cuda.txt | 169 ---- test/testlist_full_gpu.txt | 169 ++++ test/testlist_short.txt | 50 +- test/testlist_short_cuda.txt | 33 - test/testlist_short_gpu.txt | 33 + tools/runtest | 989 +++++++++++++----------- 8 files changed, 953 insertions(+), 834 deletions(-) delete mode 100644 test/testlist_full_cuda.txt create mode 100644 test/testlist_full_gpu.txt delete mode 100644 test/testlist_short_cuda.txt create mode 100644 test/testlist_short_gpu.txt diff --git a/.github/workflows/build_test_serial.yml b/.github/workflows/build_test_serial.yml index ad724c76..02ef507c 100644 --- a/.github/workflows/build_test_serial.yml +++ b/.github/workflows/build_test_serial.yml @@ -16,7 +16,7 @@ jobs: - name: 'Install Dependencies for Serial Version' run: | sudo apt-get update - sudo apt-get -y install gfortran + sudo apt-get -y install gfortran parallel - name: 'Configure Serial Version' run: ./configure --serial --enablef --prefix $PWD/install gnu - name: 'Build and Install Serial Version Using 2 Jobs' @@ -24,6 +24,7 @@ jobs: - name: 'Setup Environment Variables for Running Tests' run: | echo "QUICK_HOME=$PWD/install" >> "$GITHUB_ENV" + echo "PARALLEL_TEST_COUNT=2" >> "$GITHUB_ENV" - name: 'Run Tests for Serial Version (Make)' run: make fulltest - name: 'Archive Test Results for Serial Version' @@ -45,7 +46,7 @@ jobs: - name: 'Install Dependencies for Serial Version (CMake)' run: | sudo apt-get update - sudo apt-get -y install gfortran cmake + sudo apt-get -y install gfortran cmake parallel - name: 'Configure Serial Version (CMake)' run: | mkdir build @@ -59,6 +60,7 @@ jobs: - name: 'Setup Environment Variables for Running Tests' run: | echo "QUICK_HOME=$PWD/install" >> "$GITHUB_ENV" + echo "PARALLEL_TEST_COUNT=2" >> "$GITHUB_ENV" - name: 'Run Tests for Serial Version' run: | cd install diff --git a/test/testlist_full.txt b/test/testlist_full.txt index 2ef57266..cb2cd5bd 100644 --- a/test/testlist_full.txt +++ b/test/testlist_full.txt @@ -1,169 +1,169 @@ -ene_AlH3_rhf_sto3g #RHF test with STO-3G basis set -ene_BeH2_rhf_sto3g #RHF test with STO-3G basis set -ene_BH3_rhf_sto3g #RHF test with STO-3G basis set -ene_CaCl2_rhf_sto3g #RHF test with STO-3G basis set -ene_CH4_rhf_sto3g #RHF test with STO-3G basis set -ene_H2O_rhf_sto3g #RHF test with STO-3G basis set -ene_HBr_rhf_sto3g #RHF test with STO-3G basis set -ene_HI_rhf_sto3g #RHF test with STO-3G basis set -ene_KCl_rhf_sto3g #RHF test with STO-3G basis set -ene_LiF_rhf_sto3g #RHF test with STO-3G basis set -ene_MgO_rhf_sto3g #RHF test with STO-3G basis set -ene_NaCl_rhf_sto3g #RHF test with STO-3G basis set -ene_NH4_rhf_sto3g #RHF test with STO-3G basis set -ene_PO4_3_rhf_sto3g #RHF test with STO-3G basis set -ene_SiH4_rhf_sto3g #RHF test with STO-3G basis set -ene_SO2_rhf_sto3g #RHF test with STO-3G basis set -ene_AlH3_rhf_321g #RHF test with 3-21G basis set -ene_BeH2_rhf_321g #RHF test with 3-21G basis set -ene_BH3_rhf_321g #RHF test with 3-21G basis set -ene_CaCl2_rhf_321g #RHF test with 3-21G basis set -ene_CH4_rhf_321g #RHF test with 3-21G basis set -ene_H2O_rhf_321g #RHF test with 3-21G basis set -ene_HBr_rhf_321g #RHF test with 3-21G basis set -ene_HI_rhf_321g #RHF test with 3-21G basis set -ene_KCl_rhf_321g #RHF test with 3-21G basis set -ene_LiF_rhf_321g #RHF test with 3-21G basis set -ene_MgO_rhf_321g #RHF test with 3-21G basis set -ene_NaCl_rhf_321g #RHF test with 3-21G basis set -ene_NH4_rhf_321g #RHF test with 3-21G basis set -ene_PO4_3_rhf_321g #RHF test with 3-21G basis set -ene_SiH4_rhf_321g #RHF test with 3-21G basis set -ene_SO2_rhf_321g #RHF test with 3-21G basis set -ene_AlH3_rhf_631g #RHF test with 6-31G basis set -ene_BeH2_rhf_631g #RHF test with 6-31G basis set -ene_BH3_rhf_631g #RHF test with 6-31G basis set -ene_CH4_rhf_631g #RHF test with 6-31G basis set -ene_H2O_rhf_631g #RHF test with 6-31G basis set -ene_LiF_rhf_631g #RHF test with 6-31G basis set -ene_MgO_rhf_631g #RHF test with 6-31G basis set -ene_NaCl_rhf_631g #RHF test with 6-31G basis set -ene_NH4_rhf_631g #RHF test with 6-31G basis set -ene_PO4_3_rhf_631g #RHF test with 6-31G basis set -ene_SiH4_rhf_631g #RHF test with 6-31G basis set -ene_SO2_rhf_631g #RHF test with 6-31G basis set -ene_AlH3_rhf_631gs #RHF test with 6-31G* basis set -ene_BeH2_rhf_631gs #RHF test with 6-31G* basis set -ene_BH3_rhf_631gs #RHF test with 6-31G* basis set -ene_CH4_rhf_631gs #RHF test with 6-31G* basis set -ene_H2O_rhf_631gs #RHF test with 6-31G* basis set -ene_LiF_rhf_631gs #RHF test with 6-31G* basis set -ene_MgO_rhf_631gs #RHF test with 6-31G* basis set -ene_NaCl_rhf_631gs #RHF test with 6-31G* basis set -ene_NH4_rhf_631gs #RHF test with 6-31G* basis set -ene_PO4_3_rhf_631gs #RHF test with 6-31G* basis set -ene_SiH4_rhf_631gs #RHF test with 6-31G* basis set -ene_SO2_rhf_631gs #RHF test with 6-31G* basis set -ene_AlH3_rhf_631gss #RHF test with 6-31G** basis set -ene_BeH2_rhf_631gss #RHF test with 6-31G** basis set -ene_BH3_rhf_631gss #RHF test with 6-31G** basis set -ene_CH4_rhf_631gss #RHF test with 6-31G** basis set -ene_H2O_rhf_631gss #RHF test with 6-31G** basis set -ene_LiF_rhf_631gss #RHF test with 6-31G** basis set -ene_MgO_rhf_631gss #RHF test with 6-31G** basis set -ene_NaCl_rhf_631gss #RHF test with 6-31G** basis set -ene_NH4_rhf_631gss #RHF test with 6-31G** basis set -ene_PO4_3_rhf_631gss #RHF test with 6-31G** basis set -ene_SiH4_rhf_631gss #RHF test with 6-31G** basis set -ene_SO2_rhf_631gss #RHF test with 6-31G** basis set -ene_BeH2_rhf_ccpvdz #RHF test with cc-pVDZ basis set -ene_BH3_rhf_ccpvdz #RHF test with cc-pVDZ basis set -ene_CH4_rhf_ccpvdz #RHF test with cc-pVDZ basis set -ene_H2O_rhf_ccpvdz #RHF test with cc-pVDZ basis set -ene_LiF_rhf_ccpvdz #RHF test with cc-pVDZ basis set -ene_NH4_rhf_ccpvdz #RHF test with cc-pVDZ basis set -grad_AlH3_b3lyp_def2sv_p #DFT test with DEF2-SV(P) basis set -grad_BeH2_b3lyp_def2sv_p #DFT test with DEF2-SV(P) basis set -grad_CH4_b3lyp_def2sv_p #DFT test with DEF2-SV(P) basis set -grad_H2O_b3lyp_def2sv_p #DFT test with DEF2-SV(P) basis set -grad_HBr_b3lyp_def2sv_p #DFT test with DEF2-SV(P) basis set -grad_KCl_b3lyp_def2sv_p #DFT test with DEF2-SV(P) basis set -grad_LiF_b3lyp_def2sv_p #DFT test with DEF2-SV(P) basis set -grad_MgO_b3lyp_def2sv_p #DFT test with DEF2-SV(P) basis set -grad_NaCl_b3lyp_def2sv_p #DFT test with DEF2-SV(P) basis set -grad_NH4_b3lyp_def2sv_p #DFT test with DEF2-SV(P) basis set -grad_PH3_b3lyp_def2sv_p #DFT test with DEF2-SV(P) basis set -grad_SiH4_b3lyp_def2sv_p #DFT test with DEF2-SV(P) basis set -grad_SO2_b3lyp_def2sv_p #DFT test with DEF2-SV(P) basis set -grad_AlH3_b3lyp_def2svp #DFT test with DEF2-SVP basis set -grad_BeH2_b3lyp_def2svp #DFT test with DEF2-SVP basis set -grad_BH3_b3lyp_def2svp #DFT test with DEF2-SVP basis set -grad_CH4_b3lyp_def2svp #DFT test with DEF2-SVP basis set -grad_H2O_b3lyp_def2svp #DFT test with DEF2-SVP basis set -grad_HBr_b3lyp_def2svp #DFT test with DEF2-SVP basis set -grad_KCl_b3lyp_def2svp #DFT test with DEF2-SVP basis set -grad_LiF_b3lyp_def2svp #DFT test with DEF2-SVP basis set -grad_MgO_b3lyp_def2svp #DFT test with DEF2-SVP basis set -grad_NaCl_b3lyp_def2svp #DFT test with DEF2-SVP basis set -grad_NH4_b3lyp_def2svp #DFT test with DEF2-SVP basis set -grad_PH3_b3lyp_def2svp #DFT test with DEF2-SVP basis set -grad_SiH4_b3lyp_def2svp #DFT test with DEF2-SVP basis set -grad_SO2_b3lyp_def2svp #DFT test with DEF2-SVP basis set -grad_AlH3_b3lyp_def2svpd #DFT test with DEF2-SVPD basis set -grad_BeH2_b3lyp_def2svpd #DFT test with DEF2-SVPD basis set -grad_CH4_b3lyp_def2svpd #DFT test with DEF2-SVPD basis set -grad_H2O_b3lyp_def2svpd #DFT test with DEF2-SVPD basis set -grad_KCl_b3lyp_def2svpd #DFT test with DEF2-SVPD basis set -grad_LiF_b3lyp_def2svpd #DFT test with DEF2-SVPD basis set -grad_MgO_b3lyp_def2svpd #DFT test with DEF2-SVPD basis set -grad_NaCl_b3lyp_def2svpd #DFT test with DEF2-SVPD basis set -grad_NH4_b3lyp_def2svpd #DFT test with DEF2-SVPD basis set -grad_PH3_b3lyp_def2svpd #DFT test with DEF2-SVPD basis set -grad_SiH4_b3lyp_def2svpd #DFT test with DEF2-SVPD basis set -grad_SO2_b3lyp_def2svpd #DFT test with DEF2-SVPD basis set -ene_psb5_rhf_631g #RHF test with s and p basis functions -ene_psb5_rhf_631gss #RHF test with s, p and d basis functions -ene_acetone_rhf_321g #RHF test with s and p basis functions -ene_psb3_blyp_631g #BLYP test with s and p basis functions -ene_psb3_blyp_631gss #BLYP test with s, p and d basis functions -ene_psb3_b3lyp_631g #B3LYP test with s and p basis functions -ene_psb3_b3lyp_631gss #B3LYP test with s, p and d basis functions -ene_C2H6_b3lyp_def2tzvp #B3LYP test with s, p, d and f basis functions -ene_psb3_libxc_lda_631g #LIBXC lda functional test -ene_psb3_libxc_gga_631g #LIBXC gga functional test -ene_psb3_libxc_hgga_631g #LIBXC hybrid functional test -ene_wat2_mp2_631g #MP2 test with s and p basis functions -ene_wat2_mp2_631gss #MP2 test with s, p and d basis functions -grad_psb3_b3lyp_631g #B3LYP gradient test with s and p basis functions -grad_psb3_b3lyp_631gss #B3LYP gradient test with s, p and d basis functions -grad_psb3_b3lyp_d3bj_def2svp #B3LYP gradient test with s, p basis functions and DFT-D3 dispersion correction -grad_ch3conhch3_b3lyp_ccpvdz #B3LYP gradient test with s, p and d basis functions -grad_CH4_pbe0_6311g2df2pd #PBE0 gradient test with s, p, d and f basis functions -grad_nma_rhf_def2tzvp #RHF gradient test with s, p, d and f basis functions -grad_ch5nos_b3lyp_6311g #B3LYP gradient test with 6-311G basis set -grad_ch5nos_b3lyp_6311gd #B3LYP gradient test with 6-311G(d) basis set -grad_ch5nos_b3lyp_6311gdp #B3LYP gradient test with 6-311G(d,p) basis set -grad_ch5nos_b3lyp_631plgdp #B3LYP gradient test with 6-31+G(d,p) basis set -grad_ch5nos_b3lyp_631plplgdp #B3LYP gradient test with 6-31++G(d,p) basis set -grad_ch5nos_b3lyp_6311plg2dp #B3LYP gradient test with 6-311+G(2d,p) basis set -grad_ch5nos_b3lyp_6311plplg2d2p #B3LYP gradient test with 6-311++(2d,2p) basis set -grad_ch5nos_b3lyp_pc0 #B3LYP gradient test with PC-0 basis set -grad_ch5nos_b3lyp_pc1 #B3LYP gradient test with PC-1 basis set -grad_ch5nos_b97_631g #B97 gradient test with s and p basis functions -grad_ch5nos_b97-gga1_631g #B97-GGA1 gradient test with s and p basis functions -grad_ch5nos_bp86_631g #BP86 gradient test with s and p basis functions -grad_ch5nos_o3lyp_631g #O3LYP gradient test with s and p basis functions -grad_ch5nos_olyp_631g #OLYP gradient test with s and p basis functions -grad_ch5nos_pbe0_631g #PBE0 gradient test with s and p basis functions -grad_ch5nos_pbe_631g #PBE gradient test with s and p basis functions -grad_ch5nos_pw91_631g #PW91 gradient test with s and p basis functions -grad_ch5nos_revpbe_631g #revPBE gradient test with s and p basis functions -grad_wat_b3lyp_ccpvdz #B3LYP point charge gradient test -grad_c10h9o2s_b3lyp_def2svp #B3LYP point charge gradient test -grad_daspi_meoh_b3lyp_sto3g #B3LYP point charge gradient test -grad_hbdi_meoh_libxc_blyp_sto3g #BLYP point charge gradient test -grad_naip_meoh_libxc_pbeh_sto3g #PBE0 point charge gradient test -grad_ncnaip_b3lyp_sto3g #B3LYP point charge gradient test -grad_rpsb_meoh_rhf_sto3g #RHF point charge gradient test -grad_ohrad_b3lyp_631gss #UDFT B3LYP gradient test -opt_wat_rhf_631g #RHF geometry optimization test with s and p basis functions (Legacy optimizer) -opt_wat_rhf_ccpvdz #RHF geometry optimization test with s, p and d basis functions (Legacy optimizer) -opt_wat_b3lyp_ccpvtz #DFT geometry optimization test with s, p, d and f basis functions (Legacy optimizer) -opt_nh4_pbe0_def2svp #DFT geometry optimization test with s, p and d basis functions (Legacy optimizer) -opt_merad_ub3lyp_631gss #UDFT B3LYP geometry optimization (Legacy optimizer) -opt_hsoh_pbe0_def2svp #DFT PBE0 DL-FIND geometry optimization test with s, p and d basis functions -opt_c3h4_rhf_631g #RHF DL-FIND geometry optimization test with s and p basis functions -opt_caffeine_b3lyp_3-21g #DFT B3LYP DL-FIND geometry optimization test: s and p basis functions (internal coordinates) -opt_c2h5rad_uhf_631gss #UHF DL-FIND geometry optimization: s, p and d basis functions (internal coordinates) -opt_c2hrad_ub3lyp_ccpvdz #UDFT B3LYP DL-FIND geometry test with s, p and d basis functions -api_water_rhf_631g #API test +ene_AlH3_rhf_sto3g #ALH3: RHF energy test: STO-3G basis set +ene_BeH2_rhf_sto3g #BeH2: RHF energy test: STO-3G basis set +ene_BH3_rhf_sto3g #BH3: RHF energy test: STO-3G basis set +ene_CaCl2_rhf_sto3g #CaCl2: RHF energy test: STO-3G basis set +ene_CH4_rhf_sto3g #CH4: RHF energy test: STO-3G basis set +ene_H2O_rhf_sto3g #H2O: RHF energy test: STO-3G basis set +ene_HBr_rhf_sto3g #HBr: RHF energy test: STO-3G basis set +ene_HI_rhf_sto3g #HI: RHF energy test: STO-3G basis set +ene_KCl_rhf_sto3g #KCl: RHF energy test: STO-3G basis set +ene_LiF_rhf_sto3g #LiF: RHF energy test: STO-3G basis set +ene_MgO_rhf_sto3g #MgO: RHF energy test: STO-3G basis set +ene_NaCl_rhf_sto3g #NaCl: RHF energy test: STO-3G basis set +ene_NH4_rhf_sto3g #NH4: RHF energy test: STO-3G basis set +ene_PO4_3_rhf_sto3g #PO4-3: RHF energy test: STO-3G basis set +ene_SiH4_rhf_sto3g #SiH4: RHF energy test: STO-3G basis set +ene_SO2_rhf_sto3g #SO2: RHF energy test: STO-3G basis set +ene_AlH3_rhf_321g #ALH3: RHF energy test: 3-21G basis set +ene_BeH2_rhf_321g #BeH2: RHF energy test: 3-21G basis set +ene_BH3_rhf_321g #BH3: RHF energy test: 3-21G basis set +ene_CaCl2_rhf_321g #CaCl2: RHF energy test: 3-21G basis set +ene_CH4_rhf_321g #CH4: RHF energy test: 3-21G basis set +ene_H2O_rhf_321g #H2O: RHF energy test: 3-21G basis set +ene_HBr_rhf_321g #HBr: RHF energy test: 3-21G basis set +ene_HI_rhf_321g #HI: RHF energy test: 3-21G basis set +ene_KCl_rhf_321g #KCl: RHF energy test: 3-21G basis set +ene_LiF_rhf_321g #LiF: RHF energy test: 3-21G basis set +ene_MgO_rhf_321g #MgO: RHF energy test: 3-21G basis set +ene_NaCl_rhf_321g #NaCl: RHF energy test: 3-21G basis set +ene_NH4_rhf_321g #NH4: RHF energy test: 3-21G basis set +ene_PO4_3_rhf_321g #PO4-3: RHF energy test: 3-21G basis set +ene_SiH4_rhf_321g #SiH4: RHF energy test: 3-21G basis set +ene_SO2_rhf_321g #SO2: RHF energy test: 3-21G basis set +ene_AlH3_rhf_631g #ALH3: RHF energy test: 6-31G basis set +ene_BeH2_rhf_631g #BeH2: RHF energy test: 6-31G basis set +ene_BH3_rhf_631g #BH3: RHF energy test: 6-31G basis set +ene_CH4_rhf_631g #CH4: RHF energy test: 6-31G basis set +ene_H2O_rhf_631g #H2O: RHF energy test: 6-31G basis set +ene_LiF_rhf_631g #LiF: RHF energy test: 6-31G basis set +ene_MgO_rhf_631g #MgO: RHF energy test: 6-31G basis set +ene_NaCl_rhf_631g #NaCl: RHF energy test: 6-31G basis set +ene_NH4_rhf_631g #NH4: RHF energy test: 6-31G basis set +ene_PO4_3_rhf_631g #PO4-3: RHF energy test: 6-31G basis set +ene_SiH4_rhf_631g #SiH4: RHF energy test: 6-31G basis set +ene_SO2_rhf_631g #SO2: RHF energy test: 6-31G basis set +ene_AlH3_rhf_631gs #ALH3: RHF energy test: 6-31G* basis set +ene_BeH2_rhf_631gs #BeH2: RHF energy test: 6-31G* basis set +ene_BH3_rhf_631gs #BH3: RHF energy test: 6-31G* basis set +ene_CH4_rhf_631gs #CH4: RHF energy test: 6-31G* basis set +ene_H2O_rhf_631gs #H2O: RHF energy test: 6-31G* basis set +ene_LiF_rhf_631gs #LiF: RHF energy test: 6-31G* basis set +ene_MgO_rhf_631gs #MgO: RHF energy test: 6-31G* basis set +ene_NaCl_rhf_631gs #NaCl: RHF energy test: 6-31G* basis set +ene_NH4_rhf_631gs #NH4: RHF energy test: 6-31G* basis set +ene_PO4_3_rhf_631gs #PO4-3: RHF energy test: 6-31G* basis set +ene_SiH4_rhf_631gs #SiH4: RHF energy test: 6-31G* basis set +ene_SO2_rhf_631gs #SO2: RHF energy test: 6-31G* basis set +ene_AlH3_rhf_631gss #ALH3: RHF energy test: 6-31G** basis set +ene_BeH2_rhf_631gss #BeH2: RHF energy test: 6-31G** basis set +ene_BH3_rhf_631gss #BH3: RHF energy test: 6-31G** basis set +ene_CH4_rhf_631gss #CH4: RHF energy test: 6-31G** basis set +ene_H2O_rhf_631gss #H2O: RHF energy test: 6-31G** basis set +ene_LiF_rhf_631gss #LiF: RHF energy test: 6-31G** basis set +ene_MgO_rhf_631gss #MgO: RHF energy test: 6-31G** basis set +ene_NaCl_rhf_631gss #NaCl: RHF energy test: 6-31G** basis set +ene_NH4_rhf_631gss #NH4: RHF energy test: 6-31G** basis set +ene_PO4_3_rhf_631gss #PO4-3: RHF energy test: 6-31G** basis set +ene_SiH4_rhf_631gss #SiH4: RHF energy test: 6-31G** basis set +ene_SO2_rhf_631gss #SO2: RHF energy test: 6-31G** basis set +ene_BeH2_rhf_ccpvdz #BeH2: RHF energy test: cc-pVDZ basis set +ene_BH3_rhf_ccpvdz #BH3: RHF energy test: cc-pVDZ basis set +ene_CH4_rhf_ccpvdz #CH4: RHF energy test: cc-pVDZ basis set +ene_H2O_rhf_ccpvdz #H2O: RHF energy test: cc-pVDZ basis set +ene_LiF_rhf_ccpvdz #LiF: RHF energy test: cc-pVDZ basis set +ene_NH4_rhf_ccpvdz #NH4: RHF energy test: cc-pVDZ basis set +grad_AlH3_b3lyp_def2sv_p #ALH3: DFT gradient test: DEF2-SV(P) basis set +grad_BeH2_b3lyp_def2sv_p #BeH2: DFT gradient test: DEF2-SV(P) basis set +grad_CH4_b3lyp_def2sv_p #CH4: DFT gradient test: DEF2-SV(P) basis set +grad_H2O_b3lyp_def2sv_p #H2O: DFT gradient test: DEF2-SV(P) basis set +grad_HBr_b3lyp_def2sv_p #HBr: DFT gradient test: DEF2-SV(P) basis set +grad_KCl_b3lyp_def2sv_p #KCl: DFT gradient test: DEF2-SV(P) basis set +grad_LiF_b3lyp_def2sv_p #LiF: DFT gradient test: DEF2-SV(P) basis set +grad_MgO_b3lyp_def2sv_p #MgO: DFT gradient test: DEF2-SV(P) basis set +grad_NaCl_b3lyp_def2sv_p #NaCl: DFT gradient test: DEF2-SV(P) basis set +grad_NH4_b3lyp_def2sv_p #NH4: DFT gradient test: DEF2-SV(P) basis set +grad_PH3_b3lyp_def2sv_p #PH3: DFT gradient test: DEF2-SV(P) basis set +grad_SiH4_b3lyp_def2sv_p #SiH4: DFT gradient test: DEF2-SV(P) basis set +grad_SO2_b3lyp_def2sv_p #SO2: DFT gradient test: DEF2-SV(P) basis set +grad_AlH3_b3lyp_def2svp #ALH3: DFT gradient test: DEF2-SVP basis set +grad_BeH2_b3lyp_def2svp #BeH2: DFT gradient test: DEF2-SVP basis set +grad_BH3_b3lyp_def2svp #BH3: DFT gradient test: DEF2-SVP basis set +grad_CH4_b3lyp_def2svp #CH4: DFT gradient test: DEF2-SVP basis set +grad_H2O_b3lyp_def2svp #H2O: DFT gradient test: DEF2-SVP basis set +grad_HBr_b3lyp_def2svp #HBr: DFT gradient test: DEF2-SVP basis set +grad_KCl_b3lyp_def2svp #KCl: DFT gradient test: DEF2-SVP basis set +grad_LiF_b3lyp_def2svp #LiF: DFT gradient test: DEF2-SVP basis set +grad_MgO_b3lyp_def2svp #MgO: DFT gradient test: DEF2-SVP basis set +grad_NaCl_b3lyp_def2svp #NaCl: DFT gradient test: DEF2-SVP basis set +grad_NH4_b3lyp_def2svp #NH4: DFT gradient test: DEF2-SVP basis set +grad_PH3_b3lyp_def2svp #PH3: DFT gradient test: DEF2-SVP basis set +grad_SiH4_b3lyp_def2svp #SiH4: DFT gradient test: DEF2-SVP basis set +grad_SO2_b3lyp_def2svp #SO2: DFT gradient test: DEF2-SVP basis set +grad_AlH3_b3lyp_def2svpd #ALH3: DFT gradient test: DEF2-SVPD basis set +grad_BeH2_b3lyp_def2svpd #BeH2: DFT gradient test: DEF2-SVPD basis set +grad_CH4_b3lyp_def2svpd #CH4: DFT gradient test: DEF2-SVPD basis set +grad_H2O_b3lyp_def2svpd #H2O: DFT gradient test: DEF2-SVPD basis set +grad_KCl_b3lyp_def2svpd #KCl: DFT gradient test: DEF2-SVPD basis set +grad_LiF_b3lyp_def2svpd #LiF: DFT gradient test: DEF2-SVPD basis set +grad_MgO_b3lyp_def2svpd #MgO: DFT gradient test: DEF2-SVPD basis set +grad_NaCl_b3lyp_def2svpd #NaCl: DFT gradient test: DEF2-SVPD basis set +grad_NH4_b3lyp_def2svpd #NH4: DFT gradient test: DEF2-SVPD basis set +grad_PH3_b3lyp_def2svpd #PH3: DFT gradient test: DEF2-SVPD basis set +grad_SiH4_b3lyp_def2svpd #SiH4: DFT gradient test: DEF2-SVPD basis set +grad_SO2_b3lyp_def2svpd #SO2: DFT gradient test: DEF2-SVPD basis set +ene_psb5_rhf_631g #PSB5: RHF energy test: s and p basis functions +ene_psb5_rhf_631gss #PSB5: RHF energy test: s, p and d basis functions +ene_acetone_rhf_321g #Acetone: RHF energy test: s and p basis functions +ene_psb3_blyp_631g #PSB3: DFT energy test: s and p basis functions, BLYP functional +ene_psb3_blyp_631gss #PSB3: DFT energy test: s, p and d basis functions, BLYP functional +ene_psb3_b3lyp_631g #PSB3: DFT energy test: s and p basis functions, native B3LYP functional +ene_psb3_b3lyp_631gss #PSB3: DFT energy test: s, p and d basis functions, native B3LYP functional +ene_C2H6_b3lyp_def2tzvp #C2H6: DFT energy test: s, p, d and f basis functions, native B3LYP functional +ene_psb3_libxc_lda_631g #PSB3: DFT energy test: s and p basis functions, libxc LDA functional +ene_psb3_libxc_gga_631g #PSB3: DFT energy test: s and p basis functions, libxc GGA functional +ene_psb3_libxc_hgga_631g #PSB3: DFT energy test: s and p basis functions, libxc hybrid GGA functional +ene_wat2_mp2_631g #Water-2 MP2 energy test: s and p basis functions +ene_wat2_mp2_631gss #Water-2 MP2 energy test: s, p and d basis functions +grad_psb3_b3lyp_631g #PSB3: DFT gradient test: s and p basis functions +grad_psb3_b3lyp_631gss #PSB3: DFT gradient test: s and p and d basis functions +grad_psb3_b3lyp_d3bj_def2svp #PSB3: DFT gradient test: s and p basis functions, DFT-D3 dispersion correction +grad_ch3conhch3_b3lyp_ccpvdz #CH3CONHCH3: DFT gradient test: s and p and d basis functions +grad_CH4_pbe0_6311g2df2pd #CH4: DFT gradient test: s, p, d and f basis functions +grad_nma_rhf_def2tzvp #NMA: RHF gradient test with DEF2-TZVP basis set: s, p, d and f basis functions +grad_ch5nos_b3lyp_6311g #CH5NOS: B3LYP gradient test with 6-311G basis set +grad_ch5nos_b3lyp_6311gd #CH5NOS: B3LYP gradient test with 6-311G(d) basis set +grad_ch5nos_b3lyp_6311gdp #CH5NOS: B3LYP gradient test with 6-311G(d,p) basis set +grad_ch5nos_b3lyp_631plgdp #CH5NOS: B3LYP gradient test with 6-31+G(d,p) basis set +grad_ch5nos_b3lyp_631plplgdp #CH5NOS: B3LYP gradient test with 6-31++G(d,p) basis set +grad_ch5nos_b3lyp_6311plg2dp #CH5NOS: B3LYP gradient test with 6-311+G(2d,p) basis set +grad_ch5nos_b3lyp_6311plplg2d2p #CH5NOS: B3LYP gradient test with 6-311++G(2d,2p) basis set +grad_ch5nos_b3lyp_pc0 #CH5NOS: B3LYP gradient test with PC-0 basis set +grad_ch5nos_b3lyp_pc1 #CH5NOS: B3LYP gradient test with PC-1 basis set +grad_ch5nos_b97_631g #CH5NOS: DFT gradient test: s and p basis functions, B97 functional +grad_ch5nos_b97-gga1_631g #CH5NOS: DFT gradient test: s and p basis functions, B97-GGA1 functional +grad_ch5nos_bp86_631g #CH5NOS: DFT gradient test: s and p basis functions, BP86 functional +grad_ch5nos_o3lyp_631g #CH5NOS: DFT gradient test: s and p basis functions, O3LYP functional +grad_ch5nos_olyp_631g #CH5NOS: DFT gradient test: s and p basis functions, OLYP functional +grad_ch5nos_pbe0_631g #CH5NOS: DFT gradient test: s and p basis functions, PBE0 functional +grad_ch5nos_pbe_631g #CH5NOS: DFT gradient test: s and p basis functions, PBE functional +grad_ch5nos_pw91_631g #CH5NOS: DFT gradient test: s and p basis functions, PW91 functional +grad_ch5nos_revpbe_631g #CH5NOS: DFT gradient test: s and p basis functions, revPBE functional +grad_wat_b3lyp_ccpvdz #Water: DFT point charge gradient test: s and p and d basis functions +grad_c10h9o2s_b3lyp_def2svp #C10H9O2S: DFT point charge gradient test: s and p and d basis functions +grad_daspi_meoh_b3lyp_sto3g #DASPI-DCM: DFT point charge gradient test: s and p basis functions +grad_hbdi_meoh_libxc_blyp_sto3g #HBDI-MeOH: DFT point charge gradient test: s and p basis functions +grad_naip_meoh_libxc_pbeh_sto3g #NAIP-MeOH: DFT point charge gradient test: s and p basis functions +grad_ncnaip_b3lyp_sto3g #NAIP2-MeOH: DFT point charge gradient test: s and p basis functions +grad_rpsb_meoh_rhf_sto3g #RPSB-MeOH: RHF point charge gradient test: s and p basis functions +grad_ohrad_b3lyp_631gss #OH radical: UDFT B3LYP gradient test +opt_wat_rhf_631g #Water: RHF geometry optimization test: s and p basis functions (Legacy optimizer) +opt_wat_rhf_ccpvdz #Water: RHF geometry optimization test: s, p and d basis functions (Legacy optimizer) +opt_wat_b3lyp_ccpvtz #Water: RHF geometry optimization test: s, p, d and f basis functions (Legacy optimizer) +opt_nh4_pbe0_def2svp #NH4+: DFT geometry optimization test: s, p and d basis functions (Legacy optimizer) +opt_merad_ub3lyp_631gss #Caffeine: DFT B3LYP DL-FIND geometry optimization test: s and p basis functions (Baker test set) +opt_hsoh_pbe0_def2svp #Methyl radical: UDFT B3LYP geometry optimization test (Legacy optimizer) +opt_c3h4_rhf_631g #Oxadisulfane: DFT PBE0 DL-FIND geometry optimization test with s, p and d basis functions +opt_caffeine_b3lyp_3-21g #Allene: RHF DL-FIND geometry optimization test with s and p basis functions +opt_c2h5rad_uhf_631gss #Ethyl radical: UHF DL-FIND geometry optimization test +opt_c2hrad_ub3lyp_ccpvdz #Ethynyl radical: UDFT B3LYP DL-FIND geometry optimization test with s, p and d basis functions +api_water_rhf_631g #Water: API test diff --git a/test/testlist_full_cuda.txt b/test/testlist_full_cuda.txt deleted file mode 100644 index c528857d..00000000 --- a/test/testlist_full_cuda.txt +++ /dev/null @@ -1,169 +0,0 @@ -ene_AlH3_rhf_sto3g #RHF test with STO-3G basis set -ene_BeH2_rhf_sto3g #RHF test with STO-3G basis set -ene_BH3_rhf_sto3g #RHF test with STO-3G basis set -ene_CaCl2_rhf_sto3g #RHF test with STO-3G basis set -ene_CH4_rhf_sto3g #RHF test with STO-3G basis set -ene_H2O_rhf_sto3g #RHF test with STO-3G basis set -ene_HBr_rhf_sto3g #RHF test with STO-3G basis set -ene_HI_rhf_sto3g #RHF test with STO-3G basis set -ene_KCl_rhf_sto3g #RHF test with STO-3G basis set -ene_LiF_rhf_sto3g #RHF test with STO-3G basis set -ene_MgO_rhf_sto3g #RHF test with STO-3G basis set -ene_NaCl_rhf_sto3g #RHF test with STO-3G basis set -ene_NH4_rhf_sto3g #RHF test with STO-3G basis set -ene_PO4_3_rhf_sto3g #RHF test with STO-3G basis set -ene_SiH4_rhf_sto3g #RHF test with STO-3G basis set -ene_SO2_rhf_sto3g #RHF test with STO-3G basis set -ene_AlH3_rhf_321g #RHF test with 3-21G basis set -ene_BeH2_rhf_321g #RHF test with 3-21G basis set -ene_BH3_rhf_321g #RHF test with 3-21G basis set -ene_CaCl2_rhf_321g #RHF test with 3-21G basis set -ene_CH4_rhf_321g #RHF test with 3-21G basis set -ene_H2O_rhf_321g #RHF test with 3-21G basis set -ene_HBr_rhf_321g #RHF test with 3-21G basis set -ene_HI_rhf_321g #RHF test with 3-21G basis set -ene_KCl_rhf_321g #RHF test with 3-21G basis set -ene_LiF_rhf_321g #RHF test with 3-21G basis set -ene_MgO_rhf_321g #RHF test with 3-21G basis set -ene_NaCl_rhf_321g #RHF test with 3-21G basis set -ene_NH4_rhf_321g #RHF test with 3-21G basis set -ene_PO4_3_rhf_321g #RHF test with 3-21G basis set -ene_SiH4_rhf_321g #RHF test with 3-21G basis set -ene_SO2_rhf_321g #RHF test with 3-21G basis set -ene_AlH3_rhf_631g #RHF test with 6-31G basis set -ene_BeH2_rhf_631g #RHF test with 6-31G basis set -ene_BH3_rhf_631g #RHF test with 6-31G basis set -ene_CH4_rhf_631g #RHF test with 6-31G basis set -ene_H2O_rhf_631g #RHF test with 6-31G basis set -ene_LiF_rhf_631g #RHF test with 6-31G basis set -ene_MgO_rhf_631g #RHF test with 6-31G basis set -ene_NaCl_rhf_631g #RHF test with 6-31G basis set -ene_NH4_rhf_631g #RHF test with 6-31G basis set -ene_PO4_3_rhf_631g #RHF test with 6-31G basis set -ene_SiH4_rhf_631g #RHF test with 6-31G basis set -ene_SO2_rhf_631g #RHF test with 6-31G basis set -ene_AlH3_rhf_631gs #RHF test with 6-31G* basis set -ene_BeH2_rhf_631gs #RHF test with 6-31G* basis set -ene_BH3_rhf_631gs #RHF test with 6-31G* basis set -ene_CH4_rhf_631gs #RHF test with 6-31G* basis set -ene_H2O_rhf_631gs #RHF test with 6-31G* basis set -ene_LiF_rhf_631gs #RHF test with 6-31G* basis set -ene_MgO_rhf_631gs #RHF test with 6-31G* basis set -ene_NaCl_rhf_631gs #RHF test with 6-31G* basis set -ene_NH4_rhf_631gs #RHF test with 6-31G* basis set -ene_PO4_3_rhf_631gs #RHF test with 6-31G* basis set -ene_SiH4_rhf_631gs #RHF test with 6-31G* basis set -ene_SO2_rhf_631gs #RHF test with 6-31G* basis set -ene_AlH3_rhf_631gss #RHF test with 6-31G** basis set -ene_BeH2_rhf_631gss #RHF test with 6-31G** basis set -ene_BH3_rhf_631gss #RHF test with 6-31G** basis set -ene_CH4_rhf_631gss #RHF test with 6-31G** basis set -ene_H2O_rhf_631gss #RHF test with 6-31G** basis set -ene_LiF_rhf_631gss #RHF test with 6-31G** basis set -ene_MgO_rhf_631gss #RHF test with 6-31G** basis set -ene_NaCl_rhf_631gss #RHF test with 6-31G** basis set -ene_NH4_rhf_631gss #RHF test with 6-31G** basis set -ene_PO4_3_rhf_631gss #RHF test with 6-31G** basis set -ene_SiH4_rhf_631gss #RHF test with 6-31G** basis set -ene_SO2_rhf_631gss #RHF test with 6-31G** basis set -ene_BeH2_rhf_ccpvdz #RHF test with cc-pVDZ basis set -ene_BH3_rhf_ccpvdz #RHF test with cc-pVDZ basis set -ene_CH4_rhf_ccpvdz #RHF test with cc-pVDZ basis set -ene_H2O_rhf_ccpvdz #RHF test with cc-pVDZ basis set -ene_LiF_rhf_ccpvdz #RHF test with cc-pVDZ basis set -ene_NH4_rhf_ccpvdz #RHF test with cc-pVDZ basis set -grad_AlH3_b3lyp_def2sv_p #DFT test with DEF2-SV(P) basis set -grad_BeH2_b3lyp_def2sv_p #DFT test with DEF2-SV(P) basis set -grad_CH4_b3lyp_def2sv_p #DFT test with DEF2-SV(P) basis set -grad_H2O_b3lyp_def2sv_p #DFT test with DEF2-SV(P) basis set -grad_HBr_b3lyp_def2sv_p #DFT test with DEF2-SV(P) basis set -grad_KCl_b3lyp_def2sv_p #DFT test with DEF2-SV(P) basis set -grad_LiF_b3lyp_def2sv_p #DFT test with DEF2-SV(P) basis set -grad_MgO_b3lyp_def2sv_p #DFT test with DEF2-SV(P) basis set -grad_NaCl_b3lyp_def2sv_p #DFT test with DEF2-SV(P) basis set -grad_NH4_b3lyp_def2sv_p #DFT test with DEF2-SV(P) basis set -grad_PH3_b3lyp_def2sv_p #DFT test with DEF2-SV(P) basis set -grad_SiH4_b3lyp_def2sv_p #DFT test with DEF2-SV(P) basis set -grad_SO2_b3lyp_def2sv_p #DFT test with DEF2-SV(P) basis set -grad_AlH3_b3lyp_def2svp #DFT test with DEF2-SVP basis set -grad_BeH2_b3lyp_def2svp #DFT test with DEF2-SVP basis set -grad_BH3_b3lyp_def2svp #DFT test with DEF2-SVP basis set -grad_CH4_b3lyp_def2svp #DFT test with DEF2-SVP basis set -grad_H2O_b3lyp_def2svp #DFT test with DEF2-SVP basis set -grad_HBr_b3lyp_def2svp #DFT test with DEF2-SVP basis set -grad_KCl_b3lyp_def2svp #DFT test with DEF2-SVP basis set -grad_LiF_b3lyp_def2svp #DFT test with DEF2-SVP basis set -grad_MgO_b3lyp_def2svp #DFT test with DEF2-SVP basis set -grad_NaCl_b3lyp_def2svp #DFT test with DEF2-SVP basis set -grad_NH4_b3lyp_def2svp #DFT test with DEF2-SVP basis set -grad_PH3_b3lyp_def2svp #DFT test with DEF2-SVP basis set -grad_SiH4_b3lyp_def2svp #DFT test with DEF2-SVP basis set -grad_SO2_b3lyp_def2svp #DFT test with DEF2-SVP basis set -grad_AlH3_b3lyp_def2svpd #DFT test with DEF2-SVPD basis set -grad_BeH2_b3lyp_def2svpd #DFT test with DEF2-SVPD basis set -grad_CH4_b3lyp_def2svpd #DFT test with DEF2-SVPD basis set -grad_H2O_b3lyp_def2svpd #DFT test with DEF2-SVPD basis set -grad_KCl_b3lyp_def2svpd #DFT test with DEF2-SVPD basis set -grad_LiF_b3lyp_def2svpd #DFT test with DEF2-SVPD basis set -grad_MgO_b3lyp_def2svpd #DFT test with DEF2-SVPD basis set -grad_NaCl_b3lyp_def2svpd #DFT test with DEF2-SVPD basis set -grad_NH4_b3lyp_def2svpd #DFT test with DEF2-SVPD basis set -grad_PH3_b3lyp_def2svpd #DFT test with DEF2-SVPD basis set -grad_SiH4_b3lyp_def2svpd #DFT test with DEF2-SVPD basis set -grad_SO2_b3lyp_def2svpd #DFT test with DEF2-SVPD basis set -ene_psb5_rhf_631g #RHF test with s and p basis functions -ene_psb5_rhf_631gss #RHF test with s, p and d basis functions -ene_acetone_rhf_321g #RHF test with s and p basis functions -ene_psb3_blyp_631g #BLYP test with s and p basis functions -ene_psb3_blyp_631gss #BLYP test with s, p and d basis functions -ene_psb3_b3lyp_631g #B3LYP test with s and p basis functions -ene_psb3_b3lyp_631gss #B3LYP test with s, p and d basis functions -ene_C2H6_b3lyp_def2tzvp #B3LYP test with s, p, d and f basis functions -ene_psb3_libxc_lda_631g #LIBXC lda functional test -ene_psb3_libxc_gga_631g #LIBXC gga functional test -ene_psb3_libxc_hgga_631g #LIBXC hybrid functional test -ene_wat2_mp2_631g #MP2 test with s and p basis functions -ene_wat2_mp2_631gss #MP2 test with s, p and d basis functions -grad_psb3_b3lyp_631g #B3LYP gradient test with s and p basis functions -grad_psb3_b3lyp_631gss #B3LYP gradient test with s, p and d basis functions -grad_psb3_b3lyp_d3bj_def2svp #B3LYP gradient test with s, p basis functions and DFT-D3 dispersion correction -grad_ch3conhch3_b3lyp_ccpvdz #B3LYP gradient test with s, p and d basis functions -grad_CH4_pbe0_6311g2df2pd #PBE0 gradient test with s, p, d and f basis functions -grad_nma_rhf_def2tzvp #RHF gradient test with s, p, d and f basis functions -grad_ch5nos_b3lyp_6311g #B3LYP gradient test with 6-311G basis set -grad_ch5nos_b3lyp_6311gd #B3LYP gradient test with 6-311G(d) basis set -grad_ch5nos_b3lyp_6311gdp #B3LYP gradient test with 6-311G(d,p) basis set -grad_ch5nos_b3lyp_631plgdp #B3LYP gradient test with 6-31+G(d,p) basis set -grad_ch5nos_b3lyp_631plplgdp #B3LYP gradient test with 6-31++G(d,p) basis set -grad_ch5nos_b3lyp_6311plg2dp #B3LYP gradient test with 6-311+G(2d,p) basis set -grad_ch5nos_b3lyp_6311plplg2d2p #B3LYP gradient test with 6-311++(2d,2p) basis set -grad_ch5nos_b3lyp_pc0 #B3LYP gradient test with PC-0 basis set -grad_ch5nos_b3lyp_pc1 #B3LYP gradient test with PC-1 basis set -grad_ch5nos_b97_631g #B97 gradient test with s and p basis functions -grad_ch5nos_b97-gga1_631g #B97-GGA1 gradient test with s and p basis functions -grad_ch5nos_bp86_631g #BP86 gradient test with s and p basis functions -grad_ch5nos_o3lyp_631g #O3LYP gradient test with s and p basis functions -grad_ch5nos_olyp_631g #OLYP gradient test with s and p basis functions -grad_ch5nos_pbe0_631g #PBE0 gradient test with s and p basis functions -grad_ch5nos_pbe_631g #PBE gradient test with s and p basis functions -grad_ch5nos_pw91_631g #PW91 gradient test with s and p basis functions -grad_ch5nos_revpbe_631g #revPBE gradient test with s and p basis functions -grad_wat_b3lyp_ccpvdz #B3LYP point charge gradient test -grad_c10h9o2s_b3lyp_def2svp #B3LYP point charge gradient test -grad_daspi_meoh_b3lyp_6-31g #B3LYP point charge gradient test -grad_hbdi_meoh_libxc_blyp_def2sv_p #BLYP point charge gradient test -grad_naip_meoh_libxc_pbeh_def2svp #PBE0 point charge gradient test -grad_ncnaip_b3lyp_631gss #B3LYP point charge gradient test -grad_rpsb_meoh_rhf_321g #RHF point charge gradient test -grad_ohrad_b3lyp_631gss #UDFT B3LYP gradient test -opt_wat_rhf_631g #RHF geometry optimization test with s and p basis functions (Legacy optimizer) -opt_wat_rhf_ccpvdz #RHF geometry test with s, p and d basis functions (Legacy optimizer) -opt_wat_b3lyp_ccpvtz #DFT geometry test with s, p, d and f basis functions (Legacy optimizer) -opt_nh4_pbe0_def2svp #DFT geometry test with s, p and d basis functions (Legacy optimizer) -opt_merad_ub3lyp_631gss #UDFT B3LYP geometry optimization (Legacy optimizer) -opt_hsoh_pbe0_def2svp #DFT PBE0 DL-FIND geometry test with s, p and d basis functions -opt_c3h4_rhf_631g #RHF DL-Find geometry test with s and p basis functions -opt_caffeine_b3lyp_3-21g #DFT B3LYP DL-FIND geometry optimization test: s and p basis functions (internal coordinates) -opt_c2h5rad_uhf_631gss #UHF DL-FIND geometry optimization -opt_c2hrad_ub3lyp_ccpvdz #UDFT B3LYP DL-FIND geometry test with s, p and d basis functions -api_water_rhf_631g #API test diff --git a/test/testlist_full_gpu.txt b/test/testlist_full_gpu.txt new file mode 100644 index 00000000..6a25ae6c --- /dev/null +++ b/test/testlist_full_gpu.txt @@ -0,0 +1,169 @@ +ene_AlH3_rhf_sto3g #ALH3: RHF energy test: STO-3G basis set +ene_BeH2_rhf_sto3g #BeH2: RHF energy test: STO-3G basis set +ene_BH3_rhf_sto3g #BH3: RHF energy test: STO-3G basis set +ene_CaCl2_rhf_sto3g #CaCl2: RHF energy test: STO-3G basis set +ene_CH4_rhf_sto3g #CH4: RHF energy test: STO-3G basis set +ene_H2O_rhf_sto3g #H2O: RHF energy test: STO-3G basis set +ene_HBr_rhf_sto3g #HBr: RHF energy test: STO-3G basis set +ene_HI_rhf_sto3g #HI: RHF energy test: STO-3G basis set +ene_KCl_rhf_sto3g #KCl: RHF energy test: STO-3G basis set +ene_LiF_rhf_sto3g #LiF: RHF energy test: STO-3G basis set +ene_MgO_rhf_sto3g #MgO: RHF energy test: STO-3G basis set +ene_NaCl_rhf_sto3g #NaCl: RHF energy test: STO-3G basis set +ene_NH4_rhf_sto3g #NH4: RHF energy test: STO-3G basis set +ene_PO4_3_rhf_sto3g #PO4-3: RHF energy test: STO-3G basis set +ene_SiH4_rhf_sto3g #SiH4: RHF energy test: STO-3G basis set +ene_SO2_rhf_sto3g #SO2: RHF energy test: STO-3G basis set +ene_AlH3_rhf_321g #ALH3: RHF energy test: 3-21G basis set +ene_BeH2_rhf_321g #BeH2: RHF energy test: 3-21G basis set +ene_BH3_rhf_321g #BH3: RHF energy test: 3-21G basis set +ene_CaCl2_rhf_321g #CaCl2: RHF energy test: 3-21G basis set +ene_CH4_rhf_321g #CH4: RHF energy test: 3-21G basis set +ene_H2O_rhf_321g #H2O: RHF energy test: 3-21G basis set +ene_HBr_rhf_321g #HBr: RHF energy test: 3-21G basis set +ene_HI_rhf_321g #HI: RHF energy test: 3-21G basis set +ene_KCl_rhf_321g #KCl: RHF energy test: 3-21G basis set +ene_LiF_rhf_321g #LiF: RHF energy test: 3-21G basis set +ene_MgO_rhf_321g #MgO: RHF energy test: 3-21G basis set +ene_NaCl_rhf_321g #NaCl: RHF energy test: 3-21G basis set +ene_NH4_rhf_321g #NH4: RHF energy test: 3-21G basis set +ene_PO4_3_rhf_321g #PO4-3: RHF energy test: 3-21G basis set +ene_SiH4_rhf_321g #SiH4: RHF energy test: 3-21G basis set +ene_SO2_rhf_321g #SO2: RHF energy test: 3-21G basis set +ene_AlH3_rhf_631g #ALH3: RHF energy test: 6-31G basis set +ene_BeH2_rhf_631g #BeH2: RHF energy test: 6-31G basis set +ene_BH3_rhf_631g #BH3: RHF energy test: 6-31G basis set +ene_CH4_rhf_631g #CH4: RHF energy test: 6-31G basis set +ene_H2O_rhf_631g #H2O: RHF energy test: 6-31G basis set +ene_LiF_rhf_631g #LiF: RHF energy test: 6-31G basis set +ene_MgO_rhf_631g #MgO: RHF energy test: 6-31G basis set +ene_NaCl_rhf_631g #NaCl: RHF energy test: 6-31G basis set +ene_NH4_rhf_631g #NH4: RHF energy test: 6-31G basis set +ene_PO4_3_rhf_631g #PO4-3: RHF energy test: 6-31G basis set +ene_SiH4_rhf_631g #SiH4: RHF energy test: 6-31G basis set +ene_SO2_rhf_631g #SO2: RHF energy test: 6-31G basis set +ene_AlH3_rhf_631gs #ALH3: RHF energy test: 6-31G* basis set +ene_BeH2_rhf_631gs #BeH2: RHF energy test: 6-31G* basis set +ene_BH3_rhf_631gs #BH3: RHF energy test: 6-31G* basis set +ene_CH4_rhf_631gs #CH4: RHF energy test: 6-31G* basis set +ene_H2O_rhf_631gs #H2O: RHF energy test: 6-31G* basis set +ene_LiF_rhf_631gs #LiF: RHF energy test: 6-31G* basis set +ene_MgO_rhf_631gs #MgO: RHF energy test: 6-31G* basis set +ene_NaCl_rhf_631gs #NaCl: RHF energy test: 6-31G* basis set +ene_NH4_rhf_631gs #NH4: RHF energy test: 6-31G* basis set +ene_PO4_3_rhf_631gs #PO4-3: RHF energy test: 6-31G* basis set +ene_SiH4_rhf_631gs #SiH4: RHF energy test: 6-31G* basis set +ene_SO2_rhf_631gs #SO2: RHF energy test: 6-31G* basis set +ene_AlH3_rhf_631gss #ALH3: RHF energy test: 6-31G** basis set +ene_BeH2_rhf_631gss #BeH2: RHF energy test: 6-31G** basis set +ene_BH3_rhf_631gss #BH3: RHF energy test: 6-31G** basis set +ene_CH4_rhf_631gss #CH4: RHF energy test: 6-31G** basis set +ene_H2O_rhf_631gss #H2O: RHF energy test: 6-31G** basis set +ene_LiF_rhf_631gss #LiF: RHF energy test: 6-31G** basis set +ene_MgO_rhf_631gss #MgO: RHF energy test: 6-31G** basis set +ene_NaCl_rhf_631gss #NaCl: RHF energy test: 6-31G** basis set +ene_NH4_rhf_631gss #NH4: RHF energy test: 6-31G** basis set +ene_PO4_3_rhf_631gss #PO4-3: RHF energy test: 6-31G** basis set +ene_SiH4_rhf_631gss #SiH4: RHF energy test: 6-31G** basis set +ene_SO2_rhf_631gss #SO2: RHF energy test: 6-31G** basis set +ene_BeH2_rhf_ccpvdz #BeH2: RHF energy test: cc-pVDZ basis set +ene_BH3_rhf_ccpvdz #BH3: RHF energy test: cc-pVDZ basis set +ene_CH4_rhf_ccpvdz #CH4: RHF energy test: cc-pVDZ basis set +ene_H2O_rhf_ccpvdz #H2O: RHF energy test: cc-pVDZ basis set +ene_LiF_rhf_ccpvdz #LiF: RHF energy test: cc-pVDZ basis set +ene_NH4_rhf_ccpvdz #NH4: RHF energy test: cc-pVDZ basis set +grad_AlH3_b3lyp_def2sv_p #ALH3: DFT gradient test: DEF2-SV(P) basis set +grad_BeH2_b3lyp_def2sv_p #BeH2: DFT gradient test: DEF2-SV(P) basis set +grad_CH4_b3lyp_def2sv_p #CH4: DFT gradient test: DEF2-SV(P) basis set +grad_H2O_b3lyp_def2sv_p #H2O: DFT gradient test: DEF2-SV(P) basis set +grad_HBr_b3lyp_def2sv_p #HBr: DFT gradient test: DEF2-SV(P) basis set +grad_KCl_b3lyp_def2sv_p #KCl: DFT gradient test: DEF2-SV(P) basis set +grad_LiF_b3lyp_def2sv_p #LiF: DFT gradient test: DEF2-SV(P) basis set +grad_MgO_b3lyp_def2sv_p #MgO: DFT gradient test: DEF2-SV(P) basis set +grad_NaCl_b3lyp_def2sv_p #NaCl: DFT gradient test: DEF2-SV(P) basis set +grad_NH4_b3lyp_def2sv_p #NH4: DFT gradient test: DEF2-SV(P) basis set +grad_PH3_b3lyp_def2sv_p #PH3: DFT gradient test: DEF2-SV(P) basis set +grad_SiH4_b3lyp_def2sv_p #SiH4: DFT gradient test: DEF2-SV(P) basis set +grad_SO2_b3lyp_def2sv_p #SO2: DFT gradient test: DEF2-SV(P) basis set +grad_AlH3_b3lyp_def2svp #ALH3: DFT gradient test: DEF2-SVP basis set +grad_BeH2_b3lyp_def2svp #BeH2: DFT gradient test: DEF2-SVP basis set +grad_BH3_b3lyp_def2svp #BH3: DFT gradient test: DEF2-SVP basis set +grad_CH4_b3lyp_def2svp #CH4: DFT gradient test: DEF2-SVP basis set +grad_H2O_b3lyp_def2svp #H2O: DFT gradient test: DEF2-SVP basis set +grad_HBr_b3lyp_def2svp #HBr: DFT gradient test: DEF2-SVP basis set +grad_KCl_b3lyp_def2svp #KCl: DFT gradient test: DEF2-SVP basis set +grad_LiF_b3lyp_def2svp #LiF: DFT gradient test: DEF2-SVP basis set +grad_MgO_b3lyp_def2svp #MgO: DFT gradient test: DEF2-SVP basis set +grad_NaCl_b3lyp_def2svp #NaCl: DFT gradient test: DEF2-SVP basis set +grad_NH4_b3lyp_def2svp #NH4: DFT gradient test: DEF2-SVP basis set +grad_PH3_b3lyp_def2svp #PH3: DFT gradient test: DEF2-SVP basis set +grad_SiH4_b3lyp_def2svp #SiH4: DFT gradient test: DEF2-SVP basis set +grad_SO2_b3lyp_def2svp #SO2: DFT gradient test: DEF2-SVP basis set +grad_AlH3_b3lyp_def2svpd #ALH3: DFT gradient test: DEF2-SVPD basis set +grad_BeH2_b3lyp_def2svpd #BeH2: DFT gradient test: DEF2-SVPD basis set +grad_CH4_b3lyp_def2svpd #CH4: DFT gradient test: DEF2-SVPD basis set +grad_H2O_b3lyp_def2svpd #H2O: DFT gradient test: DEF2-SVPD basis set +grad_KCl_b3lyp_def2svpd #KCl: DFT gradient test: DEF2-SVPD basis set +grad_LiF_b3lyp_def2svpd #LiF: DFT gradient test: DEF2-SVPD basis set +grad_MgO_b3lyp_def2svpd #MgO: DFT gradient test: DEF2-SVPD basis set +grad_NaCl_b3lyp_def2svpd #NaCl: DFT gradient test: DEF2-SVPD basis set +grad_NH4_b3lyp_def2svpd #NH4: DFT gradient test: DEF2-SVPD basis set +grad_PH3_b3lyp_def2svpd #PH3: DFT gradient test: DEF2-SVPD basis set +grad_SiH4_b3lyp_def2svpd #SiH4: DFT gradient test: DEF2-SVPD basis set +grad_SO2_b3lyp_def2svpd #SO2: DFT gradient test: DEF2-SVPD basis set +ene_psb5_rhf_631g #PSB5: RHF energy test: s and p basis functions +ene_psb5_rhf_631gss #PSB5: RHF energy test: s, p and d basis functions +ene_acetone_rhf_321g #Acetone: RHF energy test: s and p basis functions +ene_psb3_blyp_631g #PSB3: DFT energy test: s and p basis functions, BLYP functional +ene_psb3_blyp_631gss #PSB3: DFT energy test: s, p and d basis functions, BLYP functional +ene_psb3_b3lyp_631g #PSB3: DFT energy test: s and p basis functions, native B3LYP functional +ene_psb3_b3lyp_631gss #PSB3: DFT energy test: s, p and d basis functions, native B3LYP functional +ene_C2H6_b3lyp_def2tzvp #C2H6: DFT energy test: s, p, d and f basis functions, native B3LYP functional +ene_psb3_libxc_lda_631g #PSB3: DFT energy test: s and p basis functions, libxc LDA functional +ene_psb3_libxc_gga_631g #PSB3: DFT energy test: s and p basis functions, libxc GGA functional +ene_psb3_libxc_hgga_631g #PSB3: DFT energy test: s and p basis functions, libxc hybrid GGA functional +ene_wat2_mp2_631g #Water-2 MP2 energy test: s and p basis functions +ene_wat2_mp2_631gss #Water-2 MP2 energy test: s, p and d basis functions +grad_psb3_b3lyp_631g #PSB3: DFT gradient test: s and p basis functions +grad_psb3_b3lyp_631gss #PSB3: DFT gradient test: s and p and d basis functions +grad_psb3_b3lyp_d3bj_def2svp #PSB3: DFT gradient test: s and p basis functions, DFT-D3 dispersion correction +grad_ch3conhch3_b3lyp_ccpvdz #CH3CONHCH3: DFT gradient test: s and p and d basis functions +grad_CH4_pbe0_6311g2df2pd #CH4: DFT gradient test: s, p, d and f basis functions +grad_nma_rhf_def2tzvp #NMA: RHF gradient test with DEF2-TZVP basis set: s, p, d and f basis functions +grad_ch5nos_b3lyp_6311g #CH5NOS: B3LYP gradient test with 6-311G basis set +grad_ch5nos_b3lyp_6311gd #CH5NOS: B3LYP gradient test with 6-311G(d) basis set +grad_ch5nos_b3lyp_6311gdp #CH5NOS: B3LYP gradient test with 6-311G(d,p) basis set +grad_ch5nos_b3lyp_631plgdp #CH5NOS: B3LYP gradient test with 6-31+G(d,p) basis set +grad_ch5nos_b3lyp_631plplgdp #CH5NOS: B3LYP gradient test with 6-31++G(d,p) basis set +grad_ch5nos_b3lyp_6311plg2dp #CH5NOS: B3LYP gradient test with 6-311+G(2d,p) basis set +grad_ch5nos_b3lyp_6311plplg2d2p #CH5NOS: B3LYP gradient test with 6-311++G(2d,2p) basis set +grad_ch5nos_b3lyp_pc0 #CH5NOS: B3LYP gradient test with PC-0 basis set +grad_ch5nos_b3lyp_pc1 #CH5NOS: B3LYP gradient test with PC-1 basis set +grad_ch5nos_b97_631g #CH5NOS: DFT gradient test: s and p basis functions, B97 functional +grad_ch5nos_b97-gga1_631g #CH5NOS: DFT gradient test: s and p basis functions, B97-GGA1 functional +grad_ch5nos_bp86_631g #CH5NOS: DFT gradient test: s and p basis functions, BP86 functional +grad_ch5nos_o3lyp_631g #CH5NOS: DFT gradient test: s and p basis functions, O3LYP functional +grad_ch5nos_olyp_631g #CH5NOS: DFT gradient test: s and p basis functions, OLYP functional +grad_ch5nos_pbe0_631g #CH5NOS: DFT gradient test: s and p basis functions, PBE0 functional +grad_ch5nos_pbe_631g #CH5NOS: DFT gradient test: s and p basis functions, PBE functional +grad_ch5nos_pw91_631g #CH5NOS: DFT gradient test: s and p basis functions, PW91 functional +grad_ch5nos_revpbe_631g #CH5NOS: DFT gradient test: s and p basis functions, revPBE functional +grad_wat_b3lyp_ccpvdz #Water: DFT point charge gradient test: s and p and d basis functions +grad_c10h9o2s_b3lyp_def2svp #C10H9O2S: DFT point charge gradient test: s and p and d basis functions +grad_daspi_meoh_b3lyp_6-31g #DASPI-DCM: DFT point charge gradient test: s and p basis functions +grad_hbdi_meoh_libxc_blyp_def2sv_p #HBDI-MeOH: DFT point charge gradient test: s and p basis functions +grad_naip_meoh_libxc_pbeh_def2svp #NAIP-MeOH: DFT point charge gradient test: s and p basis functions +grad_ncnaip_b3lyp_631gss #NAIP2-MeOH: DFT point charge gradient test: s and p basis functions +grad_rpsb_meoh_rhf_321g #RPSB-MeOH: RHF point charge gradient test: s and p basis functions +grad_ohrad_b3lyp_631gss #OH radical: UDFT B3LYP gradient test +opt_wat_rhf_631g #Water: RHF geometry optimization test: s and p basis functions (Legacy optimizer) +opt_wat_rhf_ccpvdz #Water: RHF geometry optimization test: s, p and d basis functions (Legacy optimizer) +opt_wat_b3lyp_ccpvtz #Water: RHF geometry optimization test: s, p, d and f basis functions (Legacy optimizer) +opt_nh4_pbe0_def2svp #NH4+: DFT geometry optimization test: s, p and d basis functions (Legacy optimizer) +opt_merad_ub3lyp_631gss #Caffeine: DFT B3LYP DL-FIND geometry optimization test: s and p basis functions (Baker test set) +opt_hsoh_pbe0_def2svp #Methyl radical: UDFT B3LYP geometry optimization test (Legacy optimizer) +opt_c3h4_rhf_631g #Oxadisulfane: DFT PBE0 DL-FIND geometry optimization test with s, p and d basis functions +opt_caffeine_b3lyp_3-21g #Allene: RHF DL-FIND geometry optimization test with s and p basis functions +opt_c2h5rad_uhf_631gss #Ethyl radical: UHF DL-FIND geometry optimization test +opt_c2hrad_ub3lyp_ccpvdz #Ethynyl radical: UDFT B3LYP DL-FIND geometry optimization test with s, p and d basis functions +api_water_rhf_631g #Water: API test diff --git a/test/testlist_short.txt b/test/testlist_short.txt index 1c528f89..64daed6e 100644 --- a/test/testlist_short.txt +++ b/test/testlist_short.txt @@ -1,25 +1,25 @@ -ene_psb5_rhf_631g #RHF test with s and p basis functions -ene_acetone_rhf_321g #RHF test with s and p basis functions -ene_psb3_blyp_631g #BLYP test with s and p basis functions -ene_psb3_blyp_631gss #BLYP test with s, p and d basis functions -ene_psb3_b3lyp_631g #B3LYP test with s and p basis functions -ene_psb3_b3lyp_631gss #B3LYP test with s, p and d basis functions -ene_psb3_libxc_lda_631g #LIBXC lda functional test -ene_psb3_libxc_gga_631g #LIBXC gga functional test -ene_psb3_libxc_hgga_631g #LIBXC hybrid functional test -ene_wat2_mp2_631g #MP2 test with s and p basis functions -ene_wat2_mp2_631gss #MP2 test with s, p and d basis functions -grad_psb3_b3lyp_631g #B3LYP gradient test with s and p basis functions -grad_NaCl_b3lyp_def2svp #B3LYP gradient test with s, p and d basis functions -grad_CH4_pbe0_6311g2df2pd #PBE0 gradient test with s, p, d and f basis functions -grad_wat_b3lyp_ccpvdz #B3LYP point charge gradient test -grad_ohrad_b3lyp_631gss #UDFT B3LYP gradient test -opt_wat_rhf_631g #RHF geometry optimization test with s and p basis functions (Legacy optimizer) -opt_wat_rhf_ccpvdz #RHF geometry optimization test with s, p and d basis functions (Legacy optimizer) -opt_nh4_pbe0_def2svp #DFT geometry optimization test with s, p and d basis functions (Legacy optimizer) -opt_wat_b3lyp_ccpvtz #DFT geometry optimization test with s, p, d and f basis functions (Legacy optimizer) -opt_hsoh_pbe0_def2svp #DFT PBE0 DL-FIND geometry optimization test with s, p and d basis functions -opt_c3h4_rhf_631g #RHF DL-FIND geometry optimization test with s and p basis functions -opt_c2h5rad_uhf_631gss #UHF DL-FIND geometry optimization -opt_c2hrad_ub3lyp_ccpvdz #UDFT B3LYP DL-Find geometry optimization test with s, p and d basis functions -api_water_rhf_631g #API test +ene_psb5_rhf_631g #PSB5: RHF energy test: s and p basis functions +ene_acetone_rhf_321g #Acetone: RHF energy test: s and p basis functions +ene_psb3_blyp_631g #PSB3: DFT energy test: s and p basis functions, BLYP functional +ene_psb3_blyp_631gss #PSB3: DFT energy test: s, p and d basis functions, BLYP functional +ene_psb3_b3lyp_631g #PSB3: DFT energy test: s and p basis functions, native B3LYP functional +ene_psb3_b3lyp_631gss #PSB3: DFT energy test: s, p and d basis functions, native B3LYP functional +ene_psb3_libxc_lda_631g #PSB3: DFT energy test: s and p basis functions, libxc LDA functional +ene_psb3_libxc_gga_631g #PSB3: DFT energy test: s and p basis functions, libxc GGA functional +ene_psb3_libxc_hgga_631g #PSB3: DFT energy test: s and p basis functions, libxc hybrid GGA functional +ene_wat2_mp2_631g #Water-2 MP2 energy test: s and p basis functions +ene_wat2_mp2_631gss #Water-2 MP2 energy test: s, p and d basis functions +grad_psb3_b3lyp_631g #PSB3: DFT gradient test: s and p basis functions +grad_NaCl_b3lyp_def2svp #NaCl: DFT gradient test: DEF2-SVP basis set +grad_CH4_pbe0_6311g2df2pd #CH4: DFT gradient test: s, p, d and f basis functions +grad_wat_b3lyp_ccpvdz #Water: DFT point charge gradient test: s and p and d basis functions +grad_ohrad_b3lyp_631gss #OH radical: UDFT B3LYP gradient test +opt_wat_rhf_631g #Water: RHF geometry optimization test: s and p basis functions (Legacy optimizer) +opt_wat_rhf_ccpvdz #Water: RHF geometry optimization test: s, p and d basis functions (Legacy optimizer) +opt_wat_b3lyp_ccpvtz #Water: RHF geometry optimization test: s, p, d and f basis functions (Legacy optimizer) +opt_nh4_pbe0_def2svp #NH4+: DFT geometry optimization test: s, p and d basis functions (Legacy optimizer) +opt_hsoh_pbe0_def2svp #Methyl radical: UDFT B3LYP geometry optimization test (Legacy optimizer) +opt_c3h4_rhf_631g #Oxadisulfane: DFT PBE0 DL-FIND geometry optimization test with s, p and d basis functions +opt_c2h5rad_uhf_631gss #Ethyl radical: UHF DL-FIND geometry optimization test +opt_c2hrad_ub3lyp_ccpvdz #Ethynyl radical: UDFT B3LYP DL-FIND geometry optimization test with s, p and d basis functions +api_water_rhf_631g #Water: API test diff --git a/test/testlist_short_cuda.txt b/test/testlist_short_cuda.txt deleted file mode 100644 index 76696f6e..00000000 --- a/test/testlist_short_cuda.txt +++ /dev/null @@ -1,33 +0,0 @@ -ene_psb5_rhf_631g #RHF test with s and p basis functions -ene_psb5_rhf_631gss #RHF test with s, p and d basis functions -ene_acetone_rhf_321g #RHF test with s and p basis functions -ene_psb3_blyp_631g #BLYP test with s and p basis functions -ene_psb3_blyp_631gss #BLYP test with s, p and d basis functions -ene_psb3_b3lyp_631g #B3LYP test with s and p basis functions -ene_psb3_b3lyp_631gss #B3LYP test with s, p and d basis functions -ene_C2H6_b3lyp_def2tzvp #B3LYP test with s, p, d and f basis functions -ene_psb3_libxc_lda_631g #LIBXC lda functional test -ene_psb3_libxc_gga_631g #LIBXC gga functional test -ene_psb3_libxc_hgga_631g #LIBXC hybrid functional test -ene_wat2_mp2_631g #MP2 test with s and p basis functions -ene_wat2_mp2_631gss #MP2 test with s, p and d basis functions -grad_psb3_b3lyp_631g #B3LYP gradient test with s and p basis functions -grad_psb3_b3lyp_631gss #B3LYP gradient test with s, p and d basis functions -grad_ch3conhch3_b3lyp_ccpvdz #B3LYP gradient test with s, p and d basis functions -grad_NaCl_b3lyp_def2svp #B3LYP gradient test with s, p and d basis functions -grad_CH4_pbe0_6311g2df2pd #PBE0 gradient test with s, p, d and f basis functions -grad_nma_rhf_def2tzvp #RHF gradient test with s, p, d and f basis functions -grad_wat_b3lyp_ccpvdz #B3LYP point charge gradient test -grad_c10h9o2s_b3lyp_def2svp #B3LYP point charge gradient test -grad_daspi_meoh_b3lyp_6-31g #B3LYP point charge gradient test -grad_rpsb_meoh_rhf_321g #RHF point charge gradient test -grad_ohrad_b3lyp_631gss #UDFT B3LYP gradient test -opt_wat_rhf_631g #RHF geometry optimization test with s and p basis functions (Legacy optimizer) -opt_wat_rhf_ccpvdz #RHF geometry optimization test with s, p and d basis functions (Legacy optimizer) -opt_nh4_pbe0_def2svp #DFT geometry optimization test with s, p and d basis functions (Legacy optimizer) -opt_hsoh_pbe0_def2svp #DFT DL-FIND geometry optimization test with s, p and d basis functions -opt_c3h4_rhf_631g #RHF DL-FIND geometry optimization test with s and p basis functions -opt_caffeine_b3lyp_3-21g #DFT B3LYP DL-FIND geometry optimization test: s and p basis functions (internal coordinates) -opt_c2h5rad_uhf_631gss #UHF DL-FIND geometry optimization -opt_c2hrad_ub3lyp_ccpvdz #UDFT B3LYP DL-FIND geometry optimization test with s, p and d basis functions -api_water_rhf_631g #API test diff --git a/test/testlist_short_gpu.txt b/test/testlist_short_gpu.txt new file mode 100644 index 00000000..408d0656 --- /dev/null +++ b/test/testlist_short_gpu.txt @@ -0,0 +1,33 @@ +ene_psb5_rhf_631g #PSB5: RHF energy test: s and p basis functions +ene_psb5_rhf_631gss #PSB5: RHF energy test: s, p and d basis functions +ene_acetone_rhf_321g #Acetone: RHF energy test: s and p basis functions +ene_psb3_blyp_631g #PSB3: DFT energy test: s and p basis functions, BLYP functional +ene_psb3_blyp_631gss #PSB3: DFT energy test: s, p and d basis functions, BLYP functional +ene_psb3_b3lyp_631g #PSB3: DFT energy test: s and p basis functions, native B3LYP functional +ene_psb3_b3lyp_631gss #PSB3: DFT energy test: s, p and d basis functions, native B3LYP functional +ene_C2H6_b3lyp_def2tzvp #C2H6: DFT energy test: s, p, d and f basis functions, native B3LYP functional +ene_psb3_libxc_lda_631g #PSB3: DFT energy test: s and p basis functions, libxc LDA functional +ene_psb3_libxc_gga_631g #PSB3: DFT energy test: s and p basis functions, libxc GGA functional +ene_psb3_libxc_hgga_631g #PSB3: DFT energy test: s and p basis functions, libxc hybrid GGA functional +ene_wat2_mp2_631g #Water-2 MP2 energy test: s and p basis functions +ene_wat2_mp2_631gss #Water-2 MP2 energy test: s, p and d basis functions +grad_psb3_b3lyp_631g #PSB3: DFT gradient test: s and p basis functions +grad_psb3_b3lyp_631gss #PSB3: DFT gradient test: s and p and d basis functions +grad_ch3conhch3_b3lyp_ccpvdz #CH3CONHCH3: DFT gradient test: s and p and d basis functions +grad_NaCl_b3lyp_def2svp #NaCl: DFT gradient test: DEF2-SVP basis set +grad_CH4_pbe0_6311g2df2pd #CH4: DFT gradient test: s, p, d and f basis functions +grad_nma_rhf_def2tzvp #NMA: RHF gradient test with DEF2-TZVP basis set: s, p, d and f basis functions +grad_wat_b3lyp_ccpvdz #Water: DFT point charge gradient test: s and p and d basis functions +grad_c10h9o2s_b3lyp_def2svp #C10H9O2S: DFT point charge gradient test: s and p and d basis functions +grad_daspi_meoh_b3lyp_6-31g #DASPI-DCM: DFT point charge gradient test: s and p basis functions +grad_rpsb_meoh_rhf_321g #RPSB-MeOH: RHF point charge gradient test: s and p basis functions +grad_ohrad_b3lyp_631gss #OH radical: UDFT B3LYP gradient test +opt_wat_rhf_631g #Water: RHF geometry optimization test: s and p basis functions (Legacy optimizer) +opt_wat_rhf_ccpvdz #Water: RHF geometry optimization test: s, p and d basis functions (Legacy optimizer) +opt_nh4_pbe0_def2svp #NH4+: DFT geometry optimization test: s, p and d basis functions (Legacy optimizer) +opt_hsoh_pbe0_def2svp #Methyl radical: UDFT B3LYP geometry optimization test (Legacy optimizer) +opt_c3h4_rhf_631g #Oxadisulfane: DFT PBE0 DL-FIND geometry optimization test with s, p and d basis functions +opt_caffeine_b3lyp_3-21g #Allene: RHF DL-FIND geometry optimization test with s and p basis functions +opt_c2h5rad_uhf_631gss #Ethyl radical: UHF DL-FIND geometry optimization test +opt_c2hrad_ub3lyp_ccpvdz #Ethynyl radical: UDFT B3LYP DL-FIND geometry optimization test with s, p and d basis functions +api_water_rhf_631g #Water: API test diff --git a/tools/runtest b/tools/runtest index ff660282..192d442a 100755 --- a/tools/runtest +++ b/tools/runtest @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash # !---------------------------------------------------------------------! # ! Written by Madu Manathunga on 07/19/2020 ! @@ -20,19 +20,17 @@ # !---------------------------------------------------------------------! # ! QUICK version ! # !---------------------------------------------------------------------! - QUICK_VERSION='QUICK-24.03' # !---------------------------------------------------------------------! # ! Variable definitions ! # !---------------------------------------------------------------------! - # directories installdir=`pwd` testdir="$installdir/test" qbasisdir="$installdir/basis" qbindir="$installdir/bin" -export QUICK_HOME=$installdir +export QUICK_HOME="$installdir" # executables qexe='' @@ -51,17 +49,10 @@ test_list='' # flag to indicate if mpirun is available ismpirun='no' -# number of cores for mpi tests -ncores=2 - -# flag for a mp2 calculation -ismp2='' +# flag to indicate if GNU parallel is available +has_parallel='no' -# current date time variable -cdate='' -ctime='' - -# test types +# test types to run test_ene='no' test_grad='no' test_opt='no' @@ -78,14 +69,34 @@ ncum_failed_tests=0 # path to api executables apipath='' + # !---------------------------------------------------------------------! # ! Function definitions ! # !---------------------------------------------------------------------! +# This function checks if required dependencies for this script +# exist and are executable. +# +# arguments: required dependencies to check for. +check_for_req_deps() +{ + for prog in $@; do + fullpath=`which $prog` + if [ ! -x "$fullpath" ]; then + if [ ! -f "$fullpath" ]; then + echo "Error: $fullpath not found. Install this program to run this test script." + else + echo "Error: $fullpath found but not executable. Install this program to run this test script." + fi + exit 1; + fi + done +} -# this function prints help page -print_help(){ -echo " +# this function prints help page +print_help() +{ + echo " Use this script as ./runtest [flags] Available flags are: @@ -107,228 +118,51 @@ echo " " -exit 0; - + exit 0; } -print_test_info(){ - - ismp2='no' - testinfo="" - case "$t" in - ene_AlH3_rhf_sto3g) testinfo="ALH3: RHF energy test: STO-3G basis set";; - ene_BeH2_rhf_sto3g) testinfo="BeH2: RHF energy test: STO-3G basis set";; - ene_BH3_rhf_sto3g) testinfo="BH3: RHF energy test: STO-3G basis set";; - ene_CaCl2_rhf_sto3g) testinfo="CaCl2: RHF energy test: STO-3G basis set";; - ene_CH4_rhf_sto3g) testinfo="CH4: RHF energy test: STO-3G basis set";; - ene_H2O_rhf_sto3g) testinfo="H2O: RHF energy test: STO-3G basis set";; - ene_HBr_rhf_sto3g) testinfo="HBr: RHF energy test: STO-3G basis set";; - ene_HI_rhf_sto3g) testinfo="HI: RHF energy test: STO-3G basis set";; - ene_KCl_rhf_sto3g) testinfo="KCl: RHF energy test: STO-3G basis set";; - ene_LiF_rhf_sto3g) testinfo="LiF: RHF energy test: STO-3G basis set";; - ene_MgO_rhf_sto3g) testinfo="MgO: RHF energy test: STO-3G basis set";; - ene_NaCl_rhf_sto3g) testinfo="NaCl: RHF energy test: STO-3G basis set";; - ene_NH4_rhf_sto3g) testinfo="NH4: RHF energy test: STO-3G basis set";; - ene_PO4_3_rhf_sto3g) testinfo="PO4-3: RHF energy test: STO-3G basis set";; - ene_SiH4_rhf_sto3g) testinfo="SiH4: RHF energy test: STO-3G basis set";; - ene_SO2_rhf_sto3g) testinfo="SO2: RHF energy test: STO-3G basis set";; - ene_AlH3_rhf_321g) testinfo="ALH3: RHF energy test: 3-21G basis set";; - ene_BeH2_rhf_321g) testinfo="BeH2: RHF energy test: 3-21G basis set";; - ene_BH3_rhf_321g) testinfo="BH3: RHF energy test: 3-21G basis set";; - ene_CaCl2_rhf_321g) testinfo="CaCl2: RHF energy test: 3-21G basis set";; - ene_CH4_rhf_321g) testinfo="CH4: RHF energy test: 3-21G basis set";; - ene_H2O_rhf_321g) testinfo="H2O: RHF energy test: 3-21G basis set";; - ene_HBr_rhf_321g) testinfo="HBr: RHF energy test: 3-21G basis set";; - ene_HI_rhf_321g) testinfo="HI: RHF energy test: 3-21G basis set";; - ene_KCl_rhf_321g) testinfo="KCl: RHF energy test: 3-21G basis set";; - ene_LiF_rhf_321g) testinfo="LiF: RHF energy test: 3-21G basis set";; - ene_MgO_rhf_321g) testinfo="MgO: RHF energy test: 3-21G basis set";; - ene_NaCl_rhf_321g) testinfo="NaCl: RHF energy test: 3-21G basis set";; - ene_NH4_rhf_321g) testinfo="NH4: RHF energy test: 3-21G basis set";; - ene_PO4_3_rhf_321g) testinfo="PO4-3: RHF energy test: 3-21G basis set";; - ene_SiH4_rhf_321g) testinfo="SiH4: RHF energy test: 3-21G basis set";; - ene_SO2_rhf_321g) testinfo="SO2: RHF energy test: 3-21G basis set";; - ene_AlH3_rhf_631g) testinfo="ALH3: RHF energy test: 6-31G basis set";; - ene_BeH2_rhf_631g) testinfo="BeH2: RHF energy test: 6-31G basis set";; - ene_BH3_rhf_631g) testinfo="BH3: RHF energy test: 6-31G basis set";; - ene_CaCl2_rhf_631g) testinfo="CaCl2: RHF energy test: 6-31G basis set";; # currently disabled - ene_CH4_rhf_631g) testinfo="CH4: RHF energy test: 6-31G basis set";; - ene_H2O_rhf_631g) testinfo="H2O: RHF energy test: 6-31G basis set";; - ene_HBr_rhf_631g) testinfo="HBr: RHF energy test: 6-31G basis set";; # currently disabled - ene_KCl_rhf_631g) testinfo="KCl: RHF energy test: 6-31G basis set";; # currently disabled - ene_LiF_rhf_631g) testinfo="LiF: RHF energy test: 6-31G basis set";; - ene_MgO_rhf_631g) testinfo="MgO: RHF energy test: 6-31G basis set";; - ene_NaCl_rhf_631g) testinfo="NaCl: RHF energy test: 6-31G basis set";; - ene_NH4_rhf_631g) testinfo="NH4: RHF energy test: 6-31G basis set";; - ene_PO4_3_rhf_631g) testinfo="PO4-3: RHF energy test: 6-31G basis set";; - ene_SiH4_rhf_631g) testinfo="SiH4: RHF energy test: 6-31G basis set";; - ene_SO2_rhf_631g) testinfo="SO2: RHF energy test: 6-31G basis set";; - ene_AlH3_rhf_631gs) testinfo="ALH3: RHF energy test: 6-31G* basis set";; - ene_BeH2_rhf_631gs) testinfo="BeH2: RHF energy test: 6-31G* basis set";; - ene_BH3_rhf_631gs) testinfo="BH3: RHF energy test: 6-31G* basis set";; - ene_CaCl2_rhf_631gs) testinfo="CaCl2: RHF energy test: 6-31G* basis set";; # currently disabled - ene_CH4_rhf_631gs) testinfo="CH4: RHF energy test: 6-31G* basis set";; - ene_H2O_rhf_631gs) testinfo="H2O: RHF energy test: 6-31G* basis set";; - ene_HBr_rhf_631gs) testinfo="HBr: RHF energy test: 6-31G* basis set";; # currently disabled - ene_KCl_rhf_631gs) testinfo="KCl: RHF energy test: 6-31G* basis set";; # currently disabled - ene_LiF_rhf_631gs) testinfo="LiF: RHF energy test: 6-31G* basis set";; - ene_MgO_rhf_631gs) testinfo="MgO: RHF energy test: 6-31G* basis set";; - ene_NaCl_rhf_631gs) testinfo="NaCl: RHF energy test: 6-31G* basis set";; - ene_NH4_rhf_631gs) testinfo="NH4: RHF energy test: 6-31G* basis set";; - ene_PO4_3_rhf_631gs) testinfo="PO4-3: RHF energy test: 6-31G* basis set";; - ene_SiH4_rhf_631gs) testinfo="SiH4: RHF energy test: 6-31G* basis set";; - ene_SO2_rhf_631gs) testinfo="SO2: RHF energy test: 6-31G* basis set";; - ene_AlH3_rhf_631gss) testinfo="ALH3: RHF energy test: 6-31G** basis set";; - ene_BeH2_rhf_631gss) testinfo="BeH2: RHF energy test: 6-31G** basis set";; - ene_BH3_rhf_631gss) testinfo="BH3: RHF energy test: 6-31G** basis set";; - ene_CaCl2_rhf_631gss) testinfo="CaCl2: RHF energy test: 6-31G** basis set";; # currently disabled - ene_CH4_rhf_631gss) testinfo="CH4: RHF energy test: 6-31G** basis set";; - ene_H2O_rhf_631gss) testinfo="H2O: RHF energy test: 6-31G** basis set";; - ene_HBr_rhf_631gss) testinfo="HBr: RHF energy test: 6-31G** basis set";; # currently disabled - ene_KCl_rhf_631gss) testinfo="KCl: RHF energy test: 6-31G** basis set";; # currently disabled - ene_LiF_rhf_631gss) testinfo="LiF: RHF energy test: 6-31G** basis set";; - ene_MgO_rhf_631gss) testinfo="MgO: RHF energy test: 6-31G** basis set";; - ene_NaCl_rhf_631gss) testinfo="NaCl: RHF energy test: 6-31G** basis set";; - ene_NH4_rhf_631gss) testinfo="NH4: RHF energy test: 6-31G** basis set";; - ene_PO4_3_rhf_631gss) testinfo="PO4-3: RHF energy test: 6-31G** basis set";; - ene_SiH4_rhf_631gss) testinfo="SiH4: RHF energy test: 6-31G** basis set";; - ene_SO2_rhf_631gss) testinfo="SO2: RHF energy test: 6-31G** basis set";; - ene_AlH3_rhf_ccpvdz) testinfo="ALH3: RHF energy test: cc-pVDZ basis set";; # currently disabled - ene_BeH2_rhf_ccpvdz) testinfo="BeH2: RHF energy test: cc-pVDZ basis set";; - ene_BH3_rhf_ccpvdz) testinfo="BH3: RHF energy test: cc-pVDZ basis set";; - ene_CaCl2_rhf_ccpvdz) testinfo="CaCl2: RHF energy test: cc-pVDZ basis set";; # currently disabled - ene_CH4_rhf_ccpvdz) testinfo="CH4: RHF energy test: cc-pVDZ basis set";; - ene_H2O_rhf_ccpvdz) testinfo="H2O: RHF energy test: cc-pVDZ basis set";; - ene_HBr_rhf_ccpvdz) testinfo="HBr: RHF energy test: cc-pVDZ basis set";; # currently disabled - ene_KCl_rhf_ccpvdz) testinfo="KCl: RHF energy test: cc-pVDZ basis set";; # currently disabled - ene_LiF_rhf_ccpvdz) testinfo="LiF: RHF energy test: cc-pVDZ basis set";; - ene_MgO_rhf_ccpvdz) testinfo="MgO: RHF energy test: cc-pVDZ basis set";; # currently disabled - ene_NaCl_rhf_ccpvdz) testinfo="NaCl: RHF energy test: cc-pVDZ basis set";; # currently disabled - ene_NH4_rhf_ccpvdz) testinfo="NH4: RHF energy test: cc-pVDZ basis set";; - ene_PH3_rhf_ccpvdz) testinfo="PH3: RHF energy test: cc-pVDZ basis set";; # currently disabled - ene_SiH4_rhf_ccpvdz) testinfo="SiH4: RHF energy test: cc-pVDZ basis set";; # currently disabled - ene_SO2_rhf_ccpvdz) testinfo="SO2: RHF energy test: cc-pVDZ basis set";; # currently disabled - grad_AlH3_b3lyp_def2sv_p) testinfo="ALH3: DFT gradient test: DEF2-SV(P) basis set";; - grad_BeH2_b3lyp_def2sv_p) testinfo="BeH2: DFT gradient test: DEF2-SV(P) basis set";; - grad_BH3_b3lyp_def2sv_p) testinfo="BH3: DFT gradient test: DEF2-SV(P) basis set";; # currently disabled - grad_CaCl2_b3lyp_def2sv_p) testinfo="CaCl2: DFT gradient test: DEF2-SV(P) basis set";; # currently disabled - grad_CH4_b3lyp_def2sv_p) testinfo="CH4: DFT gradient test: DEF2-SV(P) basis set";; - grad_H2O_b3lyp_def2sv_p) testinfo="H2O: DFT gradient test: DEF2-SV(P) basis set";; - grad_HBr_b3lyp_def2sv_p) testinfo="HBr: DFT gradient test: DEF2-SV(P) basis set";; - grad_HI_b3lyp_def2sv_p) testinfo="HI: DFT gradient test: DEF2-SV(P) basis set";; # currently disabled - grad_KCl_b3lyp_def2sv_p) testinfo="KCl: DFT gradient test: DEF2-SV(P) basis set";; - grad_LiF_b3lyp_def2sv_p) testinfo="LiF: DFT gradient test: DEF2-SV(P) basis set";; - grad_MgO_b3lyp_def2sv_p) testinfo="MgO: DFT gradient test: DEF2-SV(P) basis set";; - grad_NaCl_b3lyp_def2sv_p) testinfo="NaCl: DFT gradient test: DEF2-SV(P) basis set";; - grad_NH4_b3lyp_def2sv_p) testinfo="NH4: DFT gradient test: DEF2-SV(P) basis set";; - grad_PH3_b3lyp_def2sv_p) testinfo="PH3: DFT gradient test: DEF2-SV(P) basis set";; - grad_SiH4_b3lyp_def2sv_p) testinfo="SiH4: DFT gradient test: DEF2-SV(P) basis set";; - grad_SO2_b3lyp_def2sv_p) testinfo="SO2: DFT gradient test: DEF2-SV(P) basis set";; - grad_AlH3_b3lyp_def2svp) testinfo="ALH3: DFT gradient test: DEF2-SVP basis set";; - grad_BeH2_b3lyp_def2svp) testinfo="BeH2: DFT gradient test: DEF2-SVP basis set";; - grad_BH3_b3lyp_def2svp) testinfo="BH3: DFT gradient test: DEF2-SVP basis set";; - grad_CaCl2_b3lyp_def2svp) testinfo="CaCl2: DFT gradient test: DEF2-SVP basis set";; # currently disabled - grad_CH4_b3lyp_def2svp) testinfo="CH4: DFT gradient test: DEF2-SVP basis set";; - grad_H2O_b3lyp_def2svp) testinfo="H2O: DFT gradient test: DEF2-SVP basis set";; - grad_HBr_b3lyp_def2svp) testinfo="HBr: DFT gradient test: DEF2-SVP basis set";; - grad_HI_b3lyp_def2svp) testinfo="HI: DFT gradient test: DEF2-SVP basis set";; # currently disabled - grad_KCl_b3lyp_def2svp) testinfo="KCl: DFT gradient test: DEF2-SVP basis set";; - grad_LiF_b3lyp_def2svp) testinfo="LiF: DFT gradient test: DEF2-SVP basis set";; - grad_MgO_b3lyp_def2svp) testinfo="MgO: DFT gradient test: DEF2-SVP basis set";; - grad_NaCl_b3lyp_def2svp) testinfo="NaCl: DFT gradient test: DEF2-SVP basis set";; - grad_NH4_b3lyp_def2svp) testinfo="NH4: DFT gradient test: DEF2-SVP basis set";; - grad_PH3_b3lyp_def2svp) testinfo="PH3: DFT gradient test: DEF2-SVP basis set";; - grad_SiH4_b3lyp_def2svp) testinfo="SiH4: DFT gradient test: DEF2-SVP basis set";; - grad_SO2_b3lyp_def2svp) testinfo="SO2: DFT gradient test: DEF2-SVP basis set";; - grad_AlH3_b3lyp_def2svpd) testinfo="ALH3: DFT gradient test: DEF2-SVPD basis set";; - grad_BeH2_b3lyp_def2svpd) testinfo="BeH2: DFT gradient test: DEF2-SVPD basis set";; - grad_BH3_b3lyp_def2svpd) testinfo="BH3: DFT gradient test: DEF2-SVPD basis set";; # currently disabled - grad_CaCl2_b3lyp_def2svpd) testinfo="CaCl2: DFT gradient test: DEF2-SVPD basis set";; # currently disabled - grad_CH4_b3lyp_def2svpd) testinfo="CH4: DFT gradient test: DEF2-SVPD basis set";; - grad_H2O_b3lyp_def2svpd) testinfo="H2O: DFT gradient test: DEF2-SVPD basis set";; - grad_HBr_b3lyp_def2svpd) testinfo="HBr: DFT gradient test: DEF2-SVPD basis set";; # currently disabled - grad_HI_b3lyp_def2svpd) testinfo="HI: DFT gradient test: DEF2-SVPD basis set";; # currently disabled - grad_KCl_b3lyp_def2svpd) testinfo="KCl: DFT gradient test: DEF2-SVPD basis set";; - grad_LiF_b3lyp_def2svpd) testinfo="LiF: DFT gradient test: DEF2-SVPD basis set";; - grad_MgO_b3lyp_def2svpd) testinfo="MgO: DFT gradient test: DEF2-SVPD basis set";; - grad_NaCl_b3lyp_def2svpd) testinfo="NaCl: DFT gradient test: DEF2-SVPD basis set";; - grad_NH4_b3lyp_def2svpd) testinfo="NH4: DFT gradient test: DEF2-SVPD basis set";; - grad_PH3_b3lyp_def2svpd) testinfo="PH3: DFT gradient test: DEF2-SVPD basis set";; - grad_SiH4_b3lyp_def2svpd) testinfo="SiH4: DFT gradient test: DEF2-SVPD basis set";; - grad_SO2_b3lyp_def2svpd) testinfo="SO2: DFT gradient test: DEF2-SVPD basis set";; - ene_psb5_rhf_631g) testinfo="PSB5: RHF energy test: s and p basis functions";; - ene_psb5_rhf_631gss) testinfo="PSB5: RHF energy test: s, p and d basis functions";; - ene_acetone_rhf_321g) testinfo="Acetone: RHF energy test: s and p basis functions";; - ene_psb3_blyp_631g) testinfo="PSB3: DFT energy test: s and p basis functions, BLYP functional";; - ene_psb3_blyp_631gss) testinfo="PSB3: DFT energy test: s, p and d basis functions, BLYP functional";; - ene_psb3_b3lyp_631g) testinfo="PSB3: DFT energy test: s and p basis functions, native B3LYP functional";; - ene_psb3_b3lyp_631gss) testinfo="PSB3: DFT energy test: s, p and d basis functions, native B3LYP functional";; - ene_C2H6_b3lyp_def2tzvp) testinfo="C2H6: DFT energy test: s, p, d and f basis functions, native B3LYP functional";; - ene_psb3_libxc_lda_631g) testinfo="PSB3: DFT energy test: s and p basis functions, libxc LDA functional";; - ene_psb3_libxc_gga_631g) testinfo="PSB3: DFT energy test: s and p basis functions, libxc GGA functional";; - ene_psb3_libxc_hgga_631g) testinfo="PSB3: DFT energy test: s and p basis functions, libxc hybrid GGA functional";; - ene_wat2_mp2_631g) testinfo="Water-2 MP2 energy test: s and p basis functions"; ismp2='yes';; - ene_wat2_mp2_631gss) testinfo="Water-2 MP2 energy test: s, p and d basis functions"; ismp2='yes';; - grad_psb3_b3lyp_631g) testinfo="PSB3: DFT gradient test: s and p basis functions";; - grad_psb3_b3lyp_631gss) testinfo="PSB3: DFT gradient test: s and p and d basis functions";; - grad_psb3_b3lyp_d3bj_def2svp) testinfo="PSB3: DFT gradient test: s and p basis functions, DFT-D3 dispersion correction";; - grad_ch3conhch3_b3lyp_ccpvdz) testinfo="CH3CONHCH3: DFT gradient test: s and p and d basis functions";; - grad_CH4_pbe0_6311g2df2pd) testinfo="CH4: DFT gradient test: s, p, d and f basis functions";; - grad_ch5nos_b3lyp_6311g) testinfo="CH5NOS: B3LYP gradient test with 6-311G basis set";; - grad_ch5nos_b3lyp_6311gd) testinfo="CH5NOS: B3LYP gradient test with 6-311G(d) basis set";; - grad_ch5nos_b3lyp_6311gdp) testinfo="CH5NOS: B3LYP gradient test with 6-311G(d,p) basis set";; - grad_ch5nos_b3lyp_631plgdp) testinfo="CH5NOS: B3LYP gradient test with 6-31+G(d,p) basis set";; - grad_ch5nos_b3lyp_631plplgdp) testinfo="CH5NOS: B3LYP gradient test with 6-31++G(d,p) basis set";; - grad_ch5nos_b3lyp_6311plg2dp) testinfo="CH5NOS: B3LYP gradient test with 6-311+G(2d,p) basis set";; - grad_ch5nos_b3lyp_6311plplg2d2p) testinfo="CH5NOS: B3LYP gradient test with 6-311++G(2d,2p) basis set";; - grad_ch5nos_b3lyp_pc0) testinfo="CH5NOS: B3LYP gradient test with PC-0 basis set";; - grad_ch5nos_b3lyp_pc1) testinfo="CH5NOS: B3LYP gradient test with PC-1 basis set";; - grad_ch5nos_b97_631g) testinfo="CH5NOS: DFT gradient test: s and p basis functions, B97 functional";; - grad_ch5nos_b97-gga1_631g) testinfo="CH5NOS: DFT gradient test: s and p basis functions, B97-GGA1 functional;";; - grad_ch5nos_bp86_631g) testinfo="CH5NOS: DFT gradient test: s and p basis functions, BP86 functional";; - grad_ch5nos_o3lyp_631g) testinfo="CH5NOS: DFT gradient test: s and p basis functions, O3LYP functional";; - grad_ch5nos_olyp_631g) testinfo="CH5NOS: DFT gradient test: s and p basis functions, OLYP functional";; - grad_ch5nos_pbe0_631g) testinfo="CH5NOS: DFT gradient test: s and p basis functions, PBE0 functional";; - grad_ch5nos_pbe_631g) testinfo="CH5NOS: DFT gradient test: s and p basis functions, PBE functional";; - grad_ch5nos_pw91_631g) testinfo="CH5NOS: DFT gradient test: s and p basis functions, PW91 functional";; - grad_ch5nos_revpbe_631g) testinfo="CH5NOS: DFT gradient test: s and p basis functions, revPBE functional";; - grad_nma_rhf_def2tzvp) testinfo="NMA: RHF gradient test with DEF2-TZVP basis set: s, p, d and f basis functions";; - grad_wat_b3lyp_ccpvdz) testinfo="Water: DFT point charge gradient test: s and p and d basis functions";; - grad_c10h9o2s_b3lyp_def2svp) testinfo="C10H9O2S: DFT point charge gradient test: s and p and d basis functions";; - grad_daspi_meoh_b3lyp_sto3g) testinfo="DASPI-DCM: DFT point charge gradient test: s and p basis functions";; - grad_hbdi_meoh_libxc_blyp_sto3g) testinfo="HBDI-MeOH: DFT point charge gradient test: s and p basis functions";; - grad_naip_meoh_libxc_pbeh_sto3g) testinfo="NAIP-MeOH: DFT point charge gradient test: s and p basis functions";; - grad_ncnaip_b3lyp_sto3g) testinfo="NAIP2-MeOH: DFT point charge gradient test: s and p basis functions";; - grad_rpsb_meoh_rhf_sto3g) testinfo="RPSB-MeOH: RHF point charge gradient test: s and p basis functions";; - grad_daspi_meoh_b3lyp_6-31g) testinfo="DASPI-DCM: DFT point charge gradient test: s and p basis functions";; - grad_hbdi_meoh_libxc_blyp_def2sv_p) testinfo="HBDI-MeOH: DFT point charge gradient test: s and p basis functions";; - grad_naip_meoh_libxc_pbeh_def2svp) testinfo="NAIP-MeOH: DFT point charge gradient test: s and p basis functions";; - grad_ncnaip_b3lyp_631gss) testinfo="NAIP2-MeOH: DFT point charge gradient test: s and p basis functions";; - grad_rpsb_meoh_rhf_321g) testinfo="RPSB-MeOH: RHF point charge gradient test: s and p basis functions";; - grad_ohrad_b3lyp_631gss) testinfo="OH radical: UDFT B3LYP gradient test";; - opt_wat_rhf_631g) testinfo="Water: RHF geometry optimization test: s and p basis functions (Legacy optimizer)";; - opt_wat_rhf_ccpvdz) testinfo="Water: RHF geometry optimization test: s, p and d basis functions (Legacy optimizer)";; - opt_wat_b3lyp_ccpvtz) testinfo="Water: RHF geometry optimization test: s, p, d and f basis functions (Legacy optimizer)";; - opt_nh4_pbe0_def2svp) testinfo="NH4+: DFT geometry optimization test: s, p and d basis functions (Legacy optimizer)";; - opt_caffeine_b3lyp_3-21g) testinfo="Caffeine: DFT B3LYP DL-FIND geometry optimization test: s and p basis functions (Baker test set)";; - opt_merad_ub3lyp_631gss) testinfo="Methyl radical: UDFT B3LYP geometry optimization test (Legacy optimizer)";; - opt_hsoh_pbe0_def2svp) testinfo="Oxadisulfane: DFT PBE0 DL-FIND geometry optimization test with s, p and d basis functions";; - opt_c3h4_rhf_631g) testinfo="Allene: RHF DL-FIND geometry optimization test with s and p basis functions";; - opt_c2h5rad_uhf_631gss) testinfo="Ethyl radical: UHF DL-FIND geometry optimization test";; - opt_c2hrad_ub3lyp_ccpvdz) testinfo="Ethynyl radical: UDFT B3LYP DL-FIND geometry optimization test with s, p and d basis functions";; - api_water_rhf_631g) testinfo="Water: API test";; - esac +# this function creates an exclusive lock on an existing file for writing +# using atomic operations +# +# arguments: +# $1: file to lock +lock_file() +{ + if [ $has_parallel = 'yes' ]; then + while ! ln -s "${1}" "${1}.lock" > /dev/null 2>&1; do + sleep 0.01; + done + fi +} - echo $testinfo | tee -a $QUICK_HOME/.quick.${buildtype}.runtest.log +# This function removes an existing exclusive lock file for writing +# using atomic operations. +# +# arguments: +# $1: file with established lock file to unlock +unlock_file() +{ + if [ $has_parallel = 'yes' ]; then + mv "${1}.lock" "${1}.deleteme" && rm -f "${1}.deleteme" + fi } + # function to set correct quick executable and test list # must be called from a loop where $buildtype carries build type -set_qexe_testlist(){ - - if [ "$buildtype" = 'serial' ]; then +# +# arguments: +# $1: QUICK version (a.k.a. build type) which to configure tests for +# outputs: +# qexe: name of QUICK executable to use for running non-API tests +# apiexe: name of QUICK executable to use for running API tests +# apipath: directory containing QUICK executable for running API tests +# test_list: filename containing test list to execute +set_qexe_testlist() +{ + if [ "$1" = 'serial' ]; then qexe='quick' apiexe='test-api' @@ -343,7 +177,7 @@ set_qexe_testlist(){ else test_list="$testdir/testlist_short.txt" fi - elif [ "$buildtype" = 'mpi' ]; then + elif [ "$1" = 'mpi' ]; then qexe='quick.MPI' apiexe='test-api.MPI' @@ -358,7 +192,7 @@ set_qexe_testlist(){ else test_list="$testdir/testlist_short.txt" fi - elif [ "$buildtype" = 'cuda' ]; then + elif [ "$1" = 'cuda' ]; then qexe='quick.cuda' apiexe='test-api.cuda' @@ -369,11 +203,11 @@ set_qexe_testlist(){ fi if [ "$test_length" = 'full' ]; then - test_list="$testdir/testlist_full_cuda.txt" + test_list="$testdir/testlist_full_gpu.txt" else - test_list="$testdir/testlist_short_cuda.txt" + test_list="$testdir/testlist_short_gpu.txt" fi - elif [ "$buildtype" = 'cudampi' ]; then + elif [ "$1" = 'cudampi' ]; then qexe='quick.cuda.MPI' apiexe='test-api.cuda.MPI' @@ -384,11 +218,11 @@ set_qexe_testlist(){ fi if [ "$test_length" = 'full' ]; then - test_list="$testdir/testlist_full_cuda.txt" + test_list="$testdir/testlist_full_gpu.txt" else - test_list="$testdir/testlist_short_cuda.txt" + test_list="$testdir/testlist_short_gpu.txt" fi - elif [ "$buildtype" = 'hip' ]; then + elif [ "$1" = 'hip' ]; then qexe='quick.hip' apiexe='test-api.hip' @@ -399,11 +233,11 @@ set_qexe_testlist(){ fi if [ "$test_length" = 'full' ]; then - test_list="$testdir/testlist_full_cuda.txt" + test_list="$testdir/testlist_full_gpu.txt" else - test_list="$testdir/testlist_short_cuda.txt" + test_list="$testdir/testlist_short_gpu.txt" fi - elif [ "$buildtype" = 'hipmpi' ]; then + elif [ "$1" = 'hipmpi' ]; then qexe='quick.hip.MPI' apiexe='test-api.hip.MPI' @@ -414,158 +248,393 @@ set_qexe_testlist(){ fi if [ "$test_length" = 'full' ]; then - test_list="$testdir/testlist_full_cuda.txt" + test_list="$testdir/testlist_full_gpu.txt" else - test_list="$testdir/testlist_short_cuda.txt" + test_list="$testdir/testlist_short_gpu.txt" fi fi +} + + +# function to set the GPUs assigned to GNU parallel jobs +# +# arguments: +# $1: available GPU IDs (0-based indexing) (i.e., {CUDA,HIP}_VISIBLE_DEVICES) +# outputs: +# total_gpus: total number of GPUs +# gpus_per_job: number of GPUs per job +# job_gpus: array of GPU IDs assigned to each job (0-based indexing) +set_job_gpus() +{ + total_gpus=`echo "$1" | awk '{print NF}'` + gpus_per_job=$((total_gpus/PARALLEL_TEST_COUNT)) + + if [ "$total_gpus" -lt "$PARALLEL_TEST_COUNT" ]; then + echo "Error: invalid # GPUs detected in HIP_VISIBLE_DEVICES/CUDA_VISIBLE_DEVICES (# GPUs >= PARALLEL_TEST_COUNT)." + exit 1; + fi + job_gpus=() + for i in `seq 0 $(($PARALLEL_TEST_COUNT-1))`; + do + job_gpus[$i]="`echo $1 | cut -f $((i*gpus_per_job+1))-$(((i+1)*gpus_per_job)) -d ' '`" + done } -# function to get the total number of tests -get_total_tests(){ +# function to set the various test lists and counts +# +# arguments: +# $1: run energy tests ['yes'|'no'] +# $2: run gradient tests ['yes'|'no'] +# $3: run geometry optimization tests ['yes'|'no'] +# $4: run API tests ['yes'|'no'] +# +# outputs: +# tests: array of tests +# test_names: array of test names +# tot_{ene,grad,opt,api}_tests: counts for test lists by type +# total_tests: sum of counts for all test types +get_total_tests() +{ + tests=() + test_names=() + total_tests=0 - if [ "$test_ene" = 'yes' ]; then - tot_ene_tests=`awk '{print $1}' "$test_list"| grep "ene" | wc -l` - total_tests=$((total_tests+tot_ene_tests)) + if [ "$1" = 'yes' ]; then + tot_ene_tests="${#tests[@]}" + tests+=(`grep "^ene_" "$test_list" | awk '{print $1}'`) + readarray -t -O "${#test_names[@]}" test_names <<< `grep "^ene_" "$test_list" | awk 'BEGIN { FPAT="([^#]+)"; OFS="\n"; } {print $2}'` + total_tests="${#tests[@]}" + tot_ene_tests=$((total_tests-tot_ene_tests)) fi - if [ "$test_grad" = 'yes' ]; then - tot_grad_tests=`awk '{print $1}' "$test_list"| grep "grad" | wc -l` - total_tests=$((total_tests+tot_grad_tests)) + if [ "$2" = 'yes' ]; then + tot_grad_tests="${#tests[@]}" + tests+=(`grep "^grad_" "$test_list" | awk '{print $1}'`) + readarray -t -O "${#test_names[@]}" test_names <<< `grep "^grad_" "$test_list" | awk 'BEGIN { FPAT="([^#]+)"; OFS="\n"; } {print $2}'` + total_tests="${#tests[@]}" + tot_grad_tests=$((total_tests-tot_grad_tests)) fi - if [ "$test_opt" = 'yes' ]; then - tot_opt_tests=`awk '{print $1}' "$test_list"| grep "opt" | wc -l` - total_tests=$((total_tests+tot_opt_tests)) + if [ "$3" = 'yes' ]; then + tot_opt_tests="${#tests[@]}" + tests+=(`grep "^opt_" "$test_list" | awk '{print $1}'`) + readarray -t -O "${#test_names[@]}" test_names <<< `grep "^opt_" "$test_list" | awk 'BEGIN { FPAT="([^#]+)"; OFS="\n"; } {print $2}'` + total_tests="${#tests[@]}" + tot_opt_tests=$((total_tests-tot_opt_tests)) fi - if [ "$test_api" = 'yes' ]; then - tot_api_tests=`awk '{print $1}' "$test_list"| grep "api" | wc -l` - total_tests=$((total_tests+tot_api_tests)) + if [ "$4" = 'yes' ]; then + tot_api_tests="${#tests[@]}" + tests+=(`grep "^api_" "$test_list" | awk '{print $1}'`) + readarray -t -O "${#test_names[@]}" test_names <<< `grep "^api_" "$test_list" | awk 'BEGIN { FPAT="([^#]+)"; OFS="\n"; } {print $2}'` + total_tests="${#tests[@]}" + tot_api_tests=$((total_tests-tot_api_tests)) fi - } + # function to set files for a test run -set_test(){ +# +# arguments: +# $1: test name +# $2: test directory +# $3: job slot (GNU parallel) (1-based indexing) +set_test() +{ + if [ $has_parallel = 'yes' ]; then + if [ "$cuda" = 'yes' -o "$cudampi" = 'yes' ]; then + CUDA_VISIBLE_DEVICES="${job_gpus[$(($3-1))]}" + elif [ "$hip" = 'yes' -o "$hipmpi" = 'yes' ]; then + HIP_VISIBLE_DEVICES="${job_gpus[$(($3-1))]}" + CUDA_VISIBLE_DEVICES="" + fi + fi + # copy input if the test is not an api test - if [ `echo "$t" | grep 'api_' | wc -l` -lt 1 ]; then - cp "$testdir/$t.in" ./ + if [ `echo "$1" | grep 'api_' | wc -l` -lt 1 ]; then + cp "$2/$1.in" ./ fi - cp "$testdir/saved/$t.out" "$t.ref.out" + cp "$2/saved/$1.out" "$1.ref.out" } -# function to run tests. t, tc and total are test name, test count and -# total test count respectively. accuracy sets the tolerance. -run_test(){ - - echo "Running test $tc of $total_tests" | tee -a $QUICK_HOME/.quick.${buildtype}.runtest.log - - print_test_info "$t" - - # Run the test case - if [ $buildtype = 'mpi' ] || [ $buildtype = 'cudampi' ] || [ $buildtype = 'hipmpi' ] && [ $ismpirun = 'yes' ]; then - eval "$DO_PARALLEL $qbindir/$qexe $t.in" > /dev/null 2>&1 - else - "$qbindir/$qexe" "$t.in" > /dev/null 2>&1 - fi +# function to run tests. +# +# arguments: +# $1: test +# $2: test name +# $3: test number +# $4: total number of tests +# $5: log file +run_test() +{ + # Run the test case + if [ $buildtype = 'mpi' ] || [ $buildtype = 'cudampi' ] || [ $buildtype = 'hipmpi' ] && [ $ismpirun = 'yes' ]; then + eval "$DO_PARALLEL $qbindir/$qexe $1.in" > /dev/null 2>&1 + else + "$qbindir/$qexe" "$1.in" > /dev/null 2>&1 + fi - if [ "$?" -ne 0 ] && [ `check_f_error` -eq 0 ]; then - echo "Error: $qexe execution failed." - echo "" - exit 1 - fi + if [ "$?" -ne 0 ] && [ `check_f_error $1` -eq 0 ]; then + echo "Error: $qexe execution failed." + echo "" + + # on failure, log header of failing test + lock_file "$5" + echo "Running test $3 of $4" | tee -a "$5" + echo "$2" | tee -a "$5" + unlock_file "$5" + + exit 1 + fi - if [ `check_f_error` -eq 1 ]; then - echo "SKIPPED." - echo "==============================================================" - echo "" - fi + if [ `check_f_error $1` -eq 1 ]; then + echo "SKIPPED." + echo "==============================================================" + echo "" + fi } + # function to run api tests -run_api_test(){ - echo "Running test $tc of $total_tests" | tee -a $QUICK_HOME/.quick.${buildtype}.runtest.log - - print_test_info "$t" - - #Run test - if [ $buildtype = 'mpi' ] || [ $buildtype = 'cudampi' ] || [ $buildtype = 'hipmpi' ] && [ $ismpirun = 'yes' ]; then - eval "$DO_PARALLEL $apipath/$apiexe" > /dev/null 2>&1 - else - "$apipath/$apiexe" > /dev/null 2>&1 - fi +# +# arguments: +# $1: test +# $2: test name +# $3: test number +# $4: total number of tests +# $5: log file +run_test_api() +{ + #Run test + if [ $buildtype = 'mpi' ] || [ $buildtype = 'cudampi' ] || [ $buildtype = 'hipmpi' ] && [ $ismpirun = 'yes' ]; then + eval "$DO_PARALLEL $apipath/$apiexe" > /dev/null 2>&1 + else + "$apipath/$apiexe" > /dev/null 2>&1 + fi - if [ "$?" -ne 0 ]; then - echo "Error: $apiexe execution failed." - echo "" - exit 1 - fi + if [ "$?" -ne 0 ]; then + echo "Error: $apiexe execution failed." + echo "" + + # on failure, log header of failing test + lock_file "$5" + echo "Running test $3 of $4" | tee -a "$5" + echo "$2" | tee -a "$5" + unlock_file "$5" + exit 1 + fi } -# check electronic, nuclear and total energy -check_energy(){ - - accuracy='4.0e-5' - awk '/Begin Energy Calculation/,/End Energy calculation/ {print}' "$t.ref.out" > "$t.ref.ene" - awk '/Begin Energy Calculation/,/End Energy calculation/ {print}' "$t.out" > "$t.ene" +# wrapper function for energy tests. +# +# arguments: +# $1: test +# $2: test name +# $3: test number for this test +# $4: total number of tests +# $5: directory containing test files and scripts +# $6: log file +# $7: job slot (GNU parallel) (1-based indexing) +run_energy_test() +{ + set_test "$1" "$5" "$7" + run_test "$1" "$2" "$3" "$4" "$6" + lock_file "$6" + echo "Running test $3 of $4" | tee -a "$6" + echo "$2" | tee -a "$6" + if [ `check_f_error $1` -eq 0 ]; then + check_energy "$1" "$5" "$6" + check_dipole "$1" "$5" "$6" + clean_up "$1" + echo "" | tee -a "$6" + else + echo "SKIPPED." | tee -a "$6" + echo "==============================================================" | tee -a "$6" + echo "" | tee -a "$6" + fi + unlock_file "$6" +} - "$testdir/dacdif" -k -a "$accuracy" "$t.ref.ene" "$t.ene" | tee -a $QUICK_HOME/.quick.${buildtype}.runtest.log +# wrapper function for gradient tests. +# +# arguments: +# $1: test +# $2: test name +# $3: test number for this test +# $4: total number of tests +# $5: directory containing test files and scripts +# $6: log file +# $7: job slot (GNU parallel) (1-based indexing) +run_grad_test() +{ + set_test "$1" "$5" "$7" + run_test "$1" "$2" "$3" "$4" "$6" + lock_file "$6" + echo "Running test $3 of $4" | tee -a "$6" + echo "$2" | tee -a "$6" + if [ `check_f_error $1` -eq 0 ]; then + check_energy "$1" "$5" "$6" + check_gradient "$1" "$5" "$6" + check_dipole "$1" "$5" "$6" + clean_up "$1" + echo "" | tee -a "$6" + else + echo "SKIPPED." | tee -a "$6" + echo "==============================================================" | tee -a "$6" + echo "" | tee -a "$6" + fi + unlock_file "$6" } -# check nuclear and point charge gradients -check_gradient(){ - - accuracy='4.0e-3' +# wrapper function for geometry optimization tests. +# +# arguments: +# $1: test +# $2: test name +# $3: test number for this test +# $4: total number of tests +# $5: directory containing test files and scripts +# $6: log file +# $7: job slot (GNU parallel) (1-based indexing) +run_opt_test() +{ + set_test "$1" "$5" "$7" + run_test "$1" "$2" "$3" "$4" "$6" + lock_file "$6" + echo "Running test $3 of $4" | tee -a "$6" + echo "$2" | tee -a "$6" + if [ `check_f_error $1` -eq 0 ]; then + check_opt "$1" "$5" "$6" + check_dipole "$1" "$5" "$6" + clean_up "$1" + echo "" | tee -a "$6" + else + echo "SKIPPED." | tee -a "$6" + echo "==============================================================" | tee -a "$6" + echo "" | tee -a "$6" + fi + unlock_file "$6" +} - awk '/Begin Gradient Calculation/,/End Gradient Calculation/ {print}' "$t.ref.out" > "$t.ref.grad" - awk '/Begin Gradient Calculation/,/End Gradient Calculation/ {print}' "$t.out" > "$t.grad" - "$testdir/dacdif" -k -a "$accuracy" "$t.ref.grad" "$t.grad" | tee -a $QUICK_HOME/.quick.${buildtype}.runtest.log +# wrapper function for API tests. +# +# arguments: +# $1: test +# $2: test name +# $3: test number for this test +# $4: total number of tests +# $5: directory containing test files and scripts +# $6: log file +# $7: job slot (GNU parallel) (1-based indexing) +run_api_test() +{ + set_test "$1" "$5" "$7" + run_test_api "$1" "$2" "$3" "$4" "$6" + lock_file "$6" + echo "Running test $3 of $4" | tee -a "$6" + echo "$2" | tee -a "$6" + check_energy "$1" "$5" "$6" + check_gradient "$1" "$5" "$6" + clean_up "$1" + echo "" | tee -a "$6" + unlock_file "$6" } -# check optimized geometry and force element -check_opt(){ - - accuracy='4.0e-3' - awk '/GEOMETRY INFORMATION/,/Finish Optimization Job/ {print}' "$t.ref.out" > "$t.ref.opt" - awk '/GEOMETRY INFORMATION/,/Finish Optimization Job/ {print}' "$t.out" > "$t.opt" +# check electronic, nuclear, and total energy output from test. +# accuracy sets the tolerance. +# +# arguments: +# $1: test name +# $2: directory containing test files and scripts +# $3: log file +check_energy() +{ + accuracy='4.0e-5' + + awk '/Begin Energy Calculation/,/End Energy calculation/ {print}' "$1.ref.out" > "$1.ref.ene" + awk '/Begin Energy Calculation/,/End Energy calculation/ {print}' "$1.out" > "$1.ene" + + "$2/dacdif" -k -a "$accuracy" "$1.ref.ene" "$1.ene" | tee -a "$3" +} - "$testdir/dacdif" -k -a "$accuracy" "$t.ref.opt" "$t.opt" | tee -a $QUICK_HOME/.quick.${buildtype}.runtest.log +# check nuclear and point charge gradients output from test. +# accuracy sets the tolerance. +# +# arguments: +# $1: test name +# $2: directory containing test files and scripts +# $3: log file +check_gradient() +{ + accuracy='4.0e-3' + + awk '/Begin Gradient Calculation/,/End Gradient Calculation/ {print}' "$1.ref.out" > "$1.ref.grad" + awk '/Begin Gradient Calculation/,/End Gradient Calculation/ {print}' "$1.out" > "$1.grad" + + "$2/dacdif" -k -a "$accuracy" "$1.ref.grad" "$1.grad" | tee -a "$3" } -# check mulliken charges and dipole -check_dipole(){ - accuracy='4.0e-3' - - awk '/Begin Charge and Dipole Calculation/,/End Charge and Dipole Calculation/ {print}' "$t.ref.out" > "$t.ref.dipole" - awk '/Begin Charge and Dipole Calculation/,/End Charge and Dipole Calculation/ {print}' "$t.out" > "$t.dipole" +# check optimized geometry and force element output from test. +# accuracy sets the tolerance. +# +# arguments: +# $1: test name +# $2: directory containing test files and scripts +# $3: log file +check_opt() +{ + accuracy='4.0e-3' + + awk '/GEOMETRY INFORMATION/,/Finish Optimization Job/ {print}' "$1.ref.out" > "$1.ref.opt" + awk '/GEOMETRY INFORMATION/,/Finish Optimization Job/ {print}' "$1.out" > "$1.opt" + + "$2/dacdif" -k -a "$accuracy" "$1.ref.opt" "$1.opt" | tee -a "$3" +} - "$testdir/dacdif" -k -a "$accuracy" "$t.ref.dipole" "$t.dipole" | tee -a $QUICK_HOME/.quick.${buildtype}.runtest.log +# check mulliken charges and dipole output from test. +# accuracy sets the tolerance. +# +# arguments: +# $1: test name +# $2: directory containing test files and scripts +# $3: log file +check_dipole() +{ + accuracy='4.0e-3' + + awk '/Begin Charge and Dipole Calculation/,/End Charge and Dipole Calculation/ {print}' "$1.ref.out" > "$1.ref.dipole" + awk '/Begin Charge and Dipole Calculation/,/End Charge and Dipole Calculation/ {print}' "$1.out" > "$1.dipole" + + "$2/dacdif" -k -a "$accuracy" "$1.ref.dipole" "$1.dipole" | tee -a "$3" } -# function to clean up files -clean_up(){ - - rm -f "$t.ref.out" "$t.in" ddtmp* *.ene *.grad *.dipole *.opt +# function to clean up files from test +# +# arguments: +# $1: test name +clean_up() +{ + rm -f "$1.ref.out" "$1.in" "ddtmp.$1*" "$1.*ene" "$1.*grad" "$1.*dipole" "$1.*opt" } -# function to report summary -print_summary(){ +# function to report summary +print_summary() +{ sum_header="======================== Test Summary ========================" sum_footer="==============================================================" @@ -577,7 +646,6 @@ print_summary(){ echo "" >> $QUICK_HOME/.quick.runtest.summary.log fi - for buildtype in $buildtypes; do total_ene=0 total_grad=0 @@ -587,13 +655,12 @@ print_summary(){ failed_grad=0 failed_opt=0 failed_api=0 - total_tests=0 # set testlist - set_qexe_testlist + set_qexe_testlist "$buildtype" # get the number of tests to run - get_total_tests + get_total_tests "$test_ene" "$test_grad" "$test_opt" "$test_api" # grab stuff from temporary log files sed -n '/'$buildtype' version started/,/All '$buildtype' tests are done/p' $QUICK_HOME/.quick.${buildtype}.runtest.log > .quick.runtest.${buildtype}.summary.tmp1 @@ -652,7 +719,6 @@ print_summary(){ fi rm -f .quick.runtest.${buildtype}.summary.tmp1 .quick.runtest.${buildtype}.summary.tmp0 - done echo "$sum_footer" @@ -660,21 +726,26 @@ print_summary(){ if [ "$log" = 'yes' ]; then echo "$sum_footer" >> $QUICK_HOME/.quick.runtest.summary.log fi - } + # Function to skip F tests if the code wasnt compiled with support -check_f_error(){ - f_error_string=`grep 'Error: Support for F functions is disabled' "$t.out"` +# +# arguments: +# $1: test name +check_f_error() +{ + f_error_string=`grep 'Error: Support for F functions is disabled' "$1.out"` if [ -z "$f_error_string" ]; then echo 0 ; else echo 1 ; fi - } + +check_for_req_deps "cat" "date" "echo" "rm" "seq" "tee" "touch" "wc" "awk" "sed" + # !---------------------------------------------------------------------! # ! Read input ! # !--------------------------------------------------------------------- - while [ $# -gt 0 ]; do case "$1" in --serial) serial='yes'; buildtypes="$buildtypes serial";; @@ -699,7 +770,6 @@ done # !---------------------------------------------------------------------! # ! Check directories & executables ! # !---------------------------------------------------------------------! - if [ ! -d "$qbindir" ]; then if [ "$AMBERHOME" != "" ]; then # Assume we are in Amber @@ -723,7 +793,6 @@ if [ ! -d "$testdir" ]; then fi if [ "$serial" = 'yes' -o "$mpi" = 'yes' -o "$cuda" = 'yes' -o "$cudampi" = 'yes' -o "$hip" = 'yes' -o "$hipmpi" = 'yes' ]; then - if [ "$serial" = 'yes' ]; then if [ ! -x "$qbindir/quick" ]; then echo "Error: $qbindir/quick not found." @@ -791,7 +860,6 @@ if [ "$serial" = 'yes' -o "$mpi" = 'yes' -o "$cuda" = 'yes' -o "$cudampi" = 'yes fi else - # automatically check for executables if [ -x "$qbindir/quick.cuda.MPI" ]; then cudampi='yes' @@ -827,7 +895,6 @@ else echo "Error: No QUICK executables found in $qbindir. " exit 1 fi - fi if [ ! -f "$testdir/testlist_short.txt" ]; then @@ -840,52 +907,97 @@ if [ ! -f "$testdir/testlist_full.txt" ]; then exit 1 fi -if [ ! -f "$testdir/testlist_short_cuda.txt" ]; then - echo "Error: testlist_short_cuda.txt not found in $testdir. " +if [ ! -f "$testdir/testlist_short_gpu.txt" ]; then + echo "Error: testlist_short_gpu.txt not found in $testdir. " exit 1 fi -if [ ! -f "$testdir/testlist_full_cuda.txt" ]; then - echo "Error: testlist_full_cuda.txt not found in $testdir. " +if [ ! -f "$testdir/testlist_full_gpu.txt" ]; then + echo "Error: testlist_full_gpu.txt not found in $testdir. " exit 1 fi - # check for mpirun if [ "$mpi" = 'yes' -o "$cudampi" = 'yes' -o "$hipmpi" = 'yes' ]; then - mpimsg="" - if [ -z "$DO_PARALLEL" ]; then - echo "Error: MPI/MPI+X tests are requested but DO_PARALLEL variable is not set." - exit 1 - else - ismpirun='yes' - mpimsg="MPI command: $DO_PARALLEL" - fi + mpimsg="" + if [ -z "$DO_PARALLEL" ]; then + echo "Error: MPI/MPI+X tests are requested but DO_PARALLEL variable is not set." + exit 1 + else + ismpirun='yes' + mpimsg="MPI command: $DO_PARALLEL" + fi - echo "" - echo "$mpimsg" + echo "" + echo "$mpimsg" - if [ "$mpi" = 'yes' ]; then - echo "" >> $QUICK_HOME/.quick.mpi.runtest.log - echo "$mpimsg" >> $QUICK_HOME/.quick.mpi.runtest.log - fi + if [ "$mpi" = 'yes' ]; then + echo "" >> $QUICK_HOME/.quick.mpi.runtest.log + echo "$mpimsg" >> $QUICK_HOME/.quick.mpi.runtest.log + fi - if [ "$cudampi" = 'yes' ]; then - echo "" >> $QUICK_HOME/.quick.cudampi.runtest.log - echo "$mpimsg" >> $QUICK_HOME/.quick.cudampi.runtest.log - fi + if [ "$cudampi" = 'yes' ]; then + echo "" >> $QUICK_HOME/.quick.cudampi.runtest.log + echo "$mpimsg" >> $QUICK_HOME/.quick.cudampi.runtest.log + fi + + if [ "$hipmpi" = 'yes' ]; then + echo "" >> $QUICK_HOME/.quick.hipmpi.runtest.log + echo "$mpimsg" >> $QUICK_HOME/.quick.hipmpi.runtest.log + fi +fi + +# check for GNU parallel +if [ -n "$PARALLEL_TEST_COUNT" ]; then + check_for_req_deps "parallel" "cut" "ln" "sleep" + + case $PARALLEL_TEST_COUNT in + ''|*[!0-9]*) is_integer='no';; + *) is_integer='yes';; + esac + + if [ "$is_integer" = 'no' ]; then + echo "Error: PARALLEL_TEST_COUNT must be set to an integer value." + exit 1; + elif [ "$PARALLEL_TEST_COUNT" -le '0' ]; then + echo "Error: PARALLEL_TEST_COUNT must be greater than zero." + exit 1; + fi + + job_gpus=() + if [ "$cuda" = 'yes' -o "$cudampi" = 'yes' ]; then + if [ -n "$CUDA_VISIBLE_DEVICES" ]; then + set_job_gpus "$CUDA_VISIBLE_DEVICES" + else + echo "Error: set the GPUs to use with CUDA_VISIBLE_DEVICES (# GPUs >= PARALLEL_TEST_COUNT)." + exit 1; + fi + elif [ "$hip" = 'yes' -o "$hipmpi" = 'yes' ]; then + if [ -n "$HIP_VISIBLE_DEVICES" ]; then + set_job_gpus "$HIP_VISIBLE_DEVICES" + elif [ -n "$CUDA_VISIBLE_DEVICES" ]; then + set_job_gpus "$CUDA_VISIBLE_DEVICES" + else + echo "Error: set the GPUs to use with HIP_VISIBLE_DEVICES/CUDA_VISIBLE_DEVICES (# GPUs >= PARALLEL_TEST_COUNT)." + exit 1; + fi + fi - if [ "$hipmpi" = 'yes' ]; then - echo "" >> $QUICK_HOME/.quick.hipmpi.runtest.log - echo "$mpimsg" >> $QUICK_HOME/.quick.hipmpi.runtest.log - fi + has_parallel='yes' + # required exports for GNU parallel to have visibility of global shell varaibles and functions + # + # note: function exporting for invocation with GNU parallel is bash-specific; + # an alternative would be to install and use env_parallel (which for non-bash shells + # utilizes a export and eval approach for string representation of shell functions) + export buildtype qbindir qexe apipath apiexe ismpirun has_parallel job_gpus + export -f set_test run_test run_test_api run_energy_test run_grad_test run_opt_test run_api_test \ + check_energy check_gradient check_opt check_dipole clean_up check_f_error lock_file unlock_file fi # !---------------------------------------------------------------------! # ! Create required directories ! # !---------------------------------------------------------------------! - if [ ! -d "$testdir/runs" ]; then mkdir -p "$testdir/runs" fi @@ -898,7 +1010,6 @@ done # !---------------------------------------------------------------------! # ! Set test tyeps ! # !---------------------------------------------------------------------! - if [ "$uspec_test" = 'no' ]; then test_ene='yes' test_grad='yes' @@ -909,90 +1020,97 @@ fi # !---------------------------------------------------------------------! # ! Run tests ! # !---------------------------------------------------------------------! - cd "$testdir" - - for buildtype in $buildtypes; do - cdate=`date +'%m/%d/%Y'` ctime=`date +'%r'` echo "" | tee -a $QUICK_HOME/.quick.${buildtype}.runtest.log echo "Testing $QUICK_VERSION $buildtype version started on $cdate at $ctime. " | tee -a $QUICK_HOME/.quick.${buildtype}.runtest.log echo "" | tee -a $QUICK_HOME/.quick.${buildtype}.runtest.log - # set qexe and testlist - set_qexe_testlist - - # initialize the total number of test cases - total_tests=0 + set_qexe_testlist "$buildtype" # get the number of tests to run - get_total_tests + get_total_tests "$test_ene" "$test_grad" "$test_opt" "$test_api" - tc=1 # test count cd "$testdir/runs/$buildtype" + if [ $has_parallel = 'yes' ]; then + # ensure no leftover lock files from failed previous runs + rm -f "$QUICK_HOME/.quick.${buildtype}.runtest.log.lock" "$QUICK_HOME/.quick.${buildtype}.runtest.log.deleteme" + fi + # Run energy tests + tc_start=0 + tc_end=0 + if [ "$test_ene" = 'yes' ]; then - for t in `awk '{print $1}' "$test_list"| grep "ene"`; do - set_test - run_test - if [ `check_f_error` -eq 0 ]; then - check_energy - check_dipole - clean_up - - echo "" - fi - tc=$((tc+1)) - done + tc_start=1 + tc_end="$tot_ene_tests" + if [ $has_parallel = 'no' ]; then + for tc in `seq $tc_start $tc_end`; do + run_energy_test "${tests[$((tc-1))]}" "${test_names[$((tc-1))]}" "$tc" "$total_tests" \ + "$testdir" "$QUICK_HOME/.quick.${buildtype}.runtest.log" + done + elif [ $has_parallel = 'yes' ]; then + parallel --keep-order --group --jobs "$PARALLEL_TEST_COUNT" --will-cite run_energy_test {1} {2} {3} \ + "$total_tests" "$testdir" "$QUICK_HOME/.quick.${buildtype}.runtest.log" {%} \ + ::: "${tests[@]:$((tc_start-1)):$tc_end}" :::+ "${test_names[@]:$((tc_start-1)):$tc_end}" \ + :::+ `seq $tc_start $tc_end` + fi fi # Run gradient tests if [ "$test_grad" = 'yes' ]; then - for t in `awk '{print $1}' "$test_list" |grep "grad"`; do - set_test - run_test - if [ `check_f_error` -eq 0 ]; then - check_energy - check_gradient - check_dipole - clean_up - - echo "" - fi - tc=$((tc+1)) - done + tc_start=$((tc_end+1)) + tc_end=$((tc_end+tot_grad_tests)) + if [ $has_parallel = 'no' ]; then + for tc in `seq $tc_start $tc_end`; do + run_grad_test "${tests[$((tc-1))]}" "${test_names[$((tc-1))]}" "$tc" "$total_tests" \ + "$testdir" "$QUICK_HOME/.quick.${buildtype}.runtest.log" + done + elif [ $has_parallel = 'yes' ]; then + parallel --keep-order --group --jobs "$PARALLEL_TEST_COUNT" --will-cite run_grad_test {1} {2} {3} \ + "$total_tests" "$testdir" "$QUICK_HOME/.quick.${buildtype}.runtest.log" {%} \ + ::: "${tests[@]:$((tc_start-1)):$tc_end}" :::+ "${test_names[@]:$((tc_start-1)):$tc_end}" \ + :::+ `seq $tc_start $tc_end` + fi fi # Run geometry optimization tests if [ "$test_opt" = 'yes' ]; then - for t in `awk '{print $1}' "$test_list" | grep "opt"`; do - set_test - run_test - if [ `check_f_error` -eq 0 ]; then - check_opt - check_dipole - clean_up - - echo "" - fi - tc=$((tc+1)) - done + tc_start=$((tc_end+1)) + tc_end=$((tc_end+tot_opt_tests)) + if [ $has_parallel = 'no' ]; then + for tc in `seq $tc_start $tc_end`; do + run_opt_test "${tests[$((tc-1))]}" "${test_names[$((tc-1))]}" "$tc" "$total_tests" \ + "$testdir" "$QUICK_HOME/.quick.${buildtype}.runtest.log" + done + elif [ $has_parallel = 'yes' ]; then + parallel --keep-order --group --jobs "$PARALLEL_TEST_COUNT" --will-cite run_opt_test {1} {2} {3} \ + "$total_tests" "$testdir" "$QUICK_HOME/.quick.${buildtype}.runtest.log" {%} \ + ::: "${tests[@]:$((tc_start-1)):$tc_end}" :::+ "${test_names[@]:$((tc_start-1)):$tc_end}" \ + :::+ `seq $tc_start $tc_end` + fi fi # Run api tests if [ "$test_api" = 'yes' ]; then - for t in `awk '{print $1}' "$test_list" | grep "api_"`; do - set_test - run_api_test - check_energy - check_gradient - clean_up - done + tc_start=$((tc_end+1)) + tc_end=$((tc_end+tot_api_tests)) + if [ $has_parallel = 'no' ]; then + for tc in `seq $tc_start $tc_end`; do + run_api_test "${tests[$((tc-1))]}" "${test_names[$((tc-1))]}" "$tc" "$total_tests" \ + "$testdir" "$QUICK_HOME/.quick.${buildtype}.runtest.log" + done + elif [ $has_parallel = 'yes' ]; then + parallel --keep-order --group --jobs "$PARALLEL_TEST_COUNT" --will-cite run_api_test {1} {2} {3} \ + "$total_tests" "$testdir" "$QUICK_HOME/.quick.${buildtype}.runtest.log" {%} \ + ::: "${tests[@]:$((tc_start-1)):$tc_end}" :::+ "${test_names[@]:$((tc_start-1)):$tc_end}" \ + :::+ `seq $tc_start $tc_end` + fi fi echo "All $buildtype tests are done. The output files are located in $testdir/runs/$buildtype." | tee -a $QUICK_HOME/.quick.${buildtype}.runtest.log @@ -1023,10 +1141,9 @@ else done fi -# shamefully exit if tests are failed. +# exit if tests are failed. if [ $ncum_failed_tests -gt 0 ]; then exit 1 else exit 0 fi - From 220db8b5ba94ccad600aaa0a6c4347e29a44deb9 Mon Sep 17 00:00:00 2001 From: Andreas Goetz Date: Sat, 19 Oct 2024 15:58:37 -0700 Subject: [PATCH 02/15] Fix description of some tests --- test/testlist_full.txt | 4 ++-- test/testlist_full_gpu.txt | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/test/testlist_full.txt b/test/testlist_full.txt index cb2cd5bd..5a3c3957 100644 --- a/test/testlist_full.txt +++ b/test/testlist_full.txt @@ -160,9 +160,9 @@ opt_wat_rhf_631g #Water: RHF geometry optimization test: s and p bas opt_wat_rhf_ccpvdz #Water: RHF geometry optimization test: s, p and d basis functions (Legacy optimizer) opt_wat_b3lyp_ccpvtz #Water: RHF geometry optimization test: s, p, d and f basis functions (Legacy optimizer) opt_nh4_pbe0_def2svp #NH4+: DFT geometry optimization test: s, p and d basis functions (Legacy optimizer) -opt_merad_ub3lyp_631gss #Caffeine: DFT B3LYP DL-FIND geometry optimization test: s and p basis functions (Baker test set) +opt_merad_ub3lyp_631gss #Caffeine: DFT B3LYP DL-FIND geometry optimization test: s and p and d basis functions (Baker test set) opt_hsoh_pbe0_def2svp #Methyl radical: UDFT B3LYP geometry optimization test (Legacy optimizer) -opt_c3h4_rhf_631g #Oxadisulfane: DFT PBE0 DL-FIND geometry optimization test with s, p and d basis functions +opt_c3h4_rhf_631g #Oxadisulfane: DFT PBE0 DL-FIND geometry optimization test with s and p basis functions opt_caffeine_b3lyp_3-21g #Allene: RHF DL-FIND geometry optimization test with s and p basis functions opt_c2h5rad_uhf_631gss #Ethyl radical: UHF DL-FIND geometry optimization test opt_c2hrad_ub3lyp_ccpvdz #Ethynyl radical: UDFT B3LYP DL-FIND geometry optimization test with s, p and d basis functions diff --git a/test/testlist_full_gpu.txt b/test/testlist_full_gpu.txt index 6a25ae6c..110faa9e 100644 --- a/test/testlist_full_gpu.txt +++ b/test/testlist_full_gpu.txt @@ -149,18 +149,18 @@ grad_ch5nos_pbe_631g #CH5NOS: DFT gradient test: s and p basis fu grad_ch5nos_pw91_631g #CH5NOS: DFT gradient test: s and p basis functions, PW91 functional grad_ch5nos_revpbe_631g #CH5NOS: DFT gradient test: s and p basis functions, revPBE functional grad_wat_b3lyp_ccpvdz #Water: DFT point charge gradient test: s and p and d basis functions -grad_c10h9o2s_b3lyp_def2svp #C10H9O2S: DFT point charge gradient test: s and p and d basis functions +grad_c10h9o2s_b3lyp_def2svp #C10H9O2S: DFT point charge gradient test: s, p and d basis functions grad_daspi_meoh_b3lyp_6-31g #DASPI-DCM: DFT point charge gradient test: s and p basis functions -grad_hbdi_meoh_libxc_blyp_def2sv_p #HBDI-MeOH: DFT point charge gradient test: s and p basis functions -grad_naip_meoh_libxc_pbeh_def2svp #NAIP-MeOH: DFT point charge gradient test: s and p basis functions +grad_hbdi_meoh_libxc_blyp_def2sv_p #HBDI-MeOH: DFT point charge gradient test: s, p and d basis functions +grad_naip_meoh_libxc_pbeh_def2svp #NAIP-MeOH: DFT point charge gradient test: s, p and d basis functions grad_ncnaip_b3lyp_631gss #NAIP2-MeOH: DFT point charge gradient test: s and p basis functions -grad_rpsb_meoh_rhf_321g #RPSB-MeOH: RHF point charge gradient test: s and p basis functions +grad_rpsb_meoh_rhf_321g #RPSB-MeOH: RHF point charge gradient test: s, p and d basis functions grad_ohrad_b3lyp_631gss #OH radical: UDFT B3LYP gradient test opt_wat_rhf_631g #Water: RHF geometry optimization test: s and p basis functions (Legacy optimizer) opt_wat_rhf_ccpvdz #Water: RHF geometry optimization test: s, p and d basis functions (Legacy optimizer) opt_wat_b3lyp_ccpvtz #Water: RHF geometry optimization test: s, p, d and f basis functions (Legacy optimizer) opt_nh4_pbe0_def2svp #NH4+: DFT geometry optimization test: s, p and d basis functions (Legacy optimizer) -opt_merad_ub3lyp_631gss #Caffeine: DFT B3LYP DL-FIND geometry optimization test: s and p basis functions (Baker test set) +opt_merad_ub3lyp_631gss #Caffeine: DFT B3LYP DL-FIND geometry optimization test: s, p and d basis functions (Baker test set) opt_hsoh_pbe0_def2svp #Methyl radical: UDFT B3LYP geometry optimization test (Legacy optimizer) opt_c3h4_rhf_631g #Oxadisulfane: DFT PBE0 DL-FIND geometry optimization test with s, p and d basis functions opt_caffeine_b3lyp_3-21g #Allene: RHF DL-FIND geometry optimization test with s and p basis functions From ac70f6bcdef4f014b66d4d69f11b4ec4246bb629 Mon Sep 17 00:00:00 2001 From: Andreas Goetz Date: Sun, 20 Oct 2024 00:10:26 -0700 Subject: [PATCH 03/15] AWG Fix runtest Fixed the following - wrap command substiution in string to retain newline characters for readarray - fix removing temporary files (remove strings to enable globbing) - fix parsing of temporary log file .quick.${buildtype}.runtest.log for parallel run (test output is not any more in order; cannot expect test i+1 to follow in test i in output) Still not working - parallel runs with older GNU parallel versions that do not support :::+ - using --xapply in place of :::+ does not work, leads to quick execution failures --- tools/runtest | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/tools/runtest b/tools/runtest index 192d442a..1de75734 100755 --- a/tools/runtest +++ b/tools/runtest @@ -304,7 +304,8 @@ get_total_tests() if [ "$1" = 'yes' ]; then tot_ene_tests="${#tests[@]}" tests+=(`grep "^ene_" "$test_list" | awk '{print $1}'`) - readarray -t -O "${#test_names[@]}" test_names <<< `grep "^ene_" "$test_list" | awk 'BEGIN { FPAT="([^#]+)"; OFS="\n"; } {print $2}'` + readarray -t -O "${#test_names[@]}" test_names <<< \ + "$(grep "^ene_" "$test_list" | awk 'BEGIN { FPAT="([^#]+)"; OFS="\n"; } {print $2}')" total_tests="${#tests[@]}" tot_ene_tests=$((total_tests-tot_ene_tests)) fi @@ -312,7 +313,8 @@ get_total_tests() if [ "$2" = 'yes' ]; then tot_grad_tests="${#tests[@]}" tests+=(`grep "^grad_" "$test_list" | awk '{print $1}'`) - readarray -t -O "${#test_names[@]}" test_names <<< `grep "^grad_" "$test_list" | awk 'BEGIN { FPAT="([^#]+)"; OFS="\n"; } {print $2}'` + readarray -t -O "${#test_names[@]}" test_names <<< \ + "$(grep "^grad_" "$test_list" | awk 'BEGIN { FPAT="([^#]+)"; OFS="\n"; } {print $2}')" total_tests="${#tests[@]}" tot_grad_tests=$((total_tests-tot_grad_tests)) fi @@ -320,7 +322,8 @@ get_total_tests() if [ "$3" = 'yes' ]; then tot_opt_tests="${#tests[@]}" tests+=(`grep "^opt_" "$test_list" | awk '{print $1}'`) - readarray -t -O "${#test_names[@]}" test_names <<< `grep "^opt_" "$test_list" | awk 'BEGIN { FPAT="([^#]+)"; OFS="\n"; } {print $2}'` + readarray -t -O "${#test_names[@]}" test_names <<< \ + "$(grep "^opt_" "$test_list" | awk 'BEGIN { FPAT="([^#]+)"; OFS="\n"; } {print $2}')" total_tests="${#tests[@]}" tot_opt_tests=$((total_tests-tot_opt_tests)) fi @@ -328,7 +331,8 @@ get_total_tests() if [ "$4" = 'yes' ]; then tot_api_tests="${#tests[@]}" tests+=(`grep "^api_" "$test_list" | awk '{print $1}'`) - readarray -t -O "${#test_names[@]}" test_names <<< `grep "^api_" "$test_list" | awk 'BEGIN { FPAT="([^#]+)"; OFS="\n"; } {print $2}'` + readarray -t -O "${#test_names[@]}" test_names <<< \ + "$(grep "^api_" "$test_list" | awk 'BEGIN { FPAT="([^#]+)"; OFS="\n"; } {print $2}')" total_tests="${#tests[@]}" tot_api_tests=$((total_tests-tot_api_tests)) fi @@ -628,7 +632,7 @@ check_dipole() # $1: test name clean_up() { - rm -f "$1.ref.out" "$1.in" "ddtmp.$1*" "$1.*ene" "$1.*grad" "$1.*dipole" "$1.*opt" + rm -f $1.ref.out $1.in ddtmp.$1* $1.*ene $1.*grad $1.*dipole $1.*opt } @@ -668,7 +672,7 @@ print_summary() for i in `seq 1 $total_tests`; do if [ "$i" -lt "$total_tests" ]; then j=$((i+1)) - sed -n '/Running test '$i' of '$total_tests'/,/Running test '$j' of '$total_tests'/p' .quick.runtest.${buildtype}.summary.tmp1 > .quick.runtest.${buildtype}.summary.tmp2 + sed -n '/Running test '$i' of '$total_tests'/,/Running test /p' .quick.runtest.${buildtype}.summary.tmp1 > .quick.runtest.${buildtype}.summary.tmp2 elif [ "$i" -eq "$total_tests" ]; then sed -n '/Running test '$total_tests'/,/All '$buildtype' tests are done/p' .quick.runtest.${buildtype}.summary.tmp1 > .quick.runtest.${buildtype}.summary.tmp2 fi From 7c0fae7e43babebd79b027ec48dcc6a962721648 Mon Sep 17 00:00:00 2001 From: "Kurt A. O'Hearn" <1138669+ohearnk@users.noreply.github.com> Date: Sun, 20 Oct 2024 14:38:07 -0400 Subject: [PATCH 04/15] Fix test files not being properly cleaned up for skipped tests (i.e., no ERI f function support). Fix issue with test lists for parallel tests (incorrect array slices). Change to older GNU parallel argument linking for backwards portability (--xapply). Other clean-up. --- tools/runtest | 109 ++++++++++++++++++++++++-------------------------- 1 file changed, 52 insertions(+), 57 deletions(-) diff --git a/tools/runtest b/tools/runtest index 1de75734..ed72c0a4 100755 --- a/tools/runtest +++ b/tools/runtest @@ -267,7 +267,7 @@ set_qexe_testlist() set_job_gpus() { total_gpus=`echo "$1" | awk '{print NF}'` - gpus_per_job=$((total_gpus/PARALLEL_TEST_COUNT)) + gpus_per_job=$(($total_gpus/$PARALLEL_TEST_COUNT)) if [ "$total_gpus" -lt "$PARALLEL_TEST_COUNT" ]; then echo "Error: invalid # GPUs detected in HIP_VISIBLE_DEVICES/CUDA_VISIBLE_DEVICES (# GPUs >= PARALLEL_TEST_COUNT)." @@ -277,7 +277,7 @@ set_job_gpus() job_gpus=() for i in `seq 0 $(($PARALLEL_TEST_COUNT-1))`; do - job_gpus[$i]="`echo $1 | cut -f $((i*gpus_per_job+1))-$(((i+1)*gpus_per_job)) -d ' '`" + job_gpus[$i]="`echo $1 | cut -f $(($i*$gpus_per_job+1))-$((($i+1)*$gpus_per_job)) -d ' '`" done } @@ -299,6 +299,10 @@ get_total_tests() { tests=() test_names=() + tot_ene_tests=0 + tot_grad_tests=0 + tot_opt_tests=0 + tot_api_tests=0 total_tests=0 if [ "$1" = 'yes' ]; then @@ -307,7 +311,7 @@ get_total_tests() readarray -t -O "${#test_names[@]}" test_names <<< \ "$(grep "^ene_" "$test_list" | awk 'BEGIN { FPAT="([^#]+)"; OFS="\n"; } {print $2}')" total_tests="${#tests[@]}" - tot_ene_tests=$((total_tests-tot_ene_tests)) + tot_ene_tests=$(($total_tests-$tot_ene_tests)) fi if [ "$2" = 'yes' ]; then @@ -316,7 +320,7 @@ get_total_tests() readarray -t -O "${#test_names[@]}" test_names <<< \ "$(grep "^grad_" "$test_list" | awk 'BEGIN { FPAT="([^#]+)"; OFS="\n"; } {print $2}')" total_tests="${#tests[@]}" - tot_grad_tests=$((total_tests-tot_grad_tests)) + tot_grad_tests=$(($total_tests-$tot_grad_tests)) fi if [ "$3" = 'yes' ]; then @@ -325,7 +329,7 @@ get_total_tests() readarray -t -O "${#test_names[@]}" test_names <<< \ "$(grep "^opt_" "$test_list" | awk 'BEGIN { FPAT="([^#]+)"; OFS="\n"; } {print $2}')" total_tests="${#tests[@]}" - tot_opt_tests=$((total_tests-tot_opt_tests)) + tot_opt_tests=$(($total_tests-$tot_opt_tests)) fi if [ "$4" = 'yes' ]; then @@ -334,7 +338,7 @@ get_total_tests() readarray -t -O "${#test_names[@]}" test_names <<< \ "$(grep "^api_" "$test_list" | awk 'BEGIN { FPAT="([^#]+)"; OFS="\n"; } {print $2}')" total_tests="${#tests[@]}" - tot_api_tests=$((total_tests-tot_api_tests)) + tot_api_tests=$(($total_tests-$tot_api_tests)) fi } @@ -455,7 +459,6 @@ run_energy_test() if [ `check_f_error $1` -eq 0 ]; then check_energy "$1" "$5" "$6" check_dipole "$1" "$5" "$6" - clean_up "$1" echo "" | tee -a "$6" else echo "SKIPPED." | tee -a "$6" @@ -463,6 +466,7 @@ run_energy_test() echo "" | tee -a "$6" fi unlock_file "$6" + clean_up "$1" } @@ -487,7 +491,6 @@ run_grad_test() check_energy "$1" "$5" "$6" check_gradient "$1" "$5" "$6" check_dipole "$1" "$5" "$6" - clean_up "$1" echo "" | tee -a "$6" else echo "SKIPPED." | tee -a "$6" @@ -495,6 +498,7 @@ run_grad_test() echo "" | tee -a "$6" fi unlock_file "$6" + clean_up "$1" } @@ -518,7 +522,6 @@ run_opt_test() if [ `check_f_error $1` -eq 0 ]; then check_opt "$1" "$5" "$6" check_dipole "$1" "$5" "$6" - clean_up "$1" echo "" | tee -a "$6" else echo "SKIPPED." | tee -a "$6" @@ -526,6 +529,7 @@ run_opt_test() echo "" | tee -a "$6" fi unlock_file "$6" + clean_up "$1" } @@ -548,14 +552,13 @@ run_api_test() echo "$2" | tee -a "$6" check_energy "$1" "$5" "$6" check_gradient "$1" "$5" "$6" - clean_up "$1" echo "" | tee -a "$6" unlock_file "$6" + clean_up "$1" } # check electronic, nuclear, and total energy output from test. -# accuracy sets the tolerance. # # arguments: # $1: test name @@ -563,17 +566,14 @@ run_api_test() # $3: log file check_energy() { - accuracy='4.0e-5' - awk '/Begin Energy Calculation/,/End Energy calculation/ {print}' "$1.ref.out" > "$1.ref.ene" awk '/Begin Energy Calculation/,/End Energy calculation/ {print}' "$1.out" > "$1.ene" - "$2/dacdif" -k -a "$accuracy" "$1.ref.ene" "$1.ene" | tee -a "$3" + "$2/dacdif" -k -a '4.0e-5' "$1.ref.ene" "$1.ene" | tee -a "$3" } # check nuclear and point charge gradients output from test. -# accuracy sets the tolerance. # # arguments: # $1: test name @@ -581,17 +581,14 @@ check_energy() # $3: log file check_gradient() { - accuracy='4.0e-3' - awk '/Begin Gradient Calculation/,/End Gradient Calculation/ {print}' "$1.ref.out" > "$1.ref.grad" awk '/Begin Gradient Calculation/,/End Gradient Calculation/ {print}' "$1.out" > "$1.grad" - "$2/dacdif" -k -a "$accuracy" "$1.ref.grad" "$1.grad" | tee -a "$3" + "$2/dacdif" -k -a '4.0e-3' "$1.ref.grad" "$1.grad" | tee -a "$3" } # check optimized geometry and force element output from test. -# accuracy sets the tolerance. # # arguments: # $1: test name @@ -599,12 +596,10 @@ check_gradient() # $3: log file check_opt() { - accuracy='4.0e-3' - awk '/GEOMETRY INFORMATION/,/Finish Optimization Job/ {print}' "$1.ref.out" > "$1.ref.opt" awk '/GEOMETRY INFORMATION/,/Finish Optimization Job/ {print}' "$1.out" > "$1.opt" - "$2/dacdif" -k -a "$accuracy" "$1.ref.opt" "$1.opt" | tee -a "$3" + "$2/dacdif" -k -a '4.0e-3' "$1.ref.opt" "$1.opt" | tee -a "$3" } @@ -671,42 +666,42 @@ print_summary() for i in `seq 1 $total_tests`; do if [ "$i" -lt "$total_tests" ]; then - j=$((i+1)) + j=$(($i+1)) sed -n '/Running test '$i' of '$total_tests'/,/Running test /p' .quick.runtest.${buildtype}.summary.tmp1 > .quick.runtest.${buildtype}.summary.tmp2 elif [ "$i" -eq "$total_tests" ]; then sed -n '/Running test '$total_tests'/,/All '$buildtype' tests are done/p' .quick.runtest.${buildtype}.summary.tmp1 > .quick.runtest.${buildtype}.summary.tmp2 fi if [ `sed -n '/energy test/p' .quick.runtest.${buildtype}.summary.tmp2 | wc -l` -gt 0 ]; then - total_ene=$((total_ene+1)) + total_ene=$(($total_ene+1)) if [ `sed -n '/possible FAILURE/p' .quick.runtest.${buildtype}.summary.tmp2 | wc -l` -gt 0 ]; then - failed_ene=$((failed_ene+1)) + failed_ene=$(($failed_ene+1)) fi elif [ `sed -n '/gradient test/p' .quick.runtest.${buildtype}.summary.tmp2 | wc -l` -gt 0 ]; then - total_grad=$((total_grad+1)) + total_grad=$(($total_grad+1)) if [ `sed -n '/possible FAILURE/p' .quick.runtest.${buildtype}.summary.tmp2 | wc -l` -gt 0 ]; then - failed_grad=$((failed_grad+1)) + failed_grad=$(($failed_grad+1)) fi elif [ `sed -n '/geometry optimization test/p' .quick.runtest.${buildtype}.summary.tmp2 | wc -l` -gt 0 ]; then - total_opt=$((total_opt+1)) + total_opt=$(($total_opt+1)) if [ `sed -n '/possible FAILURE/p' .quick.runtest.${buildtype}.summary.tmp2 | wc -l` -gt 0 ]; then - failed_opt=$((failed_opt+1)) + failed_opt=$(($failed_opt+1)) fi elif [ `sed -n '/API test/p' .quick.runtest.${buildtype}.summary.tmp2 | wc -l` -gt 0 ]; then - total_api=$((total_api+1)) + total_api=$(($total_api+1)) if [ `sed -n '/possible FAILURE/p' .quick.runtest.${buildtype}.summary.tmp2 | wc -l` -gt 0 ]; then - failed_api=$((failed_api+1)) + failed_api=$(($failed_api+1)) fi fi rm -f .quick.runtest.${buildtype}.summary.tmp2 done - failed_total=$((failed_ene+failed_grad+failed_opt+failed_api)) + failed_total=$(($failed_ene+$failed_grad+$failed_opt+$failed_api)) # update cumulative failed tests too - ncum_failed_tests=$((ncum_failed_tests+failed_total)) + ncum_failed_tests=$(($ncum_failed_tests+$failed_total)) echo "$buildtype version:" > .quick.runtest.${buildtype}.summary.tmp0 echo " Energy tests: $failed_ene/$total_ene (failed/total)" >> .quick.runtest.${buildtype}.summary.tmp0 @@ -1051,69 +1046,69 @@ for buildtype in $buildtypes; do tc_end=0 if [ "$test_ene" = 'yes' ]; then - tc_start=1 - tc_end="$tot_ene_tests" + tc_start=$(($tc_end+1)) + tc_end=$(($tc_end+$tot_ene_tests)) if [ $has_parallel = 'no' ]; then for tc in `seq $tc_start $tc_end`; do - run_energy_test "${tests[$((tc-1))]}" "${test_names[$((tc-1))]}" "$tc" "$total_tests" \ + run_energy_test "${tests[$(($tc-1))]}" "${test_names[$(($tc-1))]}" "$tc" "$total_tests" \ "$testdir" "$QUICK_HOME/.quick.${buildtype}.runtest.log" done elif [ $has_parallel = 'yes' ]; then - parallel --keep-order --group --jobs "$PARALLEL_TEST_COUNT" --will-cite run_energy_test {1} {2} {3} \ + parallel --keep-order --group --jobs "$PARALLEL_TEST_COUNT" --xapply --will-cite run_energy_test {1} {2} {3} \ "$total_tests" "$testdir" "$QUICK_HOME/.quick.${buildtype}.runtest.log" {%} \ - ::: "${tests[@]:$((tc_start-1)):$tc_end}" :::+ "${test_names[@]:$((tc_start-1)):$tc_end}" \ - :::+ `seq $tc_start $tc_end` + ::: "${tests[@]:$(($tc_start-1)):$tot_ene_tests}" ::: "${test_names[@]:$(($tc_start-1)):$tot_ene_tests}" \ + ::: `seq $tc_start $tc_end` fi fi # Run gradient tests if [ "$test_grad" = 'yes' ]; then - tc_start=$((tc_end+1)) - tc_end=$((tc_end+tot_grad_tests)) + tc_start=$(($tc_end+1)) + tc_end=$(($tc_end+$tot_grad_tests)) if [ $has_parallel = 'no' ]; then for tc in `seq $tc_start $tc_end`; do - run_grad_test "${tests[$((tc-1))]}" "${test_names[$((tc-1))]}" "$tc" "$total_tests" \ + run_grad_test "${tests[$(($tc-1))]}" "${test_names[$(($tc-1))]}" "$tc" "$total_tests" \ "$testdir" "$QUICK_HOME/.quick.${buildtype}.runtest.log" done elif [ $has_parallel = 'yes' ]; then - parallel --keep-order --group --jobs "$PARALLEL_TEST_COUNT" --will-cite run_grad_test {1} {2} {3} \ + parallel --keep-order --group --jobs "$PARALLEL_TEST_COUNT" --xapply --will-cite run_grad_test {1} {2} {3} \ "$total_tests" "$testdir" "$QUICK_HOME/.quick.${buildtype}.runtest.log" {%} \ - ::: "${tests[@]:$((tc_start-1)):$tc_end}" :::+ "${test_names[@]:$((tc_start-1)):$tc_end}" \ - :::+ `seq $tc_start $tc_end` + ::: "${tests[@]:$(($tc_start-1)):$tot_grad_tests}" ::: "${test_names[@]:$(($tc_start-1)):$tot_grad_tests}" \ + ::: `seq $tc_start $tc_end` fi fi # Run geometry optimization tests if [ "$test_opt" = 'yes' ]; then - tc_start=$((tc_end+1)) - tc_end=$((tc_end+tot_opt_tests)) + tc_start=$(($tc_end+1)) + tc_end=$(($tc_end+$tot_opt_tests)) if [ $has_parallel = 'no' ]; then for tc in `seq $tc_start $tc_end`; do - run_opt_test "${tests[$((tc-1))]}" "${test_names[$((tc-1))]}" "$tc" "$total_tests" \ + run_opt_test "${tests[$(($tc-1))]}" "${test_names[$(($tc-1))]}" "$tc" "$total_tests" \ "$testdir" "$QUICK_HOME/.quick.${buildtype}.runtest.log" done elif [ $has_parallel = 'yes' ]; then - parallel --keep-order --group --jobs "$PARALLEL_TEST_COUNT" --will-cite run_opt_test {1} {2} {3} \ + parallel --keep-order --group --jobs "$PARALLEL_TEST_COUNT" --xapply --will-cite run_opt_test {1} {2} {3} \ "$total_tests" "$testdir" "$QUICK_HOME/.quick.${buildtype}.runtest.log" {%} \ - ::: "${tests[@]:$((tc_start-1)):$tc_end}" :::+ "${test_names[@]:$((tc_start-1)):$tc_end}" \ - :::+ `seq $tc_start $tc_end` + ::: "${tests[@]:$(($tc_start-1)):$tot_opt_tests}" ::: "${test_names[@]:$(($tc_start-1)):$tot_opt_tests}" \ + ::: `seq $tc_start $tc_end` fi fi # Run api tests if [ "$test_api" = 'yes' ]; then - tc_start=$((tc_end+1)) - tc_end=$((tc_end+tot_api_tests)) + tc_start=$(($tc_end+1)) + tc_end=$(($tc_end+$tot_api_tests)) if [ $has_parallel = 'no' ]; then for tc in `seq $tc_start $tc_end`; do - run_api_test "${tests[$((tc-1))]}" "${test_names[$((tc-1))]}" "$tc" "$total_tests" \ + run_api_test "${tests[$(($tc-1))]}" "${test_names[$(($tc-1))]}" "$tc" "$total_tests" \ "$testdir" "$QUICK_HOME/.quick.${buildtype}.runtest.log" done elif [ $has_parallel = 'yes' ]; then - parallel --keep-order --group --jobs "$PARALLEL_TEST_COUNT" --will-cite run_api_test {1} {2} {3} \ + parallel --keep-order --group --jobs "$PARALLEL_TEST_COUNT" --xapply --will-cite run_api_test {1} {2} {3} \ "$total_tests" "$testdir" "$QUICK_HOME/.quick.${buildtype}.runtest.log" {%} \ - ::: "${tests[@]:$((tc_start-1)):$tc_end}" :::+ "${test_names[@]:$((tc_start-1)):$tc_end}" \ - :::+ `seq $tc_start $tc_end` + ::: "${tests[@]:$(($tc_start-1)):$tot_api_tests}" ::: "${test_names[@]:$(($tc_start-1)):$tot_api_tests}" \ + ::: `seq $tc_start $tc_end` fi fi From 492af91b383d3173a95b6be46d878c474c97e48c Mon Sep 17 00:00:00 2001 From: Andreas Goetz Date: Sun, 20 Oct 2024 12:12:19 -0700 Subject: [PATCH 05/15] Fix version number in configure script --- configure | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure b/configure index 54d001ce..3116b8ce 100755 --- a/configure +++ b/configure @@ -19,7 +19,7 @@ # !---------------------------------------------------------------------! # ! Set version ! # !---------------------------------------------------------------------! -QUICK_VERSION='QUICK-22.03' +QUICK_VERSION='QUICK-24.03' QUICK_HOME=`pwd` cdate=`date +'%m/%d/%Y'` ctime=`date +'%r'` From cfabd98c160881733a7033602f337e140cbbf26e Mon Sep 17 00:00:00 2001 From: "Kurt A. O'Hearn" <1138669+ohearnk@users.noreply.github.com> Date: Sun, 20 Oct 2024 16:24:31 -0400 Subject: [PATCH 06/15] Fix running parallel tests with GPUs (GPU IDs incorrect). --- tools/runtest | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/tools/runtest b/tools/runtest index ed72c0a4..97e7a9dc 100755 --- a/tools/runtest +++ b/tools/runtest @@ -352,11 +352,14 @@ get_total_tests() set_test() { if [ $has_parallel = 'yes' ]; then - if [ "$cuda" = 'yes' -o "$cudampi" = 'yes' ]; then - CUDA_VISIBLE_DEVICES="${job_gpus[$(($3-1))]}" - elif [ "$hip" = 'yes' -o "$hipmpi" = 'yes' ]; then - HIP_VISIBLE_DEVICES="${job_gpus[$(($3-1))]}" - CUDA_VISIBLE_DEVICES="" + if [ -n "$HIP_VISIBLE_DEVICES" ]; then + set_job_gpus "$HIP_VISIBLE_DEVICES" + export HIP_VISIBLE_DEVICES="${job_gpus[$(($3-1))]}" + export CUDA_VISIBLE_DEVICES="" + elif [ -n "$CUDA_VISIBLE_DEVICES" ]; then + set_job_gpus "$CUDA_VISIBLE_DEVICES" + export HIP_VISIBLE_DEVICES="" + export CUDA_VISIBLE_DEVICES="${job_gpus[$(($3-1))]}" fi fi @@ -963,20 +966,13 @@ if [ -n "$PARALLEL_TEST_COUNT" ]; then exit 1; fi - job_gpus=() if [ "$cuda" = 'yes' -o "$cudampi" = 'yes' ]; then - if [ -n "$CUDA_VISIBLE_DEVICES" ]; then - set_job_gpus "$CUDA_VISIBLE_DEVICES" - else + if [ -z "$CUDA_VISIBLE_DEVICES" ]; then echo "Error: set the GPUs to use with CUDA_VISIBLE_DEVICES (# GPUs >= PARALLEL_TEST_COUNT)." exit 1; fi elif [ "$hip" = 'yes' -o "$hipmpi" = 'yes' ]; then - if [ -n "$HIP_VISIBLE_DEVICES" ]; then - set_job_gpus "$HIP_VISIBLE_DEVICES" - elif [ -n "$CUDA_VISIBLE_DEVICES" ]; then - set_job_gpus "$CUDA_VISIBLE_DEVICES" - else + if [ -z "$HIP_VISIBLE_DEVICES" ] && [ -z "$CUDA_VISIBLE_DEVICES" ]; then echo "Error: set the GPUs to use with HIP_VISIBLE_DEVICES/CUDA_VISIBLE_DEVICES (# GPUs >= PARALLEL_TEST_COUNT)." exit 1; fi @@ -989,8 +985,8 @@ if [ -n "$PARALLEL_TEST_COUNT" ]; then # note: function exporting for invocation with GNU parallel is bash-specific; # an alternative would be to install and use env_parallel (which for non-bash shells # utilizes a export and eval approach for string representation of shell functions) - export buildtype qbindir qexe apipath apiexe ismpirun has_parallel job_gpus - export -f set_test run_test run_test_api run_energy_test run_grad_test run_opt_test run_api_test \ + export buildtype qbindir qexe apipath apiexe ismpirun has_parallel + export -f set_job_gpus set_test run_test run_test_api run_energy_test run_grad_test run_opt_test run_api_test \ check_energy check_gradient check_opt check_dipole clean_up check_f_error lock_file unlock_file fi From b271d648bd87cd03f21af586896be9406d6f5bd7 Mon Sep 17 00:00:00 2001 From: "Kurt A. O'Hearn" <1138669+ohearnk@users.noreply.github.com> Date: Sun, 20 Oct 2024 18:24:42 -0400 Subject: [PATCH 07/15] Fix delimiter character for GPU selection for parallel tests. --- tools/runtest | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/runtest b/tools/runtest index 97e7a9dc..38c1c4e4 100755 --- a/tools/runtest +++ b/tools/runtest @@ -277,7 +277,7 @@ set_job_gpus() job_gpus=() for i in `seq 0 $(($PARALLEL_TEST_COUNT-1))`; do - job_gpus[$i]="`echo $1 | cut -f $(($i*$gpus_per_job+1))-$((($i+1)*$gpus_per_job)) -d ' '`" + job_gpus[$i]="`echo $1 | cut -f $(($i*$gpus_per_job+1))-$((($i+1)*$gpus_per_job)) -d ','`" done } From b47fae6b3307e6cd43cb3e85ef4a0c29a68ec9d7 Mon Sep 17 00:00:00 2001 From: "Kurt A. O'Hearn" <1138669+ohearnk@users.noreply.github.com> Date: Sun, 20 Oct 2024 20:16:28 -0400 Subject: [PATCH 08/15] Document environment variable usage in runtest script. --- tools/runtest | 40 +++++++++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/tools/runtest b/tools/runtest index 38c1c4e4..3e6cbe36 100755 --- a/tools/runtest +++ b/tools/runtest @@ -100,22 +100,36 @@ print_help() Use this script as ./runtest [flags] Available flags are: - --serial Tests QUICK serial version - --mpi Tests QUICK MPI parallel version - --cuda Tests QUICK GPU version - --cudampi Tests QUICK multi-GPU version - --hip Tests QUICK AMD GPU version - --hipmpi Tests QUICK AMD multi-GPU version - --ene Run only energy tests - --grad Run only gradient tests - --opt Run only geometry optimization tests - --api Run only api tests - --full Run a large set of tests (Default: no) - --nolog Disable writing output into runtest.log (Default: no) + --serial Tests QUICK serial version + --mpi Tests QUICK MPI parallel version + --cuda Tests QUICK GPU version + --cudampi Tests QUICK multi-GPU version + --hip Tests QUICK AMD GPU version + --hipmpi Tests QUICK AMD multi-GPU version + --ene Run only energy tests + --grad Run only gradient tests + --opt Run only geometry optimization tests + --api Run only api tests + --full Run a large set of tests (Default: no) + --nolog Disable writing output into runtest.log (Default: no) If the version flags are not specified, the script will try to detect the executables and test them. - + + Environment variables which influence this script: + DO_PARALLEL Command for launching MPI/MPI+X versions + Example: DO_PARALLEL=\"mpirun -np 2\" + CUDA_VISIBLE_DEVICES Comma-seperated list of GPU IDs to use + for GPU versions (CUDA/HIP) + Example: CUDA_VISIBLE_DEVICES=\"0,1\" + HIP_VISIBLE_DEVICES Comma-seperated list of GPU IDs to use + for GPU versions (HIP) + Example: HIP_VISIBLE_DEVICES=\"2,3\" + PARALLEL_TEST_COUNT Number of tests to run in parallel using GNU parallel; + can be combined with the above 3 variables + for parallel testing with applicable QUICK versions + Example: PARALLEL_TEST_COUNT=\"2\" + " exit 0; From 630286c2a6122791f15debdfe3bb63d9950add6c Mon Sep 17 00:00:00 2001 From: Andreas Goetz Date: Thu, 24 Oct 2024 03:12:32 -0700 Subject: [PATCH 09/15] AWG: fix test descriptions Some test descriptions were not correct. These are now fixed. --- test/testlist_full.txt | 16 ++++++++++------ test/testlist_full_gpu.txt | 13 +++++++------ test/testlist_short.txt | 10 ++++++---- test/testlist_short_gpu.txt | 11 ++++++----- 4 files changed, 29 insertions(+), 21 deletions(-) diff --git a/test/testlist_full.txt b/test/testlist_full.txt index 5a3c3957..cd553257 100644 --- a/test/testlist_full.txt +++ b/test/testlist_full.txt @@ -160,10 +160,14 @@ opt_wat_rhf_631g #Water: RHF geometry optimization test: s and p bas opt_wat_rhf_ccpvdz #Water: RHF geometry optimization test: s, p and d basis functions (Legacy optimizer) opt_wat_b3lyp_ccpvtz #Water: RHF geometry optimization test: s, p, d and f basis functions (Legacy optimizer) opt_nh4_pbe0_def2svp #NH4+: DFT geometry optimization test: s, p and d basis functions (Legacy optimizer) -opt_merad_ub3lyp_631gss #Caffeine: DFT B3LYP DL-FIND geometry optimization test: s and p and d basis functions (Baker test set) -opt_hsoh_pbe0_def2svp #Methyl radical: UDFT B3LYP geometry optimization test (Legacy optimizer) -opt_c3h4_rhf_631g #Oxadisulfane: DFT PBE0 DL-FIND geometry optimization test with s and p basis functions -opt_caffeine_b3lyp_3-21g #Allene: RHF DL-FIND geometry optimization test with s and p basis functions -opt_c2h5rad_uhf_631gss #Ethyl radical: UHF DL-FIND geometry optimization test -opt_c2hrad_ub3lyp_ccpvdz #Ethynyl radical: UDFT B3LYP DL-FIND geometry optimization test with s, p and d basis functions +opt_merad_ub3lyp_631gss #Methyl radical: UDFT B3LYP geometry optimization test: s, p and d basis functions (Legacy optimizer) +opt_hsoh_pbe0_def2svp #Oxadisulfane: DFT PBE0 DL-FIND geometry optimization test: s, p and d basis functions +opt_c3h4_rhf_631g #Allene: RHF DL-FIND geometry optimization test: s and p basis functions +opt_caffeine_b3lyp_3-21g #Caffeine: DFT B3LYP DL-FIND geometry optimization test: s and p basis functions (Baker test set) +opt_c2h5rad_uhf_631gss #Ethyl radical: UHF DL-FIND geometry optimization test: s, p and d basis functions +opt_c2hrad_ub3lyp_ccpvdz #Ethynyl radical: UDFT B3LYP DL-FIND geometry optimization test: s, p and d basis functions api_water_rhf_631g #Water: API test + + + + diff --git a/test/testlist_full_gpu.txt b/test/testlist_full_gpu.txt index 110faa9e..e5fce379 100644 --- a/test/testlist_full_gpu.txt +++ b/test/testlist_full_gpu.txt @@ -160,10 +160,11 @@ opt_wat_rhf_631g #Water: RHF geometry optimization test: s and p bas opt_wat_rhf_ccpvdz #Water: RHF geometry optimization test: s, p and d basis functions (Legacy optimizer) opt_wat_b3lyp_ccpvtz #Water: RHF geometry optimization test: s, p, d and f basis functions (Legacy optimizer) opt_nh4_pbe0_def2svp #NH4+: DFT geometry optimization test: s, p and d basis functions (Legacy optimizer) -opt_merad_ub3lyp_631gss #Caffeine: DFT B3LYP DL-FIND geometry optimization test: s, p and d basis functions (Baker test set) -opt_hsoh_pbe0_def2svp #Methyl radical: UDFT B3LYP geometry optimization test (Legacy optimizer) -opt_c3h4_rhf_631g #Oxadisulfane: DFT PBE0 DL-FIND geometry optimization test with s, p and d basis functions -opt_caffeine_b3lyp_3-21g #Allene: RHF DL-FIND geometry optimization test with s and p basis functions -opt_c2h5rad_uhf_631gss #Ethyl radical: UHF DL-FIND geometry optimization test -opt_c2hrad_ub3lyp_ccpvdz #Ethynyl radical: UDFT B3LYP DL-FIND geometry optimization test with s, p and d basis functions +opt_merad_ub3lyp_631gss #Methyl radical: UDFT B3LYP geometry optimization test: s, p and d basis functions (Legacy optimizer) +opt_hsoh_pbe0_def2svp #Oxadisulfane: DFT PBE0 DL-FIND geometry optimization test: s, p and d basis functions +opt_c3h4_rhf_631g #Allene: RHF DL-FIND geometry optimization test: s and p basis functions +opt_caffeine_b3lyp_3-21g #Caffeine: DFT B3LYP DL-FIND geometry optimization test: s and p basis functions (Baker test set) +opt_c2h5rad_uhf_631gss #Ethyl radical: UHF DL-FIND geometry optimization test: s, p and d basis functions +opt_c2hrad_ub3lyp_ccpvdz #Ethynyl radical: UDFT B3LYP DL-FIND geometry optimization test: s, p and d basis functions api_water_rhf_631g #Water: API test + diff --git a/test/testlist_short.txt b/test/testlist_short.txt index 64daed6e..97790b44 100644 --- a/test/testlist_short.txt +++ b/test/testlist_short.txt @@ -18,8 +18,10 @@ opt_wat_rhf_631g #Water: RHF geometry optimization test: s and p bas opt_wat_rhf_ccpvdz #Water: RHF geometry optimization test: s, p and d basis functions (Legacy optimizer) opt_wat_b3lyp_ccpvtz #Water: RHF geometry optimization test: s, p, d and f basis functions (Legacy optimizer) opt_nh4_pbe0_def2svp #NH4+: DFT geometry optimization test: s, p and d basis functions (Legacy optimizer) -opt_hsoh_pbe0_def2svp #Methyl radical: UDFT B3LYP geometry optimization test (Legacy optimizer) -opt_c3h4_rhf_631g #Oxadisulfane: DFT PBE0 DL-FIND geometry optimization test with s, p and d basis functions -opt_c2h5rad_uhf_631gss #Ethyl radical: UHF DL-FIND geometry optimization test -opt_c2hrad_ub3lyp_ccpvdz #Ethynyl radical: UDFT B3LYP DL-FIND geometry optimization test with s, p and d basis functions +opt_hsoh_pbe0_def2svp #Oxadisulfane: DFT PBE0 DL-FIND geometry optimization test: s, p and d basis functions +opt_c3h4_rhf_631g #Allene: RHF DL-FIND geometry optimization test: s and p basis functions +opt_c2h5rad_uhf_631gss #Ethyl radical: UHF DL-FIND geometry optimization test: s, p and d basis functions +opt_c2hrad_ub3lyp_ccpvdz #Ethynyl radical: UDFT B3LYP DL-FIND geometry optimization test: s, p and d basis functions api_water_rhf_631g #Water: API test + + diff --git a/test/testlist_short_gpu.txt b/test/testlist_short_gpu.txt index 408d0656..776ccdc6 100644 --- a/test/testlist_short_gpu.txt +++ b/test/testlist_short_gpu.txt @@ -25,9 +25,10 @@ grad_ohrad_b3lyp_631gss #OH radical: UDFT B3LYP gradient test opt_wat_rhf_631g #Water: RHF geometry optimization test: s and p basis functions (Legacy optimizer) opt_wat_rhf_ccpvdz #Water: RHF geometry optimization test: s, p and d basis functions (Legacy optimizer) opt_nh4_pbe0_def2svp #NH4+: DFT geometry optimization test: s, p and d basis functions (Legacy optimizer) -opt_hsoh_pbe0_def2svp #Methyl radical: UDFT B3LYP geometry optimization test (Legacy optimizer) -opt_c3h4_rhf_631g #Oxadisulfane: DFT PBE0 DL-FIND geometry optimization test with s, p and d basis functions -opt_caffeine_b3lyp_3-21g #Allene: RHF DL-FIND geometry optimization test with s and p basis functions -opt_c2h5rad_uhf_631gss #Ethyl radical: UHF DL-FIND geometry optimization test -opt_c2hrad_ub3lyp_ccpvdz #Ethynyl radical: UDFT B3LYP DL-FIND geometry optimization test with s, p and d basis functions +opt_hsoh_pbe0_def2svp #Oxadisulfane: DFT PBE0 DL-FIND geometry optimization test: s, p and d basis functions +opt_c3h4_rhf_631g #Allene: RHF DL-FIND geometry optimization test: s and p basis functions +opt_caffeine_b3lyp_3-21g #Caffeine: DFT B3LYP DL-FIND geometry optimization test: s and p basis functions (Baker test set) +opt_c2h5rad_uhf_631gss #Ethyl radical: UHF DL-FIND geometry optimization test: s, p and d basis functions +opt_c2hrad_ub3lyp_ccpvdz #Ethynyl radical: UDFT B3LYP DL-FIND geometry optimization test: s, p and d basis functions api_water_rhf_631g #Water: API test + From bf538c161521abae6c626f02139f9f30f90a59a4 Mon Sep 17 00:00:00 2001 From: Andreas Goetz Date: Thu, 24 Oct 2024 03:30:30 -0700 Subject: [PATCH 10/15] AWG Fix assigning GPUs to parallel test runs Fixing field delimiter in awk script that checks CUDA_VISIBLE_DEVICES environment variable. --- tools/runtest | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/runtest b/tools/runtest index 3e6cbe36..75768cef 100755 --- a/tools/runtest +++ b/tools/runtest @@ -280,7 +280,7 @@ set_qexe_testlist() # job_gpus: array of GPU IDs assigned to each job (0-based indexing) set_job_gpus() { - total_gpus=`echo "$1" | awk '{print NF}'` + total_gpus=`echo "$1" | awk -F ',' '{print NF}'` gpus_per_job=$(($total_gpus/$PARALLEL_TEST_COUNT)) if [ "$total_gpus" -lt "$PARALLEL_TEST_COUNT" ]; then From fe7eb35dfe1a9994b93bd4ac95cb51a10a167d29 Mon Sep 17 00:00:00 2001 From: Vikrant Tripathy Date: Fri, 15 Nov 2024 12:12:41 -0800 Subject: [PATCH 11/15] READPMAT keyword is defined --- src/modules/quick_method_module.f90 | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/modules/quick_method_module.f90 b/src/modules/quick_method_module.f90 index fbaff3a9..77dcb69f 100644 --- a/src/modules/quick_method_module.f90 +++ b/src/modules/quick_method_module.f90 @@ -44,6 +44,7 @@ module quick_method_module logical :: debug = .false. ! debug mode logical :: nodirect = .false. ! conventional scf logical :: readDMX = .false. ! flag to read density matrix + logical :: readPMat = .false. ! flag to read density matrix logical :: writePMat = .false. ! flag to write density matrix logical :: readSAD = .true. ! flag to read SAD guess logical :: writeSAD = .false. ! flag to write SAD guess @@ -234,6 +235,7 @@ subroutine broadcast_quick_method(self, ierr) call MPI_BCAST(self%calcDensLap,1,mpi_logical,0,MPI_COMM_WORLD,mpierror) call MPI_BCAST(self%gridspacing,1,mpi_double_precision,0,MPI_COMM_WORLD,mpierror) call MPI_BCAST(self%lapGridSpacing,1,mpi_double_precision,0,MPI_COMM_WORLD,mpierror) + call MPI_BCAST(self%readPMat,1,mpi_logical,0,MPI_COMM_WORLD,mpierror) call MPI_BCAST(self%writePMat,1,mpi_logical,0,MPI_COMM_WORLD,mpierror) call MPI_BCAST(self%extCharges,1,mpi_logical,0,MPI_COMM_WORLD,mpierror) call MPI_BCAST(self%PDB,1,mpi_logical,0,MPI_COMM_WORLD,mpierror) @@ -408,6 +410,7 @@ subroutine print_quick_method(self,io,ierr) if (self%printEnergy) write(io,'(" PRINT ENERGY EVERY CYCLE")') if (self%readDMX) write(io,'(" READ DENSITY MATRIX FROM FILE")') + if (self%readPMat) write(io,'(" READ DENSITY MATRIX From DATAFILE")') if (self%writePMat) write(io,'(" WRITE DENSITY MATRIX TO FILE")') if (self%readSAD) write(io,'(" READ SAD GUESS FROM FILE")') if (self%writeSAD) write(io,'(" WRITE SAD GUESS TO FILE")') @@ -837,6 +840,7 @@ subroutine init_quick_method(self,ierr) self%hasF = .false. ! If f orbitial is contained self%calcDens = .false. ! calculate density self%calcDensLap = .false. ! calculate density lap + self%readPMat = .false. ! Input density matrix self%writePMat = .false. ! Output density matrix self%extCharges = .false. ! external charge self%PDB = .false. ! PDB input From a878d0fa6530d34d2ac1f4e9fb06e01e47d9567b Mon Sep 17 00:00:00 2001 From: Vikrant Tripathy Date: Fri, 15 Nov 2024 13:01:40 -0800 Subject: [PATCH 12/15] read keywords from multiple lines --- src/read_job_and_atom.f90 | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/read_job_and_atom.f90 b/src/read_job_and_atom.f90 index ed3439d2..c05f3f9e 100644 --- a/src/read_job_and_atom.f90 +++ b/src/read_job_and_atom.f90 @@ -29,8 +29,8 @@ subroutine read_job_and_atom(ierr) ! Instant variables integer i,j,k integer istrt - character(len=200) :: keyWD - character(len=20) :: tempstring + character(len=300) :: keyWD + character(len=100) :: tempstring integer, intent(inout) :: ierr if (master) then @@ -45,11 +45,16 @@ subroutine read_job_and_atom(ierr) keyWD=quick_api%Keywd else SAFE_CALL(quick_open(infile,inFileName,'O','F','W',.true.,ierr)) - read (inFile,'(A200)') keyWD + keyWD(:)='' + do while(.true.) + read (inFile,'(A100)') tempstring + if(trim(tempstring).eq.'') exit + keyWD=trim(keyWD)//' '//trim(tempstring) + end do endif - call upcase(keyWD,200) - write(iOutFile,'(" KEYWORD=",a)') keyWD + call upcase(keyWD,300) + write(iOutFile,'(" KEYWORD=",a)') trim(keyWD) ! These interfaces,"read","check" and "print" are from quick_method_module SAFE_CALL(read(quick_method,keyWD,ierr)) ! read method from Keyword From 018cc325c1ed11f4386478404acff305762cb1d4 Mon Sep 17 00:00:00 2001 From: Vikrant Tripathy Date: Fri, 15 Nov 2024 14:18:26 -0800 Subject: [PATCH 13/15] datafile name need not be default, can be user input --- src/modules/quick_files_module.f90 | 23 ++++++++++++++++++++++- src/read_job_and_atom.f90 | 13 +++++++++++-- 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/src/modules/quick_files_module.f90 b/src/modules/quick_files_module.f90 index 40c46065..b08c0739 100644 --- a/src/modules/quick_files_module.f90 +++ b/src/modules/quick_files_module.f90 @@ -128,6 +128,28 @@ subroutine set_quick_files(api,ierr) end subroutine + subroutine read_data_file(line) + use quick_exception_module + use quick_input_parser_module + + implicit none + + character line*(*) + + call read(line,'$DATA',datafilename) + + end subroutine + + subroutine print_data_file(io) + implicit none + + ! pass-in Parameter + integer io + + write (io,'("| DATA FILE = ",a)') trim(dataFileName) + + end subroutine + subroutine read_basis_file(keywd,ierr) use quick_exception_module @@ -272,7 +294,6 @@ subroutine print_quick_io_file(io,ierr) write (io,'("| INPUT FILE : ",a)') trim(inFileName) write (io,'("| OUTPUT FILE: ",a)') trim(outFileName) - write (io,'("| DATA FILE : ",a)') trim(dataFileName) write (io,'("| BASIS SET PATH: ",a)') trim(basisdir) return diff --git a/src/read_job_and_atom.f90 b/src/read_job_and_atom.f90 index c05f3f9e..42cd7366 100644 --- a/src/read_job_and_atom.f90 +++ b/src/read_job_and_atom.f90 @@ -49,7 +49,15 @@ subroutine read_job_and_atom(ierr) do while(.true.) read (inFile,'(A100)') tempstring if(trim(tempstring).eq.'') exit - keyWD=trim(keyWD)//' '//trim(tempstring) + if(tempstring(1:1).eq.'$')then + call upcase(tempstring(2:2),4) + if (tempstring(2:5).eq.'DATA')then + ! read data file + SAFE_CALL(read_data_file(tempstring)) + endif + else + keyWD=trim(keyWD)//' '//trim(tempstring) + endif end do endif @@ -65,7 +73,8 @@ subroutine read_job_and_atom(ierr) ! read basis file SAFE_CALL(read_basis_file(keywd,ierr)) call print_basis_file(iOutFile) - if (quick_method%ecp) call print_ecp_file(iOutFile) + call print_data_file(iOutFile) + if (quick_method%ecp) call print_ecp_file(iOutFile) ! If PDB flag is on, then call readPDB to read PDB file and ! rewrite input file so that there will be no difference between From 4ed71c778ee34317109d7f2ee83f28e18fb872f7 Mon Sep 17 00:00:00 2001 From: Vikrant Tripathy Date: Fri, 15 Nov 2024 15:24:30 -0800 Subject: [PATCH 14/15] density is being successfully read --- src/modules/quick_method_module.f90 | 27 +++++++++++++++------------ src/modules/quick_scf_module.f90 | 28 ++++++++++++++++++++++++---- src/subs/io.f90 | 16 +++++++++------- 3 files changed, 48 insertions(+), 23 deletions(-) diff --git a/src/modules/quick_method_module.f90 b/src/modules/quick_method_module.f90 index 77dcb69f..7912afc5 100644 --- a/src/modules/quick_method_module.f90 +++ b/src/modules/quick_method_module.f90 @@ -44,8 +44,8 @@ module quick_method_module logical :: debug = .false. ! debug mode logical :: nodirect = .false. ! conventional scf logical :: readDMX = .false. ! flag to read density matrix - logical :: readPMat = .false. ! flag to read density matrix - logical :: writePMat = .false. ! flag to write density matrix + logical :: readden = .false. ! flag to read density matrix + logical :: writeden = .false. ! flag to write density matrix logical :: readSAD = .true. ! flag to read SAD guess logical :: writeSAD = .false. ! flag to write SAD guess logical :: diisSCF = .false. ! DIIS SCF @@ -235,8 +235,8 @@ subroutine broadcast_quick_method(self, ierr) call MPI_BCAST(self%calcDensLap,1,mpi_logical,0,MPI_COMM_WORLD,mpierror) call MPI_BCAST(self%gridspacing,1,mpi_double_precision,0,MPI_COMM_WORLD,mpierror) call MPI_BCAST(self%lapGridSpacing,1,mpi_double_precision,0,MPI_COMM_WORLD,mpierror) - call MPI_BCAST(self%readPMat,1,mpi_logical,0,MPI_COMM_WORLD,mpierror) - call MPI_BCAST(self%writePMat,1,mpi_logical,0,MPI_COMM_WORLD,mpierror) + call MPI_BCAST(self%readden,1,mpi_logical,0,MPI_COMM_WORLD,mpierror) + call MPI_BCAST(self%writeden,1,mpi_logical,0,MPI_COMM_WORLD,mpierror) call MPI_BCAST(self%extCharges,1,mpi_logical,0,MPI_COMM_WORLD,mpierror) call MPI_BCAST(self%PDB,1,mpi_logical,0,MPI_COMM_WORLD,mpierror) call MPI_BCAST(self%SAD,1,mpi_logical,0,MPI_COMM_WORLD,mpierror) @@ -410,8 +410,8 @@ subroutine print_quick_method(self,io,ierr) if (self%printEnergy) write(io,'(" PRINT ENERGY EVERY CYCLE")') if (self%readDMX) write(io,'(" READ DENSITY MATRIX FROM FILE")') - if (self%readPMat) write(io,'(" READ DENSITY MATRIX From DATAFILE")') - if (self%writePMat) write(io,'(" WRITE DENSITY MATRIX TO FILE")') + if (self%readden) write(io,'(" READ DENSITY MATRIX From DATAFILE")') + if (self%writeden) write(io,'(" WRITE DENSITY MATRIX TO FILE")') if (self%readSAD) write(io,'(" READ SAD GUESS FROM FILE")') if (self%writeSAD) write(io,'(" WRITE SAD GUESS TO FILE")') @@ -504,13 +504,13 @@ subroutine read_quick_method(self,keywd,ierr) use quick_mpi_module use quick_files_module, only : write_molden implicit none - character(len=200) :: keyWD - character(len=200) :: tempstring + character(len=300) :: keyWD + character(len=300) :: tempstring integer :: itemp,i,j type (quick_method_type) self integer, intent(inout) :: ierr - call upcase(keyWD,200) + call upcase(keyWD,300) if (index(keyWD,'PDB').ne. 0) self%PDB=.true. if (index(keyWD,'MFCC').ne.0) self%MFCC=.true. if (index(keyWD,'FMM').ne.0) self%FMM=.true. @@ -633,7 +633,7 @@ subroutine read_quick_method(self,keywd,ierr) end if if (index(keyWD,'ZMAKE').ne.0) self%zmat=.true. if (index(keyWD,'DIPOLE').ne.0) self%dipole=.true. - if (index(keyWD,'WRITE').ne.0) self%writePMat=.true. + if (index(keyWD,'WRITE').ne.0) self%writeden=.true. if (index(keyWD,'EXTCHARGES').ne.0) self%EXTCHARGES=.true. if (index(keyWD,'FORCE').ne.0) self%grad=.true. @@ -652,6 +652,9 @@ subroutine read_quick_method(self,keywd,ierr) endif endif + !Read density matrix + if (index(keyWD,'READDEN').ne.0) self%readden=.true. + if (self%DFT) then if (index(keyWD,'SG0').ne.0) then self%iSG=0 @@ -840,8 +843,8 @@ subroutine init_quick_method(self,ierr) self%hasF = .false. ! If f orbitial is contained self%calcDens = .false. ! calculate density self%calcDensLap = .false. ! calculate density lap - self%readPMat = .false. ! Input density matrix - self%writePMat = .false. ! Output density matrix + self%readden = .false. ! Input density matrix + self%writeden = .false. ! Output density matrix self%extCharges = .false. ! external charge self%PDB = .false. ! PDB input self%SAD = .true. ! SAD initial guess diff --git a/src/modules/quick_scf_module.f90 b/src/modules/quick_scf_module.f90 index fd876109..080ea35d 100644 --- a/src/modules/quick_scf_module.f90 +++ b/src/modules/quick_scf_module.f90 @@ -182,9 +182,11 @@ subroutine electdiis(jscf,ierr) #endif implicit none - + + logical :: fail + ! variable inputed to return - integer :: jscf ! scf interation + integer :: jscf ! scf iteration integer, intent(inout) :: ierr logical :: diisdone = .false. ! flag to indicate if diis is done @@ -267,7 +269,17 @@ subroutine electdiis(jscf,ierr) if (bMPI) call MPI_setup_hfoperator !-------------- END MPI / ALL NODE ----------- #endif - + + if(quick_method%readden)then + nbasis = quick_molspec%nbasis + if(master)then + open(unit=iDataFile,file=dataFileName,status='OLD',form='UNFORMATTED') + call rchk_int(iDataFile, "nbasis", nbasis, fail) + call rchk_darray(iDataFile, "dense", nbasis, nbasis, 1, quick_qm_struct%dense, fail) + close(iDataFile) + endif + endif + #ifdef MPIV if (bMPI) then ! call MPI_BCAST(quick_qm_struct%o,nbasis*nbasis,mpi_double_precision,0,MPI_COMM_WORLD,mpierror) @@ -714,7 +726,15 @@ subroutine electdiis(jscf,ierr) !--------------- END MPI/ALL NODES ------------------------------------- if (master) then - + + if(quick_method%writeden)then + ! open data file then write calculated info to dat file + call quick_open(iDataFile, dataFileName, 'R', 'U', 'A',.true.,ierr) + call wchk_int(iDataFile, "nbasis", nbasis, fail) + call wchk_darray(iDataFile, "dense", nbasis, nbasis, 1, quick_qm_struct%dense, fail) + close(iDataFile) + endif + #ifdef USEDAT ! open data file then write calculated info to dat file SAFE_CALL(quick_open(iDataFile, dataFileName, 'R', 'U', 'R',.true.,ierr) diff --git a/src/subs/io.f90 b/src/subs/io.f90 index 657f471d..3d57dd03 100644 --- a/src/subs/io.f90 +++ b/src/subs/io.f90 @@ -35,6 +35,7 @@ subroutine wchk_int(chk,key,nvalu,fail) write(chk) 'I ' write(chk) nvalu fail=1 + return 200 return end @@ -376,18 +377,19 @@ subroutine wchk_darray(chk,key,x,y,z,dim,fail) enddo endif - fail=0 - do - read(chk,end=100,err=200) - enddo +! fail=0 +! do +! read(chk,end=100,err=200) +! enddo - 100 rewind(chk) +! 100 rewind(chk) write(chk) '#'//kline(1:40) write(chk) 'RR' write(chk) x*y*z write(chk) (((dim(i,j,k),i=1,x),j=1,y),k=1,z) - fail=1 - 200 return +! fail=1 +! 200 return + return end From de04a4045b48ce59b9cc07511f44c1e73d2005cc Mon Sep 17 00:00:00 2001 From: Vikrant Tripathy Date: Fri, 15 Nov 2024 16:15:40 -0800 Subject: [PATCH 15/15] restart capability for unrestricted calculations --- src/modules/quick_uscf_module.f90 | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/modules/quick_uscf_module.f90 b/src/modules/quick_uscf_module.f90 index f415d210..8ddc90ef 100644 --- a/src/modules/quick_uscf_module.f90 +++ b/src/modules/quick_uscf_module.f90 @@ -147,7 +147,9 @@ subroutine uelectdiis(jscf,ierr) #endif implicit none - + + logical :: fail + ! variable inputed to return integer :: jscf ! scf interation integer, intent(inout) :: ierr @@ -231,6 +233,17 @@ subroutine uelectdiis(jscf,ierr) !-------------- END MPI / ALL NODE ----------- #endif + if(quick_method%readden)then + nbasis = quick_molspec%nbasis + if(master)then + open(unit=iDataFile,file=dataFileName,status='OLD',form='UNFORMATTED') + call rchk_int(iDataFile, "nbasis", nbasis, fail) + call rchk_darray(iDataFile, "dense", nbasis, nbasis, 1, quick_qm_struct%dense, fail) + call rchk_darray(iDataFile, "denseb", nbasis, nbasis, 1, quick_qm_struct%denseb, fail) + close(iDataFile) + endif + endif + #ifdef MPIV if (bMPI) then call MPI_BCAST(quick_qm_struct%dense,nbasis*nbasis,mpi_double_precision,0,MPI_COMM_WORLD,mpierror) @@ -822,6 +835,15 @@ subroutine uelectdiis(jscf,ierr) if (master) then + if(quick_method%writeden)then + ! open data file then write calculated info to dat file + call quick_open(iDataFile, dataFileName, 'R', 'U', 'A',.true.,ierr) + call wchk_int(iDataFile, "nbasis", nbasis, fail) + call wchk_darray(iDataFile, "dense", nbasis, nbasis, 1, quick_qm_struct%dense, fail) + call wchk_darray(iDataFile, "denseb", nbasis, nbasis, 1, quick_qm_struct%denseb, fail) + close(iDataFile) + endif + #ifdef USEDAT ! open data file then write calculated info to dat file SAFE_CALL(quick_open(iDataFile, dataFileName, 'R', 'U', 'R',.true.,ierr)