13 #if defined(__cplusplus)
18 typedef struct bbsmpibuf {
28 extern bbsmpibuf* nrnmpi_newbuf(
int size);
29 extern void nrnmpi_copy(bbsmpibuf* dest, bbsmpibuf* src);
30 extern void nrnmpi_ref(bbsmpibuf*
buf);
31 extern void nrnmpi_unref(bbsmpibuf*
buf);
33 extern void nrnmpi_upkbegin(bbsmpibuf*
buf);
34 extern char* nrnmpi_getkey(bbsmpibuf*
buf);
35 extern int nrnmpi_getid(bbsmpibuf*
buf);
36 extern int nrnmpi_upkint(bbsmpibuf*
buf);
37 extern double nrnmpi_upkdouble(bbsmpibuf*
buf);
38 extern void nrnmpi_upkvec(
int n,
double* x, bbsmpibuf*
buf);
39 extern char* nrnmpi_upkstr(bbsmpibuf*
buf);
40 extern char* nrnmpi_upkpickle(
size_t* size, bbsmpibuf*
buf);
42 extern void nrnmpi_pkbegin(bbsmpibuf*
buf);
43 extern void nrnmpi_enddata(bbsmpibuf*
buf);
44 extern void nrnmpi_pkint(
int i, bbsmpibuf*
buf);
45 extern void nrnmpi_pkdouble(
double x, bbsmpibuf*
buf);
46 extern void nrnmpi_pkvec(
int n,
double* x, bbsmpibuf*
buf);
47 extern void nrnmpi_pkstr(
const char* s, bbsmpibuf*
buf);
48 extern void nrnmpi_pkpickle(
const char* s,
size_t size, bbsmpibuf*
buf);
50 extern int nrnmpi_iprobe(
int* size,
int* tag,
int* source);
51 extern void nrnmpi_probe(
int* size,
int* tag,
int* source);
52 extern void nrnmpi_bbssend(
int dest,
int tag, bbsmpibuf* r);
53 extern int nrnmpi_bbsrecv(
int source, bbsmpibuf* r);
54 extern int nrnmpi_bbssendrecv(
int dest,
int tag, bbsmpibuf* s, bbsmpibuf* r);
57 extern void nrnmpi_init(
int nrnmpi_under_nrncontrol,
int* pargc,
char*** pargv);
58 extern int nrnmpi_wrap_mpi_init(
int* flag);
62 extern void nrnmpi_subworld_size(
int n);
66 extern void nrnmpi_spike_initialize();
67 extern int nrnmpi_spike_exchange();
68 extern int nrnmpi_spike_exchange_compressed();
69 extern double nrnmpi_mindelay(
double maxdel);
71 extern void nrnmpi_int_gather(
int* s,
int* r,
int cnt,
int root);
72 extern void nrnmpi_int_gatherv(
int* s,
int scnt,
int* r,
int* rcnt,
int* rdispl,
int root);
73 extern void nrnmpi_char_gatherv(
char* s,
int scnt,
char* r,
int* rcnt,
int* rdispl,
int root);
74 extern void nrnmpi_int_scatter(
int* s,
int* r,
int cnt,
int root);
75 extern void nrnmpi_char_scatterv(
char* s,
int* scnt,
int* sdispl,
char* r,
int rcnt,
int root);
77 extern void nrnmpi_int_allgather_inplace(
int* srcdest,
int n);
78 extern void nrnmpi_int_allgatherv_inplace(
int* srcdest,
int*
n,
int* dspl);
80 extern void nrnmpi_char_allgatherv(
char* s,
char* r,
int*
n,
int* dspl);
81 extern void nrnmpi_int_alltoall(
int* s,
int* r,
int n);
82 extern void nrnmpi_int_alltoallv(
int* s,
int* scnt,
int* sdispl,
int* r,
int* rcnt,
int* rdispl);
83 extern void nrnmpi_int_alltoallv_sparse(
int* s,
int* scnt,
int* sdispl,
int* r,
int* rcnt,
int* rdispl);
84 extern void nrnmpi_long_allgatherv(int64_t* s, int64_t* r,
int*
n,
int* dspl);
85 extern void nrnmpi_long_allgatherv_inplace(
long* srcdest,
int*
n,
int* dspl);
86 extern void nrnmpi_long_alltoallv(int64_t* s,
int* scnt,
int* sdispl, int64_t* r,
int* rcnt,
int* rdispl);
87 extern void nrnmpi_long_alltoallv_sparse(int64_t* s,
int* scnt,
int* sdispl, int64_t* r,
int* rcnt,
int* rdispl);
89 extern void nrnmpi_dbl_allgatherv_inplace(
double* srcdest,
int*
n,
int* dspl);
90 extern void nrnmpi_dbl_alltoallv(
double* s,
int* scnt,
int* sdispl,
double* r,
int* rcnt,
int* rdispl);
91 extern void nrnmpi_dbl_alltoallv_sparse(
double* s,
int* scnt,
int* sdispl,
double* r,
int* rcnt,
int* rdispl);
92 extern void nrnmpi_char_alltoallv(
char* s,
int* scnt,
int* sdispl,
char* r,
int* rcnt,
int* rdispl);
96 extern void nrnmpi_char_broadcast_world(
char** pstr,
int root);
97 extern int nrnmpi_int_sum_reduce(
int in);
98 extern void nrnmpi_assert_opstep(
int opstep,
double t);
99 extern double nrnmpi_dbl_allmin(
double x);
100 extern int nrnmpi_pgvts_least(
double*
t,
int* op,
int*
init);
102 extern void nrnmpi_recv_doubles(
double* pd,
int cnt,
int src,
int tag);
106 extern double nrnmpi_dbl_allreduce(
double x,
int type);
108 extern void nrnmpi_dbl_allreduce_vec(
double* src,
double* dest,
int cnt,
int type);
110 extern void nrnmpi_long_allreduce_vec(
long* src,
long* dest,
int cnt,
int type);
112 extern void nrnmpi_dbl_allgather(
double* s,
double* r,
int n);
121 #if defined(__cplusplus)
static void nrnmpi_int_alltoallv(int *s, int *scnt, int *sdispl, int *r, int *rcnt, int *rdispl)
static void nrnmpi_dbl_alltoallv(double *s, int *scnt, int *sdispl, double *r, int *rcnt, int *rdispl)
static void nrnmpi_dbl_allgatherv(double *s, double *r, int *n, int *dspl)
static void nrnmpi_int_allgather(int *s, int *r, int n)
static void nrnmpi_barrier()
static void nrnmpi_int_allgatherv(int *s, int *r, int *n, int *dspl)
static int nrnmpi_int_allmax(int x)
void nrnmpi_bgp_multisend(NRNMPI_Spike *, int, int *)
int nrnmpi_bgp_conserve(int nsend, int nrecv)
int nrnmpi_bgp_single_advance(NRNMPI_Spike *)
static void nrnmpi_postrecv_doubles(double *, int, int, int, void **)
static void nrnmpi_wait(void **)
static double nrnmpi_wtime()
static void nrnmpi_send_doubles(double *, int, int, int)
int const size_t const size_t n
void nrnmpi_init(int nrnmpi_under_nrncontrol, int *pargc, char ***pargv)
void nrnmpi_abort(int errcode)
static void nrnmpi_dbl_broadcast(double *, int, int)
static void nrnmpi_char_broadcast(char *, int, int)
static void nrnmpi_int_broadcast(int *, int, int)