program check use fortime, only: timer use forunittest, only: unit_test, rk #if defined(USE_MPI) use mpi, only: mpi_init, mpi_finalize #endif implicit none type(unit_test) :: ut #if defined(USE_MPI) integer :: ierr call mpi_init(ierr) #endif call run_test1(ut) call run_test2(ut) call run_test3(ut) call run_test4(ut) call run_test5(ut) call run_test6(ut) call run_test7(ut) call run_test8(ut) call run_test9(ut) call run_test10(ut) call run_test11(ut) call run_test12(ut) call run_test13(ut) call run_test14(ut) call run_test15(ut) call run_test16(ut) call run_test17(ut) call run_test18(ut) call run_test19(ut) call run_test20(ut) call run_test21(ut) call run_test22(ut) call run_test23(ut) call run_test24(ut) call run_test25(ut) call run_test26(ut) call run_test27(ut) call run_test28(ut) call run_test29(ut) call run_test30(ut) call run_test31(ut) call run_test32(ut) #if defined(USE_MPI) call mpi_finalize(ierr) #endif contains subroutine run_test1(ut) type(unit_test), intent(inout) :: ut type(timer) :: t call t%timer_start() call sleep(1) call t%timer_stop() call ut%check(res=t%elapsed_time, expected=1.0_rk, tol=1.0e-1_rk, msg='test1') end subroutine run_test1 subroutine run_test2(ut) type(unit_test), intent(inout) :: ut type(timer) :: t integer :: nl integer, parameter :: nloops = 3 call t%timer_start() do nl = 1, nloops call sleep(1) end do call t%timer_stop(nloops = nloops, message = 'Elapsed time:') call t%timer_write('test/test2_etimes.txt') call ut%check(res=t%elapsed_time, expected=1.0_rk, tol=1.0e-1_rk, msg='test2') end subroutine run_test2 subroutine run_test3(ut) type(unit_test), intent(inout) :: ut type(timer) :: t integer :: nl integer, parameter :: nloops = 3 call t%timer_start() do nl = 1, nloops call sleep(1) end do call t%timer_stop(message = 'Elapsed time:') call t%timer_write('test/test3_etimes.txt') call ut%check(res=t%elapsed_time, expected=real(nloops,rk)*1.0_rk, tol=1.0e-1_rk, msg='test3') end subroutine run_test3 subroutine run_test4(ut) type(unit_test), intent(inout) :: ut type(timer) :: t call t%ctimer_start() call sleep(1) call t%ctimer_stop() call ut%check(res=t%cpu_time >= 0.0_rk, expected=.true., msg='test4') end subroutine run_test4 subroutine run_test5(ut) type(unit_test), intent(inout) :: ut type(timer) :: t integer :: nl integer, parameter :: nloops = 3 call t%ctimer_start() do nl = 1, nloops call sleep(1) end do call t%ctimer_stop(nloops = nloops, message = 'CPU time:') call t%ctimer_write('test/test5_ctimes.txt') call ut%check(res=t%cpu_time >= 0.0_rk, expected=.true., msg='test5') end subroutine run_test5 subroutine run_test6(ut) type(unit_test), intent(inout) :: ut type(timer) :: t integer :: nl integer, parameter :: nloops = 3 call t%ctimer_start() do nl = 1, nloops call sleep(1) end do call t%ctimer_stop(message = 'CPU time:') call t%ctimer_write('test/test6_ctimes.txt') call ut%check(res=t%cpu_time >= 0.0_rk, expected=.true., msg='test6') end subroutine run_test6 subroutine run_test7(ut) type(unit_test), intent(inout) :: ut #if defined(USE_OMP) type(timer) :: t call t%otimer_start() call sleep(1) call t%otimer_stop() call ut%check(res=t%omp_time, expected=1.0_rk, tol=1.0e-1_rk, msg='test7') #else call ut%check(res=.true., expected=.true., msg='test7 skipped USE_OMP') #endif end subroutine run_test7 subroutine run_test8(ut) type(unit_test), intent(inout) :: ut #if defined(USE_OMP) type(timer) :: t integer :: nl integer, parameter :: nloops = 3 call t%otimer_start() do nl = 1, nloops call sleep(1) end do call t%otimer_stop(nloops = nloops, message = 'OMP time:') call t%otimer_write('test/test8_otimes.txt') call ut%check(res=t%omp_time, expected=1.0_rk, tol=1.0e-1_rk, msg='test8') #else call ut%check(res=.true., expected=.true., msg='test8 skipped USE_OMP') #endif end subroutine run_test8 subroutine run_test9(ut) type(unit_test), intent(inout) :: ut #if defined(USE_OMP) type(timer) :: t integer :: nl integer, parameter :: nloops = 3 call t%otimer_start() do nl = 1, nloops call sleep(1) end do call t%otimer_stop(message = 'OMP time:') call t%otimer_write('test/test9_otimes') call ut%check(res=t%omp_time, expected=real(nloops,rk)*1.0_rk, tol=1.0e-1_rk, msg='test9') #else call ut%check(res=.true., expected=.true., msg='test9 skipped USE_OMP') #endif end subroutine run_test9 subroutine run_test10(ut) type(unit_test), intent(inout) :: ut #if defined(USE_MPI) type(timer) :: t call t%mtimer_start() call sleep(1) call t%mtimer_stop() call ut%check(res=t%mpi_time, expected=1.0_rk, tol=1.0e-1_rk, msg='test10') #else call ut%check(res=.true., expected=.true., msg='test10 skipped USE_MPI') #endif end subroutine run_test10 subroutine run_test11(ut) type(unit_test), intent(inout) :: ut #if defined(USE_MPI) type(timer) :: t integer :: nl integer, parameter :: nloops = 3 call t%mtimer_start() do nl = 1, nloops call sleep(1) end do call t%mtimer_stop(nloops = nloops, message = 'MPI time:') call t%mtimer_write('test/test11_mtimes.txt') call ut%check(res=t%mpi_time, expected=1.0_rk, tol=1.0e-1_rk, msg='test11') #else call ut%check(res=.true., expected=.true., msg='test11 skipped USE_MPI') #endif end subroutine run_test11 subroutine run_test12(ut) type(unit_test), intent(inout) :: ut #if defined(USE_MPI) type(timer) :: t integer :: nl integer, parameter :: nloops = 3 call t%mtimer_start() do nl = 1, nloops call sleep(1) end do call t%mtimer_stop(message = 'MPI time:') call t%mtimer_write('test/test12_mtimes') call ut%check(res=t%mpi_time, expected=real(nloops,rk)*1.0_rk, tol=1.0e-1_rk, msg='test12') #else call ut%check(res=.true., expected=.true., msg='test12 skipped USE_MPI') #endif end subroutine run_test12 subroutine run_test13(ut) type(unit_test), intent(inout) :: ut type(timer) :: t call t%timer_start() call sleep(1) call t%timer_stop(print=.false.) call ut%check(res=t%elapsed_time, expected=1.0_rk, tol=1.0e-1_rk, msg='test13') end subroutine run_test13 subroutine run_test14(ut) type(unit_test), intent(inout) :: ut type(timer) :: t integer :: nl integer, parameter :: nloops = 3 call t%timer_start() do nl = 1, nloops call sleep(1) end do call t%timer_stop(nloops = nloops, message = 'Elapsed time:', print=.false.) call t%timer_write('test/test14_etimes.txt') call ut%check(res=t%elapsed_time, expected=1.0_rk, tol=1.0e-1_rk, msg='test14') end subroutine run_test14 subroutine run_test15(ut) type(unit_test), intent(inout) :: ut type(timer) :: t integer :: nl integer, parameter :: nloops = 3 call t%timer_start() do nl = 1, nloops call sleep(1) end do call t%timer_stop(message = 'Elapsed time:', print=.false.) call t%timer_write('test/test15_etimes.txt') call ut%check(res=t%elapsed_time, expected=real(nloops,rk)*1.0_rk, tol=1.0e-1_rk, msg='test15') end subroutine run_test15 subroutine run_test16(ut) type(unit_test), intent(inout) :: ut type(timer) :: t call t%ctimer_start() call sleep(1) call t%ctimer_stop(print=.false.) call ut%check(res=t%cpu_time >= 0.0_rk, expected=.true., msg='test16') end subroutine run_test16 subroutine run_test17(ut) type(unit_test), intent(inout) :: ut type(timer) :: t integer :: nl integer, parameter :: nloops = 3 call t%ctimer_start() do nl = 1, nloops call sleep(1) end do call t%ctimer_stop(nloops = nloops, message = 'CPU time:', print=.false.) call t%ctimer_write('test/test17_ctimes.txt') call ut%check(res=t%cpu_time >= 0.0_rk, expected=.true., msg='test17') end subroutine run_test17 subroutine run_test18(ut) type(unit_test), intent(inout) :: ut type(timer) :: t integer :: nl integer, parameter :: nloops = 3 call t%ctimer_start() do nl = 1, nloops call sleep(1) end do call t%ctimer_stop(message = 'CPU time:', print=.false.) call t%ctimer_write('test/test18_ctimes.txt') call ut%check(res=t%cpu_time >= 0.0_rk, expected=.true., msg='test18') end subroutine run_test18 subroutine run_test19(ut) type(unit_test), intent(inout) :: ut #if defined(USE_OMP) type(timer) :: t call t%otimer_start() call sleep(1) call t%otimer_stop(print=.false.) call ut%check(res=t%omp_time, expected=1.0_rk, tol=1.0e-1_rk, msg='test19') #else call ut%check(res=.true., expected=.true., msg='test19 skipped USE_OMP') #endif end subroutine run_test19 subroutine run_test20(ut) type(unit_test), intent(inout) :: ut #if defined(USE_OMP) type(timer) :: t integer :: nl integer, parameter :: nloops = 3 call t%otimer_start() do nl = 1, nloops call sleep(1) end do call t%otimer_stop(nloops = nloops, message = 'OMP time:', print=.false.) call t%otimer_write('test/test20_otimes.txt') call ut%check(res=t%omp_time, expected=1.0_rk, tol=1.0e-1_rk, msg='test20') #else call ut%check(res=.true., expected=.true., msg='test20 skipped USE_OMP') #endif end subroutine run_test20 subroutine run_test21(ut) type(unit_test), intent(inout) :: ut #if defined(USE_OMP) type(timer) :: t integer :: nl integer, parameter :: nloops = 3 call t%otimer_start() do nl = 1, nloops call sleep(1) end do call t%otimer_stop(message = 'OMP time:', print=.false.) call t%otimer_write('test/test21_otimes') call ut%check(res=t%omp_time, expected=real(nloops,rk)*1.0_rk, tol=1.0e-1_rk, msg='test21') #else call ut%check(res=.true., expected=.true., msg='test21 skipped USE_OMP') #endif end subroutine run_test21 subroutine run_test22(ut) type(unit_test), intent(inout) :: ut #if defined(USE_MPI) type(timer) :: t call t%mtimer_start() call sleep(1) call t%mtimer_stop(print=.false.) call ut%check(res=t%mpi_time, expected=1.0_rk, tol=1.0e-1_rk, msg='test22') #else call ut%check(res=.true., expected=.true., msg='test22 skipped USE_MPI') #endif end subroutine run_test22 subroutine run_test23(ut) type(unit_test), intent(inout) :: ut #if defined(USE_MPI) type(timer) :: t integer :: nl integer, parameter :: nloops = 3 call t%mtimer_start() do nl = 1, nloops call sleep(1) end do call t%mtimer_stop(nloops = nloops, message = 'MPI time:', print=.false.) call t%mtimer_write('test/test23_mtimes.txt') call ut%check(res=t%mpi_time, expected=1.0_rk, tol=1.0e-1_rk, msg='test23') #else call ut%check(res=.true., expected=.true., msg='test23 skipped USE_MPI') #endif end subroutine run_test23 subroutine run_test24(ut) type(unit_test), intent(inout) :: ut #if defined(USE_MPI) type(timer) :: t integer :: nl integer, parameter :: nloops = 3 call t%mtimer_start() do nl = 1, nloops call sleep(1) end do call t%mtimer_stop(message = 'MPI time:', print=.false.) call t%mtimer_write('test/test24_mtimes') call ut%check(res=t%mpi_time, expected=real(nloops,rk)*1.0_rk, tol=1.0e-1_rk, msg='test24') #else call ut%check(res=.true., expected=.true., msg='test24 skipped USE_MPI') #endif end subroutine run_test24 subroutine run_test25(ut) type(unit_test), intent(inout) :: ut type(timer) :: t call t%dtimer_start() call sleep(1) call t%dtimer_stop() call ut%check(res=t%elapsed_dtime, expected=1.0_rk, tol=1.0e-1_rk, msg='test25') end subroutine run_test25 subroutine run_test26(ut) type(unit_test), intent(inout) :: ut type(timer) :: t integer :: nl integer, parameter :: nloops = 3 call t%dtimer_start() do nl = 1, nloops call sleep(1) end do call t%dtimer_stop(nloops = nloops, message = 'Elapsed time:') call t%dtimer_write('test/test26_etimes.txt') call ut%check(res=t%elapsed_dtime, expected=1.0_rk, tol=1.0e-1_rk, msg='test26') end subroutine run_test26 subroutine run_test27(ut) type(unit_test), intent(inout) :: ut type(timer) :: t integer :: nl integer, parameter :: nloops = 3 call t%dtimer_start() do nl = 1, nloops call sleep(1) end do call t%dtimer_stop(message = 'Elapsed time:') call t%dtimer_write('test/test27_etimes.txt') call ut%check(res=t%elapsed_dtime, expected=real(nloops,rk)*1.0_rk, tol=1.0e-1_rk, msg='test27') end subroutine run_test27 subroutine run_test28(ut) type(unit_test), intent(inout) :: ut type(timer) :: t call t%dtimer_start() call sleep(1) call t%dtimer_stop(print=.false.) call ut%check(res=t%elapsed_dtime, expected=1.0_rk, tol=1.0e-1_rk, msg='test28') end subroutine run_test28 subroutine run_test29(ut) type(unit_test), intent(inout) :: ut type(timer) :: t integer :: nl integer, parameter :: nloops = 3 call t%dtimer_start() do nl = 1, nloops call sleep(1) end do call t%dtimer_stop(nloops = nloops, message = 'Elapsed time:', print=.false.) call t%dtimer_write('test/test29_etimes.txt') call ut%check(res=t%elapsed_dtime, expected=1.0_rk, tol=1.0e-1_rk, msg='test29') end subroutine run_test29 subroutine run_test30(ut) type(unit_test), intent(inout) :: ut type(timer) :: t integer :: nl integer, parameter :: nloops = 3 call t%dtimer_start() do nl = 1, nloops call sleep(1) end do call t%dtimer_stop(message = 'Elapsed time:', print=.false.) call t%dtimer_write('test/test30_etimes.txt') call ut%check(res=t%elapsed_dtime, expected=real(nloops,rk)*1.0_rk, tol=1.0e-1_rk, msg='test30') end subroutine run_test30 subroutine run_test31(ut) type(unit_test), intent(inout) :: ut type(timer) :: t call t%timer_start() call sleep(1) call t%timer_pause() call sleep(1) call t%timer_resume() call sleep(1) call t%timer_stop() call ut%check(res=t%elapsed_time, expected=2.0_rk, tol=1.0e-1_rk, msg='test31') end subroutine run_test31 subroutine run_test32(ut) type(unit_test), intent(inout) :: ut type(timer) :: t t%elapsed_time = 42.0_rk call t%timer_start() call t%timer_stop(nloops=0, print=.false.) call ut%check(res=t%elapsed_time, expected=42.0_rk, tol=0.0_rk, msg='test32 nloops') end subroutine run_test32 end program check