NEURON
ocbbs.cpp File Reference
#include <../../nrnconf.h>
#include "bbsconf.h"
#include <InterViews/resource.h>
#include "classreg.h"
#include "oc2iv.h"
#include "ivocvect.h"
#include "hoclist.h"
#include "bbs.h"
#include "bbsimpl.h"
#include "parse.hpp"
#include "section.h"
#include "membfunc.h"
#include "utils/profile/profiler_interface.h"
#include <nrnmpi.h>
#include <errno.h>
#include "subworld.cpp"

Go to the source code of this file.

Classes

class  OcBBS
 

Macros

#define MD   2147483647.
 

Functions

int vector_arg_px (int, double **)
 
Symbolhoc_which_template (Symbol *)
 
void bbs_done ()
 
void nrnmpi_source_var ()
 
void nrnmpi_target_var ()
 
void nrnmpi_setup_transfer ()
 
int nrnmpi_spike_compress (int nspike, bool gid_compress, int xchng_meth)
 
int nrnmpi_splitcell_connect (int that_host)
 
int nrnmpi_multisplit (Section *, double x, int sid, int backbonestyle)
 
int nrn_set_timeout (int timeout)
 
void nrnmpi_gid_clear (int)
 
double nrn_bgp_receive_time (int)
 
void nrn_prcellstate (int gid, const char *suffix)
 
static void nrnmpi_int_broadcast (int *, int, int)
 
static void nrnmpi_char_broadcast (char *, int, int)
 
static void nrnmpi_dbl_broadcast (double *, int, int)
 
void nrn_threads_create (int, int)
 
void nrn_thread_partition (int, Object *)
 
void nrn_thread_stat ()
 
int nrn_allow_busywait (int)
 
int nrn_how_many_processors ()
 
size_t nrncore_write ()
 
size_t nrnbbcore_register_mapping ()
 For BBP use case, we want to write section-segment mapping to gid_3.dat file. More...
 
int nrncore_run (const char *)
 
int nrncore_is_enabled ()
 
int nrncore_is_file_mode ()
 
int nrncore_psolve (double tstop, int file_mode)
 
static void pack_help (int, OcBBS *)
 
static void unpack_help (int, OcBBS *)
 
static int submit_help (OcBBS *)
 
static char * key_help ()
 
static double submit (void *v)
 
static double context (void *v)
 
static double working (void *v)
 
static double retval (void *v)
 
static double userid (void *v)
 
static double nhost (void *v)
 
static double nrn_rank (void *v)
 
static double nhost_world (void *v)
 
static double rank_world (void *v)
 
static double nhost_bbs (void *v)
 
static double rank_bbs (void *v)
 
static double subworlds (void *v)
 
static double worker (void *v)
 
static double master_works (void *v)
 
static double done (void *v)
 
static double pack (void *v)
 
static double post (void *v)
 
static double unpack (void *v)
 
static double upkscalar (void *v)
 
static const char ** upkstr (void *v)
 
static Object ** upkvec (void *v)
 
static Object ** upkpyobj (void *v)
 
static Object ** pyret (void *v)
 
static Object ** py_alltoall_type (int type)
 
static Object ** py_alltoall (void *)
 
static Object ** py_allgather (void *)
 
static Object ** py_gather (void *)
 
static Object ** py_broadcast (void *)
 
static Object ** py_scatter (void *)
 
static double take (void *v)
 
static double look (void *v)
 
static double look_take (void *v)
 
static double pctime (void *v)
 
static double vtransfer_time (void *v)
 
static double mech_time (void *v)
 
static double prcellstate (void *v)
 
static double wait_time (void *v)
 
static double step_time (void *v)
 
static double step_wait (void *v)
 
static double send_time (void *v)
 
static double event_time (void *v)
 
static double integ_time (void *v)
 
static double set_gid2node (void *v)
 
static double gid_exists (void *v)
 
static double cell (void *v)
 
static double threshold (void *v)
 
static double spcompress (void *v)
 
