aboutsummaryrefslogtreecommitdiff
path: root/src/ManualTermination.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ManualTermination.c')
-rw-r--r--src/ManualTermination.c80
1 files changed, 19 insertions, 61 deletions
diff --git a/src/ManualTermination.c b/src/ManualTermination.c
index 0dce2fe..e0e32c4 100644
--- a/src/ManualTermination.c
+++ b/src/ManualTermination.c
@@ -1,39 +1,12 @@
-#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <errno.h>
#include "cctk.h"
#include "cctk_Arguments.h"
#include "cctk_Parameters.h"
#include "cctk_Termination.h"
#include "cctk_Timers.h"
-#include "ManualTermination.h"
-enum{ BUFLEN = 128 };
-
-/* On first call, pass parameter terminate_filename.
- If it is null will construct file name in /tmp based on PBS_JOBID.
- Subsequent calls ignore the argument, and return a static buffer.
-*/
-const char * MT_get_terminate_filename( CCTK_STRING terminate_filename )
-{
- static char buf[BUFLEN];
-
- if( strlen( buf ) != 0 )
- return buf;
-
- if( strlen( terminate_filename ) == 0 )
- {
- const char * pbs_jobid = getenv("PBS_JOBID");
- snprintf( buf, BUFLEN, "/tmp/cactus_terminate.%s", pbs_jobid );
- }
- else
- {
- snprintf( buf, BUFLEN, "%s", terminate_filename );
- }
- return buf;
-}
int ManualTermination_StartTimer (CCTK_ARGUMENTS)
{
@@ -50,9 +23,9 @@ int ManualTermination_StartTimer (CCTK_ARGUMENTS)
return (0);
}
/* Create timer */
- TimerIndex = CCTK_TimerCreate("WatchWalltime");
+ TimerIndex = CCTK_TimerCreate ("WatchWalltime");
/* Start timer */
- ierr = CCTK_TimerStart("WatchWalltime");
+ ierr = CCTK_TimerStart ("WatchWalltime");
*watchminutes = output_remtime_every_minutes*1.0e0;
@@ -60,22 +33,6 @@ int ManualTermination_StartTimer (CCTK_ARGUMENTS)
CCTK_VInfo (CCTK_THORNSTRING, "Reminding you every %d "
"minutes about remaining walltime.",
output_remtime_every_minutes);
-
- if( termination_from_file )
- {
- FILE *termfile = fopen( MT_get_terminate_filename(termination_file), "w" );
- if( termfile != NULL )
- {
- fprintf( termfile, "%d", 0 );
- fclose( termfile );
- }
- else
- {
- CCTK_VWarn (CCTK_WARN_ABORT, __LINE__, __FILE__, "ManualTermination",
- "Could not open termination file '%s'. Error: %d",
- MT_get_terminate_filename(NULL), strerror(errno));
- }
- }
return (retval);
}
@@ -94,7 +51,7 @@ int ManualTermination_CheckWalltime (CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
- int retval,ierr;
+ int retval = 0,ierr;
cTimerData *info;
const cTimerVal *walltime;
CCTK_REAL time;
@@ -104,37 +61,38 @@ int ManualTermination_CheckWalltime (CCTK_ARGUMENTS)
{
return (0);
}
+ if (on_remaining_walltime <= 0)
+ return retval;
- info = CCTK_TimerCreateData();
- ierr = CCTK_Timer("WatchWalltime",info);
-
+ info = CCTK_TimerCreateData ();
+ ierr = CCTK_Timer ("WatchWalltime",info);
/* stop timer */
- ierr = CCTK_TimerStop("WatchWalltime");
+ ierr = CCTK_TimerStop ("WatchWalltime");
/* get walltime */
- walltime = CCTK_GetClockValue("gettimeofday",info);
- time = CCTK_TimerClockSeconds(walltime);
- CCTK_TimerDestroyData(info);
- /* Start timer */
- ierr = CCTK_TimerStart("WatchWalltime");
+ walltime = CCTK_GetClockValue ("gettimeofday",info);
+ time = CCTK_TimerClockSeconds (walltime);
+ CCTK_TimerDestroyData (info);
+ /* start timer */
+ ierr = CCTK_TimerStart ("WatchWalltime");
- if ( (time/60.0e0 > *watchminutes) && *watchminutes != 0)
+ if ((time/60.0e0 > *watchminutes) && *watchminutes != 0)
{
*watchminutes = (*watchminutes)+output_remtime_every_minutes*1.0e0;
- CCTK_INFO ("***********************************************************");
+ CCTK_INFO ("------------------------------------------------------");
CCTK_VInfo (CCTK_THORNSTRING, "Remaining wallclock time for your job "
"is %1.2f minutes. :-)", (max_walltime*60.0-time/60.0));
- CCTK_INFO ("***********************************************************");
+ CCTK_INFO ("------------------------------------------------------");
}
if (time/60.0e0 >= (max_walltime*60.0e0 - on_remaining_walltime*1.0e0))
{
+ CCTK_INFO ("------------------------------------------------------");
CCTK_VInfo (CCTK_THORNSTRING, "Remaining wallclock time for your job "
"is %1.2f minutes. Triggering termination ...",
(max_walltime*60.0-time/60.0));
+ CCTK_INFO ("------------------------------------------------------");
CCTK_TerminateNext (cctkGH);
}
- retval = 0;
-
- return (retval);
+ return retval;
}