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/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'` diff --git a/src/modules/quick_files_module.f90 b/src/modules/quick_files_module.f90 index 76e7fa58..fb552f7b 100644 --- a/src/modules/quick_files_module.f90 +++ b/src/modules/quick_files_module.f90 @@ -148,6 +148,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 @@ -292,7 +314,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/modules/quick_method_module.f90 b/src/modules/quick_method_module.f90 index 633cc3e4..3450ceec 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 @@ -247,8 +247,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%ext_grid,1,mpi_logical,0,MPI_COMM_WORLD,mpierror) call MPI_BCAST(self%extgrid_angstrom,1,mpi_logical,0,MPI_COMM_WORLD,mpierror) @@ -424,8 +424,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")') @@ -526,24 +526,12 @@ subroutine read_quick_method(self,keywd,ierr) use quick_exception_module use quick_mpi_module use quick_files_module, only : write_molden - use quick_files_module, only : dataFileName implicit none character(len=300) :: keyWD character(len=300) :: tempstring integer :: itemp,i,j type (quick_method_type) self integer, intent(inout) :: ierr - logical :: found - - tempstring = keyWD - call upcase(tempstring,300) - if (index(tempstring,'READPMAT').ne.0)then - self%readPMat=.true. - call read(tempstring, 'READPMAT', i, j, .false., found) - if(found)then - dataFileName = keyWD(i:i+j-2) - endif - endif call upcase(keyWD,300) if (index(keyWD,'PDB').ne. 0) self%PDB=.true. @@ -668,8 +656,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,'EXTGRID').ne.0) self%ext_grid=.true. !if (index(keyWD,'EXTGRID_ANGSTROM').ne.0) self%extgrid_angstrom=.true. @@ -690,6 +677,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 @@ -908,8 +898,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%ext_grid = .false. ! external grid points self%extgrid_angstrom = .false. ! external grid points (same as above) output in angstrom diff --git a/src/modules/quick_scf_module.f90 b/src/modules/quick_scf_module.f90 index a0ee83dc..6288bdc0 100644 --- a/src/modules/quick_scf_module.f90 +++ b/src/modules/quick_scf_module.f90 @@ -182,9 +182,9 @@ subroutine electdiis(jscf,ierr) #endif implicit none - - logical fail - + + logical :: fail + ! variable inputed to return integer :: jscf ! scf iteration integer, intent(inout) :: ierr @@ -269,17 +269,16 @@ subroutine electdiis(jscf,ierr) if (bMPI) call MPI_setup_hfoperator !-------------- END MPI / ALL NODE ----------- #endif - - if(quick_method%readPMat)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 - + 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) @@ -726,17 +725,15 @@ subroutine electdiis(jscf,ierr) !--------------- END MPI/ALL NODES ------------------------------------- if (master) then - - if(quick_method%writepmat)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) -! rewind(iDataFile) call wchk_int(iDataFile, "nbasis", nbasis, fail) call wchk_darray(iDataFile, "dense", nbasis, nbasis, 1, quick_qm_struct%dense, fail) -! call wchk_darray(iDataFile, "denseSave", nbasis, nbasis, 1, quick_qm_struct%denseSave, fail) close(iDataFile) - endif - + 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/modules/quick_uscf_module.f90 b/src/modules/quick_uscf_module.f90 index 8bd6c187..b6ab2b28 100644 --- a/src/modules/quick_uscf_module.f90 +++ b/src/modules/quick_uscf_module.f90 @@ -151,7 +151,9 @@ subroutine uelectdiis(jscf,ierr) #endif implicit none - + + logical :: fail + ! variable inputed to return integer :: jscf ! scf iteration integer, intent(inout) :: ierr @@ -235,6 +237,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) @@ -826,6 +839,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) diff --git a/src/read_job_and_atom.f90 b/src/read_job_and_atom.f90 index 39354134..ff52fef2 100644 --- a/src/read_job_and_atom.f90 +++ b/src/read_job_and_atom.f90 @@ -49,16 +49,24 @@ 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 + 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 - write(iOutFile,'(" KEYWORD=",a)') trim(keyWD) -! call upcase(keyWD,300) - call read(quick_qm_struct,keyWD) ! read qm struct from Keyword call check(quick_method,iOutFile,ierr) ! check the correctness call print(quick_method,iOutFile,ierr) ! then print method @@ -66,7 +74,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 diff --git a/src/subs/io.f90 b/src/subs/io.f90 index e90a7a0e..3d57dd03 100644 --- a/src/subs/io.f90 +++ b/src/subs/io.f90 @@ -381,7 +381,7 @@ subroutine wchk_darray(chk,key,x,y,z,dim,fail) ! do ! read(chk,end=100,err=200) ! enddo -! + ! 100 rewind(chk) write(chk) '#'//kline(1:40) write(chk) 'RR' diff --git a/test/testlist_full.txt b/test/testlist_full.txt index 2ef57266..cd553257 100644 --- a/test/testlist_full.txt +++ b/test/testlist_full.txt @@ -1,169 +1,173 @@ -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 #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_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..e5fce379 --- /dev/null +++ b/test/testlist_full_gpu.txt @@ -0,0 +1,170 @@ +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, 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, 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, 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 #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 1c528f89..97790b44 100644 --- a/test/testlist_short.txt +++ b/test/testlist_short.txt @@ -1,25 +1,27 @@ -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 #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_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..776ccdc6 --- /dev/null +++ b/test/testlist_short_gpu.txt @@ -0,0 +1,34 @@ +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 #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/tools/runtest b/tools/runtest index ff660282..75768cef 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,257 +69,114 @@ 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: - --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. - - " -exit 0; + 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; } -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 +191,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 +206,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 +217,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 +232,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 +247,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 +262,395 @@ 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 -F ',' '{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=() + tot_ene_tests=0 + tot_grad_tests=0 + tot_opt_tests=0 + tot_api_tests=0 + 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 [ -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 + # 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" + echo "" | tee -a "$6" + else + echo "SKIPPED." | tee -a "$6" + echo "==============================================================" | tee -a "$6" + echo "" | tee -a "$6" + fi + unlock_file "$6" + clean_up "$1" +} - "$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" + echo "" | tee -a "$6" + else + echo "SKIPPED." | tee -a "$6" + echo "==============================================================" | tee -a "$6" + echo "" | tee -a "$6" + fi + unlock_file "$6" + clean_up "$1" } -# 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" + echo "" | tee -a "$6" + else + echo "SKIPPED." | tee -a "$6" + echo "==============================================================" | tee -a "$6" + echo "" | tee -a "$6" + fi + unlock_file "$6" + clean_up "$1" +} - 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" + echo "" | tee -a "$6" + unlock_file "$6" + clean_up "$1" } -# 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. +# +# arguments: +# $1: test name +# $2: directory containing test files and scripts +# $3: log file +check_energy() +{ + 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 '4.0e-5' "$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. +# +# arguments: +# $1: test name +# $2: directory containing test files and scripts +# $3: log file +check_gradient() +{ + 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 '4.0e-3' "$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. +# +# arguments: +# $1: test name +# $2: directory containing test files and scripts +# $3: log file +check_opt() +{ + 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 '4.0e-3' "$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 +662,6 @@ print_summary(){ echo "" >> $QUICK_HOME/.quick.runtest.summary.log fi - for buildtype in $buildtypes; do total_ene=0 total_grad=0 @@ -587,55 +671,54 @@ 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 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 + 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 @@ -652,7 +735,6 @@ print_summary(){ fi rm -f .quick.runtest.${buildtype}.summary.tmp1 .quick.runtest.${buildtype}.summary.tmp0 - done echo "$sum_footer" @@ -660,21 +742,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 +786,6 @@ done # !---------------------------------------------------------------------! # ! Check directories & executables ! # !---------------------------------------------------------------------! - if [ ! -d "$qbindir" ]; then if [ "$AMBERHOME" != "" ]; then # Assume we are in Amber @@ -723,7 +809,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 +876,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 +911,6 @@ else echo "Error: No QUICK executables found in $qbindir. " exit 1 fi - fi if [ ! -f "$testdir/testlist_short.txt" ]; then @@ -840,52 +923,90 @@ 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 - if [ "$hipmpi" = 'yes' ]; then - echo "" >> $QUICK_HOME/.quick.hipmpi.runtest.log - echo "$mpimsg" >> $QUICK_HOME/.quick.hipmpi.runtest.log - fi + if [ "$cuda" = 'yes' -o "$cudampi" = 'yes' ]; then + 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 [ -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 + 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 + 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 # !---------------------------------------------------------------------! # ! Create required directories ! # !---------------------------------------------------------------------! - if [ ! -d "$testdir/runs" ]; then mkdir -p "$testdir/runs" fi @@ -898,7 +1019,6 @@ done # !---------------------------------------------------------------------! # ! Set test tyeps ! # !---------------------------------------------------------------------! - if [ "$uspec_test" = 'no' ]; then test_ene='yes' test_grad='yes' @@ -909,90 +1029,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=$(($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" \ + "$testdir" "$QUICK_HOME/.quick.${buildtype}.runtest.log" + done + elif [ $has_parallel = 'yes' ]; then + 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)):$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 - 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" --xapply --will-cite run_grad_test {1} {2} {3} \ + "$total_tests" "$testdir" "$QUICK_HOME/.quick.${buildtype}.runtest.log" {%} \ + ::: "${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 - 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" --xapply --will-cite run_opt_test {1} {2} {3} \ + "$total_tests" "$testdir" "$QUICK_HOME/.quick.${buildtype}.runtest.log" {%} \ + ::: "${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 - 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" --xapply --will-cite run_api_test {1} {2} {3} \ + "$total_tests" "$testdir" "$QUICK_HOME/.quick.${buildtype}.runtest.log" {%} \ + ::: "${tests[@]:$(($tc_start-1)):$tot_api_tests}" ::: "${test_names[@]:$(($tc_start-1)):$tot_api_tests}" \ + ::: `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 +1150,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 -