static double splitcell_connect (void *v)
 
static double multisplit (void *v)
 
static double set_timeout (void *v)
 
static double set_mpiabort_on_error (void *)
 
static double gid_clear (void *v)
 
static double outputcell (void *v)
 
static double spike_record (void *v)
 
static double psolve (void *v)
 
static double set_maxstep (void *v)
 
static double spike_stat (void *v)
 
static double maxhist (void *v)
 
static double source_var (void *)
 
static double target_var (void *)
 
static double setup_transfer (void *)
 
static double barrier (void *)
 
static double allreduce (void *)
 
static double allgather (void *)
 
static double alltoall (void *)
 
static double broadcast (void *)
 
static double nthrd (void *)
 
static double partition (void *)
 
static double thread_stat (void *)
 
static double thread_busywait (void *)
 
static double thread_how_many_proc (void *)
 
static double sec_in_thread (void *)
 
static double thread_ctime (void *)
 
static double nrn_thread_t (void *)
 
static double thread_dt (void *)
 
static double nrncorewrite_argvec (void *)
 
static double nrncorewrite_argappend (void *)
 
static double nrncorerun (void *)
 
static double nrnbbcore_register_mapping (void *)
 
static Object ** gid2obj (void *v)
 
static Object ** gid2cell (void *v)
 
static Object ** gid_connect (void *v)
 
static voidcons (Object *)
 
static void destruct (void *v)
 
void ParallelContext_reg ()
 

Variables

int hoc_return_type_code
 
double t
 
double nrnmpi_rtcomp_time_
 
char *(* nrnpy_po2pickle )(Object *, size_t *)
 
Object *(* nrnpy_pickle2po )(char *, size_t)
 
char *(* nrnpy_callpicklef )(char *, size_t, int, size_t *)
 
Object *(* nrnpympi_alltoall_type )(int, int)
 
double nrnmpi_step_wait_
 
double * nrn_mech_wtime_
 
int nrn_nthread
 
bool nrn_trajectory_request_per_time_step_
 
static bool posting_ = false
 
static Member_func members []
 
static Member_ret_str_func retstr_members [] = {"upkstr", upkstr, 0, 0}
 
static Member_ret_obj_func retobj_members []
 

Macro Definition Documentation

◆ MD

#define MD   2147483647.

Definition at line 19 of file ocbbs.cpp.

Function Documentation

◆ allgather()

static double allgather ( void )
static

Definition at line 800 of file ocbbs.cpp.

◆ allreduce()

static double allreduce ( void )
static

Definition at line 765 of file ocbbs.cpp.

◆ alltoall()

static double alltoall ( void )
static

Definition at line 819 of file ocbbs.cpp.

◆ barrier()

static double barrier ( void )
static

Definition at line 751 of file ocbbs.cpp.

◆ broadcast()

static double broadcast ( void )
static

Definition at line 873 of file ocbbs.cpp.

◆ cell()

static double cell ( void v)
static

Definition at line 578 of file ocbbs.cpp.

◆ cons()

static void* cons ( Object )
static

Definition at line 1195 of file ocbbs.cpp.

◆ context()

static double context ( void v)
static

Definition at line 202 of file ocbbs.cpp.

◆ destruct()

static void destruct ( void v)
static

Definition at line 1206 of file ocbbs.cpp.

◆ done()

static double done ( void v)
static

Definition at line 282 of file ocbbs.cpp.

◆ event_time()

static double event_time ( void v)
static

Definition at line 558 of file ocbbs.cpp.

◆ gid2cell()

static Object** gid2cell ( void v)
static

Definition at line 1029 of file ocbbs.cpp.

◆ gid2obj()

static Object** gid2obj ( void v)
static

Definition at line 1024 of file ocbbs.cpp.

◆ gid_clear()

static double gid_clear ( void v)
static

Definition at line 647 of file ocbbs.cpp.

◆ gid_connect()

static Object** gid_connect ( void v)
static

Definition at line 1034 of file ocbbs.cpp.

◆ gid_exists()

