diff options
author | tlatorre <tlatorre@uchicago.edu> | 2019-12-04 16:41:16 -0600 |
---|---|---|
committer | tlatorre <tlatorre@uchicago.edu> | 2019-12-04 16:41:16 -0600 |
commit | 0a8921c928af7d30a315caa5b1e52e374da90b80 (patch) | |
tree | a2cde5caae45d6e7a6ae26dd9ff389e4e572c265 /src | |
parent | f80f0c724503a8a0f6e10e988b98580e4ecc84e9 (diff) | |
download | sddm-0a8921c928af7d30a315caa5b1e52e374da90b80.tar.gz sddm-0a8921c928af7d30a315caa5b1e52e374da90b80.tar.bz2 sddm-0a8921c928af7d30a315caa5b1e52e374da90b80.zip |
update submit-grid-jobs and cat-grid-jobs
This commit updates submit-grid-jobs so that it keeps a database of jobs. This
allows the script to make sure that we only have a certain number of jobs in
the job queue at a single time and automatically resubmitting failed jobs. The
idea is that it can now be run once to add jobs to the database:
$ submit-grid-jobs ~/zdabs/SNOCR_0000010000_000_p4_reduced.xzdab.gz
and then be run periodically via crontab:
PATH=/usr/bin:$HOME/local/bin
SDDM_DATA=$HOME/sddm/src
DQXX_DIR=$HOME/dqxx
0 * * * * submit-grid-jobs --auto --logfile ~/submit.log
Similarly I updated cat-grid-jobs so that it uses the same database and can
also be run via a cron job:
PATH=/usr/bin:$HOME/local/bin
SDDM_DATA=$HOME/sddm/src
DQXX_DIR=$HOME/dqxx
0 * * * * cat-grid-jobs --logfile cat.log --output-dir $HOME/fit_results
I also updated fit so that it keeps track of the total time elapsed including
the initial fits instead of just counting the final fits.
Diffstat (limited to 'src')
-rw-r--r-- | src/fit.c | 29 |
1 files changed, 17 insertions, 12 deletions
@@ -5432,6 +5432,7 @@ int fit_event2(event *ev, double *xopt, double *fmin, int *id, size_t n, double size_t *result; size_t nvertices; int status; + int rv; /* Create the minimizer object. */ opt = nlopt_create(NLOPT_LN_BOBYQA, 4+3*n); @@ -5516,6 +5517,8 @@ int fit_event2(event *ev, double *xopt, double *fmin, int *id, size_t n, double for (i = 0; i < n; i++) fpars.id[i] = id[i]; + time_elapsed = 0.0; + for (i = 0; i < nvertices; i++) { /* Copy the starting parameters to the `x` array. */ memcpy(x,x0,sizeof(x)); @@ -5581,6 +5584,8 @@ int fit_event2(event *ev, double *xopt, double *fmin, int *id, size_t n, double long long elapsed = (tv_stop.tv_sec - tv_start.tv_sec)*1000 + (tv_stop.tv_usec - tv_start.tv_usec)/1000; + time_elapsed += elapsed/1000.0; + printf("%4zu/%4zu %7.2f %7.2f %7.2f %6.2f ", i+1, nvertices, @@ -5661,13 +5666,13 @@ close: exit(0); } - gettimeofday(&tv_start, NULL); - nlopt_optimize(opt,x,&fval); + gettimeofday(&tv_start, NULL); + rv = nlopt_optimize(opt,x,&fval); gettimeofday(&tv_stop, NULL); - time_elapsed = tv_stop.tv_sec - tv_start.tv_sec + (tv_stop.tv_usec - tv_start.tv_usec)/1e6; + time_elapsed += tv_stop.tv_sec - tv_start.tv_sec + (tv_stop.tv_usec - tv_start.tv_usec)/1e6; - if (time_elapsed > maxtime) goto end; + if (time_elapsed > maxtime || rv == NLOPT_MAXTIME_REACHED) goto end; if (stop) goto stop; @@ -5678,20 +5683,20 @@ close: nlopt_set_maxtime(opt, maxtime-time_elapsed); gettimeofday(&tv_start, NULL); - nlopt_optimize(opt,x,&fval); + rv = nlopt_optimize(opt,x,&fval); gettimeofday(&tv_stop, NULL); time_elapsed += tv_stop.tv_sec - tv_start.tv_sec + (tv_stop.tv_usec - tv_start.tv_usec)/1e6; if (stop) goto stop; - } while (fval < *fmin && fabs(fval-*fmin) > 1e-2 && time_elapsed < maxtime); + } while (fval < *fmin && fabs(fval-*fmin) > 1e-2 && time_elapsed < maxtime && rv != NLOPT_MAXTIME_REACHED); if (fval < *fmin) { *fmin = fval; memcpy(xopt,x,sizeof(x)); } - if (time_elapsed >= maxtime) goto end; + if (time_elapsed > maxtime || rv == NLOPT_MAXTIME_REACHED) goto end; /* Now, minimize with SBPLX. * @@ -5720,12 +5725,12 @@ close: memcpy(x,xopt,sizeof(x)); gettimeofday(&tv_start, NULL); - nlopt_optimize(opt,x,&fval); + rv = nlopt_optimize(opt,x,&fval); gettimeofday(&tv_stop, NULL); - time_elapsed = tv_stop.tv_sec - tv_start.tv_sec + (tv_stop.tv_usec - tv_start.tv_usec)/1e6; + time_elapsed += tv_stop.tv_sec - tv_start.tv_sec + (tv_stop.tv_usec - tv_start.tv_usec)/1e6; - if (time_elapsed > maxtime) goto end; + if (time_elapsed > maxtime || rv == NLOPT_MAXTIME_REACHED) goto end; if (stop) goto stop; @@ -5736,13 +5741,13 @@ close: nlopt_set_maxtime(opt, maxtime-time_elapsed); gettimeofday(&tv_start, NULL); - nlopt_optimize(opt,x,&fval); + rv = nlopt_optimize(opt,x,&fval); gettimeofday(&tv_stop, NULL); time_elapsed += tv_stop.tv_sec - tv_start.tv_sec + (tv_stop.tv_usec - tv_start.tv_usec)/1e6; if (stop) goto stop; - } while (fval < *fmin && fabs(fval-*fmin) > 1e-2 && time_elapsed < maxtime); + } while (fval < *fmin && fabs(fval-*fmin) > 1e-2 && time_elapsed < maxtime && rv != NLOPT_MAXTIME_REACHED); if (fval < *fmin) { *fmin = fval; |