1 #include <../../nrnconf.h>
15 #if defined(HAVE_TMS) && !NRNMPI
17 #include <sys/times.h>
19 static struct tms tmsbuf, tms_start_;
20 static clock_t starttime;
32 #define debug BBSImpl::debug_
138 return double(times(&tmsbuf)) / 100.;
175 printf(
"upkdouble %g\n", d);
190 printf(
"upkstr |%s|\n", s);
198 printf(
"upkpickle %lu |%s|\n", *
n, s);
219 printf(
"pkdouble %g\n", x);
233 printf(
"pkstr |%s|\n", s);
240 printf(
"pkpickle %lu |%s|\n",
n, s);
345 printf(
"can't execute BBS::context on a worker\n");
370 printf(
"working n_=%d: return false\n",
n_);
400 printf(
"working n_=%d: after %d try elapsed %g sec got result for %d id=%d x=%g\n",
456 printf(
"look_take |%s| return %d\n",
key, b);
493 clock_t elapsed = times(&tmsbuf) - starttime;
494 printf(
"%d tasks in %g seconds. %g seconds waiting for tasks\n",
498 printf(
"user=%g sys=%g elapsed=%g %g%%\n",
499 (
double) (tmsbuf.tms_utime - tms_start_.tms_utime) / 100,
500 (
double) (tmsbuf.tms_stime - tms_start_.tms_stime) / 100,
501 (
double) (elapsed) / 100,
502 100. * (
double) (tmsbuf.tms_utime - tms_start_.tms_utime) / (
double) elapsed);
512 starttime = times(&tms_start_);
bool look_take(const char *)
void master_works(int flag)
void upkvec(int n, double *px)
void pkvec(int n, double *px)
bool working(int &id, double &x, int &userid)
void perror(const char *)
void add_wait_time(double)
void pkpickle(const char *, size_t size)
char * upkpickle(size_t *size)
virtual bool look_take(const char *)=0
virtual void return_args(int userid)
virtual void post_result(int id)=0
char * execute_helper(size_t *, int id, bool exec=true)
virtual void save_args(int userid)=0
virtual int take_todo()=0
virtual int submit(int userid)
static bool master_works_
virtual void pkstr(const char *)=0
virtual void execute(int id)
virtual void upkvec(int, double *)=0
virtual int look_take_result(int pid)=0
virtual char * upkstr()=0
virtual void perror(const char *)
virtual void pkvec(int, double *)=0
virtual void pkpickle(const char *, size_t)=0
virtual void pkint(int)=0
void subworld_worker_execute()
virtual int look_take_todo()=0
virtual void post_todo(int parentid)=0
virtual bool working(int &id, double &x, int &userid)
virtual void post(const char *)=0
virtual void take(const char *)=0
virtual double upkdouble()=0
virtual bool look(const char *)=0
virtual char * upkpickle(size_t *)=0
virtual void pkdouble(double)=0
virtual int master_take_result(int pid)
static double nrnmpi_wtime()
int const size_t const size_t n
static double total_exec_time
static double worker_take_time
static double userid(void *v)