static double gid_exists ( void v)
static

Definition at line 572 of file ocbbs.cpp.

◆ hoc_which_template()

Symbol* hoc_which_template ( Symbol s)

Definition at line 1468 of file hoc_oop.cpp.

◆ integ_time()

static double integ_time ( void v)
static

Definition at line 562 of file ocbbs.cpp.

◆ key_help()

static char * key_help ( )
static

Definition at line 444 of file ocbbs.cpp.

◆ look()

static double look ( void v)
static

Definition at line 461 of file ocbbs.cpp.

◆ look_take()

static double look_take ( void v)
static

Definition at line 471 of file ocbbs.cpp.

◆ master_works()

static double master_works ( void v)
static

Definition at line 276 of file ocbbs.cpp.

◆ maxhist()

static double maxhist ( void v)
static

Definition at line 716 of file ocbbs.cpp.

◆ mech_time()

static double mech_time ( void v)
static

Definition at line 501 of file ocbbs.cpp.

◆ multisplit()

static double multisplit ( void v)
static

Definition at line 612 of file ocbbs.cpp.

◆ nhost()

static double nhost ( void v)
static

Definition at line 232 of file ocbbs.cpp.

◆ nhost_bbs()

static double nhost_bbs ( void v)
static

Definition at line 252 of file ocbbs.cpp.

◆ nhost_world()

static double nhost_world ( void v)
static

Definition at line 242 of file ocbbs.cpp.

◆ nrn_allow_busywait()

int nrn_allow_busywait ( int  b)

Definition at line 1310 of file multicore.cpp.

◆ nrn_bgp_receive_time()

double nrn_bgp_receive_time ( int  type)

Definition at line 354 of file bgpdma.cpp.

◆ nrn_how_many_processors()

int nrn_how_many_processors ( )

Definition at line 1349 of file multicore.cpp.

◆ nrn_prcellstate()

void nrn_prcellstate ( int  gid,
const char *  suffix 
)

Definition at line 184 of file prcellstate.cpp.

◆ nrn_rank()

static double nrn_rank ( void v)
static

Definition at line 237 of file ocbbs.cpp.

◆ nrn_set_timeout()

int nrn_set_timeout ( int  timeout)

Definition at line 1248 of file netpar.cpp.

◆ nrn_thread_partition()

void nrn_thread_partition ( int  it,
Object sl 
)

Definition at line 1195 of file multicore.cpp.

◆ nrn_thread_stat()

void nrn_thread_stat ( )

Definition at line 473 of file multicore.cpp.

◆ nrn_thread_t()

static double nrn_thread_t ( void )
static

Definition at line 986 of file ocbbs.cpp.

◆ nrn_threads_create()

void nrn_threads_create ( int  n,
int  parallel 
)

Definition at line 504 of file multicore.cpp.

◆ nrnbbcore_register_mapping() [1/2]

size_t nrnbbcore_register_mapping ( )

For BBP use case, we want to write section-segment mapping to gid_3.dat file.

This information will be provided through neurodamus HOC interface with following format: gid : number of non-empty neurons in the cellgroup name : name of section list (like soma, axon, apic) nsec : number of sections sections : list of sections segments : list of segments

Definition at line 89 of file nrncore_utils.cpp.

◆ nrnbbcore_register_mapping() [2/2]

static double nrnbbcore_register_mapping ( void )
static

Definition at line 1020 of file ocbbs.cpp.

◆ nrncore_is_enabled()

int nrncore_is_enabled ( )

Definition at line 356 of file nrncore_write.cpp.

◆ nrncore_is_file_mode()

int nrncore_is_file_mode ( )

Definition at line 360 of file nrncore_write.cpp.

◆ nrncore_psolve()

int nrncore_psolve ( double  tstop,
int  file_mode 
)

Definition at line 364 of file nrncore_write.cpp.

◆ nrncore_run()

int nrncore_run ( const char *  arg)

Definition at line 352 of file nrncore_write.cpp.

◆ nrncore_write()

