39 use mpi_f08,
only : mpi_bcast, mpi_logical, mpi_wtime
56 real(kind=
dp) :: jobtime
71 character(len=*) limit_str
72 integer :: str_len, sep_h, h, m, s
74 str_len = len_trim(limit_str)
76 if (str_len .lt. 8)
then
81 sep_h = scan(trim(limit_str),
':')
82 read(limit_str(1:sep_h-1), *) h
85 read(limit_str(sep_h+1:sep_h+2), *) m
88 read(limit_str(sep_h+4:str_len), *) s
110 character(len=LOG_SIZE) :: log_buf
116 write(log_buf,
'(A)')
'! stop at job limit >>>'
121 call mpi_bcast(jstop, 1, mpi_logical, 0,
neko_comm, ierr)
127 real(kind=
rp),
save :: stime
128 real(kind=
rp) :: jobtime
129 logical,
save :: init = .false.
136 jobtime = mpi_wtime() - stime
type(mpi_comm), public neko_comm
MPI communicator.
subroutine jobctrl_set_time_limit_str(limit_str)
Set a job's time limit (in walltime 'HH:MM:SS')
logical function, public jobctrl_time_limit()
Check if the job's time limit has been reached.
real(kind=rp) function, public jobctrl_jobtime()
Returns a job's time in seconds relative to the first call.
subroutine jobctrl_set_time_limit_sec(sec)
Set a job's time limit (in seconds)
subroutine, public jobctrl_init()
Initialize jobctrl.
integer, parameter, public neko_log_quiet
Always logged.
type(log_t), public neko_log
Global log stream.
integer, parameter, public dp
integer, parameter, public rp
Global precision used in computations.
Interface to signal handler.
subroutine, public signal_set_timeout(sec)
Set a timeout after seconds.
logical function, public signal_usr(usr)
Check if a user signal has been raised.
subroutine, public signal_trap_usr()
Initialize signal handler to trap SIGUSR1 and SIGUSR2.
logical function, public signal_timeout()
Check if any timeout has occurred (either SIGXCPU or SIGALRM)
subroutine, public signal_trap_cpulimit()
Initialize signal handler to trap SIGXCPU.