1 #include <../../nrnconf.h>
18 #if defined(HAVE_SSTREAM)
28 bool operator()(
int i,
int j)
const {
33 class KeepArgs:
public std::map<int, bbsmpibuf*, ltint> {};
51 nrnmpi_unref(sendbuf_);
52 nrnmpi_unref(recvbuf_);
59 printf(
"BBSDirect error %s\n", s);
64 nrnmpi_enddata(sendbuf_);
72 bbsmpibuf* rsav = recvbuf_;
73 recvbuf_ = nrnmpi_newbuf(sendbuf_->size);
75 nrnmpi_copy(recvbuf_, sendbuf_);
76 nrnmpi_upkbegin(recvbuf_);
77 nrnmpi_upkint(recvbuf_);
78 nrnmpi_upkint(recvbuf_);
80 nrnmpi_unref(recvbuf_);
84 nrnmpi_unref(sendbuf_);
90 i = nrnmpi_upkint(recvbuf_);
92 printf(
"upkint returning %d\n",
i);
99 x = nrnmpi_upkdouble(recvbuf_);
101 printf(
"upkdouble returning %g\n", x);
107 nrnmpi_upkvec(
n, x, recvbuf_);
112 s = nrnmpi_upkstr(recvbuf_);
114 printf(
"upkstr returning |%s|\n", s);
121 s = nrnmpi_upkpickle(
n, recvbuf_);
123 printf(
"upkpickle returning %d bytes\n", *
n);
132 nrnmpi_unref(sendbuf_);
133 sendbuf_ = nrnmpi_newbuf(100);
134 nrnmpi_ref(sendbuf_);
135 nrnmpi_pkbegin(sendbuf_);
142 nrnmpi_pkint(
i, sendbuf_);
149 nrnmpi_pkdouble(x, sendbuf_);
156 nrnmpi_pkvec(
n, x, sendbuf_);
163 nrnmpi_pkstr(s, sendbuf_);
170 nrnmpi_pkpickle(s,
n, sendbuf_);
177 nrnmpi_enddata(sendbuf_);
178 nrnmpi_pkstr(
key, sendbuf_);
180 nrnmpi_unref(sendbuf_);
189 nrnmpi_enddata(sendbuf_);
190 nrnmpi_pkint(parentid, sendbuf_);
192 nrnmpi_unref(sendbuf_);
201 nrnmpi_enddata(sendbuf_);
202 nrnmpi_pkint(
id, sendbuf_);
204 nrnmpi_unref(sendbuf_);
213 nrnmpi_upkbegin(recvbuf_);
216 printf(
"%d look_take_todo getid=%d\n", nrnmpi_getid(recvbuf_));
228 printf(
"BBSDirect::take_todo blocking\n");
244 nrnmpi_upkbegin(recvbuf_);
266 #if defined(HAVE_STL)
267 nrnmpi_ref(sendbuf_);
275 #if defined(HAVE_STL)
277 nrnmpi_unref(recvbuf_);
280 recvbuf_ = (*i).second;
282 nrnmpi_upkbegin(recvbuf_);
292 nrnmpi_upkbegin(recvbuf_);
308 nrnmpi_upkbegin(recvbuf_);
351 nrnmpi_unref(sendbuf_);
352 sendbuf_ = nrnmpi_newbuf(20);
357 nrnmpi_bbssend(
i,
QUIT, sendbuf_);
virtual int look_take_result(int pid)
virtual void return_args(int)
virtual char * upkpickle(size_t *)
virtual void post_result(int id)
virtual void save_args(int)
virtual void upkvec(int, double *)
virtual int master_take_result(int pid)
virtual void post(const char *)
virtual void pkpickle(const char *, size_t)
virtual void post_todo(int parentid)
virtual void pkdouble(double)
virtual void pkstr(const char *)
virtual void take(const char *)
virtual double upkdouble()
virtual bool look_take(const char *)
virtual void pkvec(int, double *)
virtual bool look(const char *)
virtual void perror(const char *)
virtual int look_take_todo()
int look_take_result(int parentid)
bool look(const char *key)
void context(int ncid, int *cids)
bool look_take(const char *key)
void post_todo(int parentid, int cid)
void post(const char *key)
static BBSDirectServer * server_
static void handle_block()
virtual void return_args(int userid)
char * execute_helper(size_t *, int id, bool exec=true)
static bool master_works_
virtual void execute(int id)
static double map(void *v)
int const size_t const size_t n
int nrnmpi_numprocs_world
static double userid(void *v)
static void nrnmpi_int_broadcast(int *, int, int)