size_t nrncore_write ( )

Definition at line 171 of file nrncore_write.cpp.

◆ nrncorerun()

static double nrncorerun ( void )
static

Definition at line 1013 of file ocbbs.cpp.

◆ nrncorewrite_argappend()

static double nrncorewrite_argappend ( void )
static

Definition at line 1005 of file ocbbs.cpp.

◆ nrncorewrite_argvec()

static double nrncorewrite_argvec ( void )
static

Definition at line 998 of file ocbbs.cpp.

◆ nrnmpi_char_broadcast()

static void nrnmpi_char_broadcast ( char *  ,
int  ,
int   
)
static

Definition at line 61 of file ocbbs.cpp.

◆ nrnmpi_dbl_broadcast()

static void nrnmpi_dbl_broadcast ( double *  ,
int  ,
int   
)
static

Definition at line 62 of file ocbbs.cpp.

◆ nrnmpi_gid_clear()

void nrnmpi_gid_clear ( int  arg)

Definition at line 994 of file netpar.cpp.

◆ nrnmpi_int_broadcast()

static void nrnmpi_int_broadcast ( int *  ,
int  ,
int   
)
static

Definition at line 60 of file ocbbs.cpp.

◆ nrnmpi_multisplit()

int nrnmpi_multisplit ( Section sec,
double  x,
int  sid,
int  backbonestyle 
)

Definition at line 309 of file multisplit.cpp.

◆ nrnmpi_setup_transfer()

void nrnmpi_setup_transfer ( )

Definition at line 693 of file partrans.cpp.

◆ nrnmpi_source_var()

void nrnmpi_source_var ( )

◆ nrnmpi_spike_compress()

int nrnmpi_spike_compress ( int  nspike,
bool  gid_compress,
int  xchng_meth 
)

Definition at line 1494 of file netpar.cpp.

◆ nrnmpi_splitcell_connect()

int nrnmpi_splitcell_connect ( int  that_host)

Definition at line 49 of file splitcell.cpp.

◆ nrnmpi_target_var()

void nrnmpi_target_var ( )

◆ nthrd()

static double nthrd ( void )
static

Definition at line 917 of file ocbbs.cpp.

◆ outputcell()

static double outputcell ( void v)
static

Definition at line 656 of file ocbbs.cpp.

◆ pack()

static double pack ( void v)
static

Definition at line 313 of file ocbbs.cpp.

◆ pack_help()

static void pack_help ( int  i,
OcBBS bbs 
)
static

Definition at line 288 of file ocbbs.cpp.

◆ ParallelContext_reg()

void ParallelContext_reg ( )

Definition at line 1211 of file ocbbs.cpp.

◆ partition()

static double partition ( void )
static

Definition at line 929 of file ocbbs.cpp.

◆ pctime()

static double pctime ( void v)
static

Definition at line 481 of file ocbbs.cpp.

◆ post()

static double post ( void v)
static

Definition at line 319 of file ocbbs.cpp.

◆ prcellstate()

static double prcellstate ( void v)
static

Definition at line 518 of file ocbbs.cpp.

◆ psolve()

static double psolve ( void v)
static

Definition at line 677 of file ocbbs.cpp.

◆ py_allgather()

static Object** py_allgather ( void )
static

Definition at line 428 of file ocbbs.cpp.

◆ py_alltoall()

static Object** py_alltoall ( void )
static

Definition at line 424 of file ocbbs.cpp.

◆ py_alltoall_type()

static Object** py_alltoall_type ( int  type)
static

Definition at line 412 of file ocbbs.cpp.

◆ py_broadcast()

static Object** py_broadcast ( void )
static

Definition at line 436 of file ocbbs.cpp.

◆ py_gather()

static Object** py_gather ( void )
static

Definition at line 432 of file ocbbs.cpp.

◆ py_scatter()

static Object** py_scatter ( void )
static

Definition at line 440 of file ocbbs.cpp.

◆ pyret()

static Object** pyret ( void v)
static

Definition at line 398 of file ocbbs.cpp.

