1 #include <../../nrnconf.h>
35 nrnmpi_unref(sendbuf_);
36 nrnmpi_unref(recvbuf_);
41 printf(
"BBSDirect error %s\n",
s);
46 nrnmpi_enddata(sendbuf_);
53 bbsmpibuf* rsav = recvbuf_;
54 recvbuf_ = nrnmpi_newbuf(sendbuf_->size);
56 nrnmpi_copy(recvbuf_, sendbuf_);
57 nrnmpi_upkbegin(recvbuf_);
58 nrnmpi_upkint(recvbuf_);
59 nrnmpi_upkint(recvbuf_);
61 nrnmpi_unref(recvbuf_);
65 nrnmpi_unref(sendbuf_);
71 i = nrnmpi_upkint(recvbuf_);
73 printf(
"upkint returning %d\n",
i);
80 x = nrnmpi_upkdouble(recvbuf_);
82 printf(
"upkdouble returning %g\n", x);
88 nrnmpi_upkvec(
n, x, recvbuf_);
93 s = nrnmpi_upkstr(recvbuf_);
95 printf(
"upkstr returning |%s|\n",
s);
102 char*
s = nrnmpi_upkpickle(&
n, recvbuf_);
104 printf(
"upkpickle returning %d bytes\n",
n);
106 std::vector<char> ret(
s,
s +
n);
115 nrnmpi_unref(sendbuf_);
116 sendbuf_ = nrnmpi_newbuf(100);
117 nrnmpi_ref(sendbuf_);
118 nrnmpi_pkbegin(sendbuf_);
125 nrnmpi_pkint(
i, sendbuf_);
132 nrnmpi_pkdouble(x, sendbuf_);
139 nrnmpi_pkvec(
n, x, sendbuf_);
146 nrnmpi_pkstr(
s, sendbuf_);
153 nrnmpi_pkpickle(
s.data(),
s.size(), sendbuf_);
160 nrnmpi_enddata(sendbuf_);
161 nrnmpi_pkstr(
key, sendbuf_);
163 nrnmpi_unref(sendbuf_);
172 nrnmpi_enddata(sendbuf_);
173 nrnmpi_pkint(parentid, sendbuf_);
175 nrnmpi_unref(sendbuf_);
184 nrnmpi_enddata(sendbuf_);
185 nrnmpi_pkint(
id, sendbuf_);
187 nrnmpi_unref(sendbuf_);
196 nrnmpi_upkbegin(recvbuf_);
199 printf(
"%d look_take_todo getid=%d\n", nrnmpi_getid(recvbuf_));
211 printf(
"BBSDirect::take_todo blocking\n");
227 nrnmpi_upkbegin(recvbuf_);
249 nrnmpi_ref(sendbuf_);
256 nrnmpi_unref(recvbuf_);
259 recvbuf_ = (*i).second;
261 nrnmpi_upkbegin(recvbuf_);
270 nrnmpi_upkbegin(recvbuf_);
286 nrnmpi_upkbegin(recvbuf_);
329 nrnmpi_unref(sendbuf_);
330 sendbuf_ = nrnmpi_newbuf(20);
335 nrnmpi_bbssend(
i,
QUIT, sendbuf_);
void perror(const char *) override
void pkpickle(const std::vector< char > &) override
std::vector< char > upkpickle() override
void pkvec(int, double *) override
void pkdouble(double) override
double upkdouble() override
int master_take_result(int pid) override
bool look(const char *) override
void post_result(int id) override
void post(const char *) override
void save_args(int) override
void return_args(int) override
void pkstr(const char *) override
int look_take_todo() override
void take(const char *) override
void upkvec(int, double *) override
void post_todo(int parentid) override
int look_take_result(int pid) override
bool look_take(const char *) override
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)
std::vector< char > execute_helper(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)