16 typedef struct bbsmpibuf {
36 extern bbsmpibuf* nrnmpi_newbuf(
int size);
37 extern void nrnmpi_copy(bbsmpibuf* dest, bbsmpibuf* src);
38 extern void nrnmpi_ref(bbsmpibuf*
buf);
39 extern void nrnmpi_unref(bbsmpibuf*
buf);
41 extern void nrnmpi_upkbegin(bbsmpibuf*
buf);
42 extern char* nrnmpi_getkey(bbsmpibuf*
buf);
43 extern int nrnmpi_getid(bbsmpibuf*
buf);
44 extern int nrnmpi_upkint(bbsmpibuf*
buf);
45 extern double nrnmpi_upkdouble(bbsmpibuf*
buf);
46 extern void nrnmpi_upkvec(
int n,
double* x, bbsmpibuf*
buf);
47 extern char* nrnmpi_upkstr(bbsmpibuf*
buf);
48 extern char* nrnmpi_upkpickle(
size_t* size, bbsmpibuf*
buf);
50 extern void nrnmpi_pkbegin(bbsmpibuf*
buf);
51 extern void nrnmpi_enddata(bbsmpibuf*
buf);
52 extern void nrnmpi_pkint(
int i, bbsmpibuf*
buf);
53 extern void nrnmpi_pkdouble(
double x, bbsmpibuf*
buf);
54 extern void nrnmpi_pkvec(
int n,
double* x, bbsmpibuf*
buf);
55 extern void nrnmpi_pkstr(
const char*
s, bbsmpibuf*
buf);
56 extern void nrnmpi_pkpickle(
const char*
s,
size_t size, bbsmpibuf*
buf);
58 extern int nrnmpi_iprobe(
int* size,
int* tag,
int* source);
59 extern void nrnmpi_probe(
int* size,
int* tag,
int* source);
60 extern void nrnmpi_bbssend(
int dest,
int tag, bbsmpibuf* r);
61 extern int nrnmpi_bbsrecv(
int source, bbsmpibuf* r);
62 extern int nrnmpi_bbssendrecv(
int dest,
int tag, bbsmpibuf*
s, bbsmpibuf* r);
65 extern void nrnmpi_init(
int nrnmpi_under_nrncontrol,
int* pargc,
char*** pargv);
66 extern int nrnmpi_wrap_mpi_init(
int* flag);
70 extern void nrnmpi_subworld_size(
int n);
71 extern void nrnmpi_get_subworld_info(
int*
cnt,
int*
index,
int* rank,
int* numprocs,
int* numprocs_world);
80 extern int nrnmpi_spike_exchange_compressed(
int localgid_size,
int ag_send_size,
int ag_send_nspike,
int* ovfl_capacity,
int* ovfl,
unsigned char* spfixout,
unsigned char* spfixin,
unsigned char** spfixin_ovfl,
int*
nin_);
81 extern double nrnmpi_mindelay(
double maxdel);
83 extern void nrnmpi_int_gather(
int*
s,
int* r,
int cnt,
int root);
84 extern void nrnmpi_int_gatherv(
int*
s,
int scnt,
int* r,
int* rcnt,
int* rdispl,
int root);
85 extern void nrnmpi_char_gatherv(
char*
s,
int scnt,
char* r,
int* rcnt,
int* rdispl,
int root);
86 extern void nrnmpi_int_scatter(
int*
s,
int* r,
int cnt,
int root);
87 extern void nrnmpi_char_scatterv(
char*
s,
int* scnt,
int* sdispl,
char* r,
int rcnt,
int root);
89 extern void nrnmpi_int_allgather_inplace(
int* srcdest,
int n);
90 extern void nrnmpi_int_allgatherv_inplace(
int* srcdest,
int*
n,
int* dspl);
92 extern void nrnmpi_char_allgatherv(
char*
s,
char* r,
int*
n,
int* dspl);
93 extern void nrnmpi_int_alltoall(
int*
s,
int* r,
int n);
94 extern void nrnmpi_int_alltoallv(
const int*
s,
const int* scnt,
const int* sdispl,
int* r,
int* rcnt,
int* rdispl);
95 extern void nrnmpi_int_alltoallv_sparse(
int*
s,
int* scnt,
int* sdispl,
int* r,
int* rcnt,
int* rdispl);
96 extern void nrnmpi_long_allgatherv(int64_t*
s, int64_t* r,
int*
n,
int* dspl);
97 extern void nrnmpi_long_allgatherv_inplace(
long* srcdest,
int*
n,
int* dspl);
98 extern void nrnmpi_long_alltoallv(int64_t*
s,
int* scnt,
int* sdispl, int64_t* r,
int* rcnt,
int* rdispl);
99 extern void nrnmpi_long_alltoallv_sparse(int64_t*
s,
int* scnt,
int* sdispl, int64_t* r,
int* rcnt,
int* rdispl);
101 extern void nrnmpi_dbl_allgatherv_inplace(
double* srcdest,
int*
n,
int* dspl);
102 extern void nrnmpi_dbl_alltoallv(
const double*
s,
const int* scnt,
const int* sdispl,
double* r,
int* rcnt,
int* rdispl);
103 extern void nrnmpi_dbl_alltoallv_sparse(
double*
s,
int* scnt,
int* sdispl,
double* r,
int* rcnt,
int* rdispl);
104 extern void nrnmpi_char_alltoallv(
char*
s,
int* scnt,
int* sdispl,
char* r,
int* rcnt,
int* rdispl);
108 extern void nrnmpi_str_broadcast_world(std::string& str,
int root);
109 extern int nrnmpi_int_sum_reduce(
int in);
110 extern void nrnmpi_assert_opstep(
int opstep,
double t);
111 extern double nrnmpi_dbl_allmin(
double x);
112 extern int nrnmpi_pgvts_least(
double*
t,
int* op,
int*
init);
114 extern void nrnmpi_recv_doubles(
double* pd,
int cnt,
int src,
int tag);
118 extern double nrnmpi_dbl_allreduce(
double x,
int type);
120 extern void nrnmpi_dbl_allreduce_vec(
double* src,
double* dest,
int cnt,
int type);
122 extern void nrnmpi_long_allreduce_vec(
long* src,
long* dest,
int cnt,
int type);
124 extern void nrnmpi_dbl_allgather(
double*
s,
double* r,
int n);
static void nrnmpi_dbl_alltoallv(const double *s, const int *scnt, const 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_int_alltoallv(const int *s, const int *scnt, const int *sdispl, int *r, int *rcnt, int *rdispl)
static void nrnmpi_barrier()
static void nrnmpi_int_allgatherv(int *s, int *r, int *n, int *dspl)
static int nrnmpi_int_allmax(int x)
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)
void nrnmpi_spike_initialize()
int const size_t const size_t n
void nrnmpi_multisend_comm()
int nrnmpi_multisend_single_advance(NRNMPI_Spike *)
void nrnmpi_multisend_multisend(NRNMPI_Spike *, int, int *)
int nrnmpi_multisend_conserve(int nsend, int nrecv)
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)
Overall SoA datastructures related memory usage.