◆ rank_bbs()

static double rank_bbs ( void v)
static

Definition at line 257 of file ocbbs.cpp.

◆ rank_world()

static double rank_world ( void v)
static

Definition at line 247 of file ocbbs.cpp.

◆ retval()

static double retval ( void v)
static

Definition at line 222 of file ocbbs.cpp.

◆ sec_in_thread()

static double sec_in_thread ( void )
static

Definition at line 965 of file ocbbs.cpp.

◆ send_time()

static double send_time ( void v)
static

Definition at line 550 of file ocbbs.cpp.

◆ set_gid2node()

static double set_gid2node ( void v)
static

Definition at line 566 of file ocbbs.cpp.

◆ set_maxstep()

static double set_maxstep ( void v)
static

Definition at line 693 of file ocbbs.cpp.

◆ set_mpiabort_on_error()

static double set_mpiabort_on_error ( void )
static

Definition at line 639 of file ocbbs.cpp.

◆ set_timeout()

static double set_timeout ( void v)
static

Definition at line 630 of file ocbbs.cpp.

◆ setup_transfer()

static double setup_transfer ( void )
static

Definition at line 746 of file ocbbs.cpp.

◆ source_var()

static double source_var ( void )
static

Definition at line 729 of file ocbbs.cpp.

◆ spcompress()

static double spcompress ( void v)
static

Definition at line 589 of file ocbbs.cpp.

◆ spike_record()

static double spike_record ( void v)
static

Definition at line 663 of file ocbbs.cpp.

◆ spike_stat()

static double spike_stat ( void v)
static

Definition at line 698 of file ocbbs.cpp.

◆ splitcell_connect()

static double splitcell_connect ( void v)
static

Definition at line 605 of file ocbbs.cpp.

◆ step_time()

static double step_time ( void v)
static

Definition at line 528 of file ocbbs.cpp.

◆ step_wait()

static double step_wait ( void v)
static

Definition at line 536 of file ocbbs.cpp.

◆ submit()

static double submit ( void v)
static

Definition at line 194 of file ocbbs.cpp.

◆ submit_help()

static int submit_help ( OcBBS bbs)
static

Definition at line 120 of file ocbbs.cpp.

◆ subworlds()

static double subworlds ( void v)
static

Definition at line 262 of file ocbbs.cpp.

◆ take()

static double take ( void v)
static

Definition at line 454 of file ocbbs.cpp.

◆ target_var()

static double target_var ( void )
static

Definition at line 737 of file ocbbs.cpp.

◆ thread_busywait()

static double thread_busywait ( void )
static

Definition at line 954 of file ocbbs.cpp.

◆ thread_ctime()

static double thread_ctime ( void )
static

Definition at line 971 of file ocbbs.cpp.

◆ thread_dt()

static double thread_dt ( void )
static

Definition at line 992 of file ocbbs.cpp.

◆ thread_how_many_proc()

static double thread_how_many_proc ( void )
static

Definition at line 959 of file ocbbs.cpp.

◆ thread_stat()

static double thread_stat ( void )
static

Definition at line 949 of file ocbbs.cpp.

◆ threshold()

static double threshold ( void v)
static

Definition at line 584 of file ocbbs.cpp.

◆ unpack()

static double unpack ( void v)
static

Definition at line 354 of file ocbbs.cpp.

◆ unpack_help()

static void unpack_help ( int  i,
OcBBS bbs 
)
static

Definition at line 333 of file ocbbs.cpp.

◆ upkpyobj()

static Object** upkpyobj ( void v)
static

Definition at line 388 of file ocbbs.cpp.

◆ upkscalar()

static double upkscalar ( void v)
static

Definition at line 360 of file ocbbs.cpp.

◆ upkstr()

static const char** upkstr ( void v)
static

Definition at line 365 of file ocbbs.cpp.

◆ upkvec()

static Object** upkvec ( void v)
static

Definition at line 374 of file ocbbs.cpp.

◆ userid()

static double userid ( void v)
static

Definition at line 227 of file ocbbs.cpp.

◆ vtransfer_time()

static double vtransfer_time ( void v)
static

Definition at line 485 of file ocbbs.cpp.

◆ wait_time()

static double wait_time ( void v)
static

Definition at line 523 of file ocbbs.cpp.

◆ worker()

static double worker ( void v)
static

Definition at line 270 of file ocbbs.cpp.

◆ working()

static double working ( void v)
static

Definition at line 210 of file ocbbs.cpp.

Variable Documentation

◆ hoc_return_type_code

int hoc_return_type_code
extern

Definition at line 42 of file code.cpp.

◆ members

Member_func members[]
static

Definition at line 1039 of file ocbbs.cpp.

◆ nrn_mech_wtime_

double* nrn_mech_wtime_
extern

Definition at line 29 of file treeset.cpp.

◆ nrn_nthread

int nrn_nthread
extern

Definition at line 46 of file multicore.cpp.

◆ nrn_trajectory_request_per_time_step_

bool nrn_trajectory_request_per_time_step_
extern

Definition at line 140 of file netcvode.cpp.

◆ nrnmpi_rtcomp_time_

double nrnmpi_rtcomp_time_

Definition at line 33 of file ocbbs.cpp.

◆ nrnmpi_step_wait_

double nrnmpi_step_wait_

Definition at line 40 of file ocbbs.cpp.

◆ nrnpy_callpicklef

char*(* nrnpy_callpicklef) (char *, size_t, int, size_t *) ( char *  ,
size_t  size,
int  narg,
size_t *  retsize 
)

Definition at line 37 of file ocbbs.cpp.

◆ nrnpy_pickle2po

Object*(* nrnpy_pickle2po) (char *, size_t) ( char *  ,
size_t  size 
)

Definition at line 36 of file ocbbs.cpp.

◆ nrnpy_po2pickle

char*(* nrnpy_po2pickle) (Object *, size_t *) ( Object ,
size_t *  size 
)

Definition at line 35 of file ocbbs.cpp.

◆ nrnpympi_alltoall_type

Object*(* nrnpympi_alltoall_type) (int, int) ( int  ,
int   
)

Definition at line 38 of file ocbbs.cpp.

◆ posting_

bool posting_ = false
static

Definition at line 97 of file ocbbs.cpp.

◆ retobj_members

Member_ret_obj_func retobj_members[]
static
Initial value:
= {
"upkvec", upkvec, "gid2obj", gid2obj, "gid2cell", gid2cell,
"gid_connect", gid_connect, "upkpyobj", upkpyobj, "pyret", pyret,
"py_alltoall", py_alltoall, "py_allgather", py_allgather, "py_gather", py_gather,
"py_broadcast", py_broadcast, "py_scatter", py_scatter, 0, 0}
static Object ** upkpyobj(void *v)
Definition: ocbbs.cpp:388
static Object ** upkvec(void *v)
Definition: ocbbs.cpp:374
static Object ** gid2cell(void *v)
Definition: ocbbs.cpp:1029
static Object ** py_gather(void *)
Definition: ocbbs.cpp:432
static Object ** py_broadcast(void *)
Definition: ocbbs.cpp:436
static Object ** pyret(void *v)
Definition: ocbbs.cpp:398
static Object ** py_alltoall(void *)
Definition: ocbbs.cpp:424
static Object ** gid_connect(void *v)
Definition: ocbbs.cpp:1034
static Object ** py_allgather(void *)
Definition: ocbbs.cpp:428
static Object ** gid2obj(void *v)
Definition: ocbbs.cpp:1024
static Object ** py_scatter(void *)
Definition: ocbbs.cpp:440

Definition at line 1189 of file ocbbs.cpp.

◆ retstr_members

Member_ret_str_func retstr_members[] = {"upkstr", upkstr, 0, 0}
static

Definition at line 1187 of file ocbbs.cpp.

◆ t

double t
extern

Definition at line 59 of file cvodeobj.cpp.