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 []
 
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 783 of file ocbbs.cpp.

◆ allreduce()

static double allreduce ( void )
static

Definition at line 750 of file ocbbs.cpp.

◆ alltoall()

static double alltoall ( void )
static

Definition at line 802 of file ocbbs.cpp.

◆ barrier()

static double barrier ( void )
static

Definition at line 736 of file ocbbs.cpp.

◆ broadcast()

static double broadcast ( void )
static

Definition at line 856 of file ocbbs.cpp.

◆ cell()

static double cell ( void v)
static

Definition at line 573 of file ocbbs.cpp.

◆ cons()

static void* cons ( Object )
static

Definition at line 1119 of file ocbbs.cpp.

◆ context()

static double context ( void v)
static

Definition at line 200 of file ocbbs.cpp.

◆ destruct()

static void destruct ( void v)
static

Definition at line 1130 of file ocbbs.cpp.

◆ done()

static double done ( void v)
static

Definition at line 280 of file ocbbs.cpp.

◆ event_time()

static double event_time ( void v)
static

Definition at line 553 of file ocbbs.cpp.

◆ gid2cell()

static Object** gid2cell ( void v)
static

Definition at line 1009 of file ocbbs.cpp.

◆ gid2obj()

static Object** gid2obj ( void v)
static

Definition at line 1004 of file ocbbs.cpp.

◆ gid_clear()

static double gid_clear ( void v)
static

Definition at line 642 of file ocbbs.cpp.

◆ gid_connect()

static Object** gid_connect ( void v)
static

Definition at line 1014 of file ocbbs.cpp.

◆ gid_exists()

static double gid_exists ( void v)
static

Definition at line 567 of file ocbbs.cpp.

◆ hoc_which_template()

Symbol* hoc_which_template ( Symbol )

Definition at line 1491 of file hoc_oop.cpp.

◆ integ_time()

static double integ_time ( void v)
static

Definition at line 557 of file ocbbs.cpp.

◆ key_help()

static char * key_help ( )
static

Definition at line 441 of file ocbbs.cpp.

◆ look()

static double look ( void v)
static

Definition at line 458 of file ocbbs.cpp.

◆ look_take()

static double look_take ( void v)
static

Definition at line 468 of file ocbbs.cpp.

◆ master_works()

static double master_works ( void v)
static

Definition at line 274 of file ocbbs.cpp.

◆ maxhist()

static double maxhist ( void v)
static

Definition at line 705 of file ocbbs.cpp.

◆ mech_time()

static double mech_time ( void v)
static

Definition at line 498 of file ocbbs.cpp.

◆ multisplit()

static double multisplit ( void v)
static

Definition at line 607 of file ocbbs.cpp.

◆ nhost()

static double nhost ( void v)
static

Definition at line 230 of file ocbbs.cpp.

◆ nhost_bbs()

static double nhost_bbs ( void v)
static

Definition at line 250 of file ocbbs.cpp.

◆ nhost_world()

static double nhost_world ( void v)
static

Definition at line 240 of file ocbbs.cpp.

◆ nrn_allow_busywait()

int nrn_allow_busywait ( int  )

Definition at line 1247 of file multicore.cpp.

◆ nrn_bgp_receive_time()

double nrn_bgp_receive_time ( int  )

Definition at line 347 of file bgpdma.cpp.

◆ nrn_how_many_processors()

int nrn_how_many_processors ( )

Definition at line 1286 of file multicore.cpp.

◆ nrn_prcellstate()

void nrn_prcellstate ( int  gid,
const char *  suffix 
)

Definition at line 174 of file prcellstate.cpp.

◆ nrn_rank()

static double nrn_rank ( void v)
static

Definition at line 235 of file ocbbs.cpp.

◆ nrn_set_timeout()

int nrn_set_timeout ( int  timeout)

Definition at line 1194 of file netpar.cpp.

◆ nrn_thread_partition()

void nrn_thread_partition ( int  ,
Object  
)

Definition at line 1140 of file multicore.cpp.

◆ nrn_thread_stat()

void nrn_thread_stat ( )

Definition at line 459 of file multicore.cpp.

◆ nrn_thread_t()

static double nrn_thread_t ( void )
static

Definition at line 967 of file ocbbs.cpp.

◆ nrn_threads_create()

void nrn_threads_create ( int  ,
int   
)

Definition at line 490 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 99 of file nrncore_utils.cpp.

◆ nrnbbcore_register_mapping() [2/2]

static double nrnbbcore_register_mapping ( void )
static

Definition at line 1000 of file ocbbs.cpp.

◆ nrncore_is_enabled()

int nrncore_is_enabled ( )

Definition at line 371 of file nrncore_write.cpp.

◆ nrncore_is_file_mode()

int nrncore_is_file_mode ( )

Definition at line 375 of file nrncore_write.cpp.

◆ nrncore_psolve()

int nrncore_psolve ( double  tstop,
int  file_mode 
)

Definition at line 379 of file nrncore_write.cpp.

◆ nrncore_run()

int nrncore_run ( const char *  )

Definition at line 367 of file nrncore_write.cpp.

◆ nrncore_write()

size_t nrncore_write ( )

Definition at line 188 of file nrncore_write.cpp.

◆ nrncorerun()

static double nrncorerun ( void )
static

Definition at line 993 of file ocbbs.cpp.

◆ nrncorewrite_argappend()

static double nrncorewrite_argappend ( void )
static

Definition at line 986 of file ocbbs.cpp.

◆ nrncorewrite_argvec()

static double nrncorewrite_argvec ( void )
static

Definition at line 979 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  )

Definition at line 950 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 ,
double  x,
int  sid,
int  backbonestyle 
)

Definition at line 307 of file multisplit.cpp.

◆ nrnmpi_setup_transfer()

void nrnmpi_setup_transfer ( )

Definition at line 675 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 1428 of file netpar.cpp.

◆ nrnmpi_splitcell_connect()

int nrnmpi_splitcell_connect ( int  that_host)

Definition at line 58 of file splitcell.cpp.

◆ nrnmpi_target_var()

void nrnmpi_target_var ( )

◆ nthrd()

static double nthrd ( void )
static

Definition at line 900 of file ocbbs.cpp.

◆ outputcell()

static double outputcell ( void v)
static

Definition at line 651 of file ocbbs.cpp.

◆ pack()

static double pack ( void v)
static

Definition at line 310 of file ocbbs.cpp.

◆ pack_help()

static void pack_help ( int  i,
OcBBS bbs 
)
static

Definition at line 286 of file ocbbs.cpp.

◆ ParallelContext_reg()

void ParallelContext_reg ( )

Definition at line 1135 of file ocbbs.cpp.

◆ partition()

static double partition ( void )
static

Definition at line 910 of file ocbbs.cpp.

◆ pctime()

static double pctime ( void v)
static

Definition at line 478 of file ocbbs.cpp.

◆ post()

static double post ( void v)
static

Definition at line 316 of file ocbbs.cpp.

◆ prcellstate()

static double prcellstate ( void v)
static

Definition at line 515 of file ocbbs.cpp.

◆ psolve()

static double psolve ( void v)
static

Definition at line 672 of file ocbbs.cpp.

◆ py_allgather()

static Object** py_allgather ( void )
static

Definition at line 425 of file ocbbs.cpp.

◆ py_alltoall()

static Object** py_alltoall ( void )
static

Definition at line 421 of file ocbbs.cpp.

◆ py_alltoall_type()

static Object** py_alltoall_type ( int  type)
static

Definition at line 409 of file ocbbs.cpp.

◆ py_broadcast()

static Object** py_broadcast ( void )
static

Definition at line 433 of file ocbbs.cpp.

◆ py_gather()

static Object** py_gather ( void )
static

Definition at line 429 of file ocbbs.cpp.

◆ py_scatter()

static Object** py_scatter ( void )
static

Definition at line 437 of file ocbbs.cpp.

◆ pyret()

static Object** pyret ( void v)
static

Definition at line 395 of file ocbbs.cpp.

◆ rank_bbs()

static double rank_bbs ( void v)
static

Definition at line 255 of file ocbbs.cpp.

◆ rank_world()

static double rank_world ( void v)
static

Definition at line 245 of file ocbbs.cpp.

◆ retval()

static double retval ( void v)
static

Definition at line 220 of file ocbbs.cpp.

◆ sec_in_thread()

static double sec_in_thread ( void )
static

Definition at line 946 of file ocbbs.cpp.

◆ send_time()

static double send_time ( void v)
static

Definition at line 545 of file ocbbs.cpp.

◆ set_gid2node()

static double set_gid2node ( void v)
static

Definition at line 561 of file ocbbs.cpp.

◆ set_maxstep()

static double set_maxstep ( void v)
static

Definition at line 688 of file ocbbs.cpp.

◆ set_mpiabort_on_error()

static double set_mpiabort_on_error ( void )
static

Definition at line 634 of file ocbbs.cpp.

◆ set_timeout()

static double set_timeout ( void v)
static

Definition at line 625 of file ocbbs.cpp.

◆ setup_transfer()

static double setup_transfer ( void )
static

Definition at line 731 of file ocbbs.cpp.

◆ source_var()

static double source_var ( void )
static

Definition at line 714 of file ocbbs.cpp.

◆ spcompress()

static double spcompress ( void v)
static

Definition at line 584 of file ocbbs.cpp.

◆ spike_record()

static double spike_record ( void v)
static

Definition at line 658 of file ocbbs.cpp.

◆ spike_stat()

static double spike_stat ( void v)
static

Definition at line 693 of file ocbbs.cpp.

◆ splitcell_connect()

static double splitcell_connect ( void v)
static

Definition at line 600 of file ocbbs.cpp.

◆ step_time()

static double step_time ( void v)
static

Definition at line 525 of file ocbbs.cpp.

◆ step_wait()

static double step_wait ( void v)
static

Definition at line 533 of file ocbbs.cpp.

◆ submit()

static double submit ( void v)
static

Definition at line 192 of file ocbbs.cpp.

◆ submit_help()

static int submit_help ( OcBBS bbs)
static

Definition at line 117 of file ocbbs.cpp.

◆ subworlds()

static double subworlds ( void v)
static

Definition at line 260 of file ocbbs.cpp.

◆ take()

static double take ( void v)
static

Definition at line 451 of file ocbbs.cpp.

◆ target_var()

static double target_var ( void )
static

Definition at line 722 of file ocbbs.cpp.

◆ thread_busywait()

static double thread_busywait ( void )
static

Definition at line 935 of file ocbbs.cpp.

◆ thread_ctime()

static double thread_ctime ( void )
static

Definition at line 952 of file ocbbs.cpp.

◆ thread_dt()

static double thread_dt ( void )
static

Definition at line 973 of file ocbbs.cpp.

◆ thread_how_many_proc()

static double thread_how_many_proc ( void )
static

Definition at line 940 of file ocbbs.cpp.

◆ thread_stat()

static double thread_stat ( void )
static

Definition at line 930 of file ocbbs.cpp.

◆ threshold()

static double threshold ( void v)
static

Definition at line 579 of file ocbbs.cpp.

◆ unpack()

static double unpack ( void v)
static

Definition at line 351 of file ocbbs.cpp.

◆ unpack_help()

static void unpack_help ( int  i,
OcBBS bbs 
)
static

Definition at line 330 of file ocbbs.cpp.

◆ upkpyobj()

static Object** upkpyobj ( void v)
static

Definition at line 385 of file ocbbs.cpp.

◆ upkscalar()

static double upkscalar ( void v)
static

Definition at line 357 of file ocbbs.cpp.

◆ upkstr()

static const char** upkstr ( void v)
static

Definition at line 362 of file ocbbs.cpp.

◆ upkvec()

static Object** upkvec ( void v)
static

Definition at line 371 of file ocbbs.cpp.

◆ userid()

static double userid ( void v)
static

Definition at line 225 of file ocbbs.cpp.

◆ vtransfer_time()

static double vtransfer_time ( void v)
static

Definition at line 482 of file ocbbs.cpp.

◆ wait_time()

static double wait_time ( void v)
static

Definition at line 520 of file ocbbs.cpp.

◆ worker()

static double worker ( void v)
static

Definition at line 268 of file ocbbs.cpp.

◆ working()

static double working ( void v)
static

Definition at line 208 of file ocbbs.cpp.

Variable Documentation

◆ hoc_return_type_code

int hoc_return_type_code

Definition at line 41 of file code.cpp.

◆ members

Member_func members[]
static

Definition at line 1019 of file ocbbs.cpp.

◆ nrn_mech_wtime_

double* nrn_mech_wtime_

Definition at line 29 of file treeset.cpp.

◆ nrn_nthread

int nrn_nthread

Definition at line 44 of file multicore.cpp.

◆ nrn_trajectory_request_per_time_step_

bool nrn_trajectory_request_per_time_step_

Definition at line 121 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 *)

Definition at line 37 of file ocbbs.cpp.

◆ nrnpy_pickle2po

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

Definition at line 36 of file ocbbs.cpp.

◆ nrnpy_po2pickle

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

Definition at line 35 of file ocbbs.cpp.

◆ nrnpympi_alltoall_type

Object*(* nrnpympi_alltoall_type) (int, int)

Definition at line 38 of file ocbbs.cpp.

◆ posting_

bool posting_ = false
static

Definition at line 96 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 ** py_scatter(void *)
Definition: ocbbs.cpp:437
static Object ** py_broadcast(void *)
Definition: ocbbs.cpp:433
static Object ** py_alltoall(void *)
Definition: ocbbs.cpp:421
static Object ** py_allgather(void *)
Definition: ocbbs.cpp:425
static Object ** py_gather(void *)
Definition: ocbbs.cpp:429
static Object ** gid2cell(void *v)
Definition: ocbbs.cpp:1009
static Object ** upkpyobj(void *v)
Definition: ocbbs.cpp:385
static Object ** upkvec(void *v)
Definition: ocbbs.cpp:371
static Object ** gid2obj(void *v)
Definition: ocbbs.cpp:1004
static Object ** pyret(void *v)
Definition: ocbbs.cpp:395
static Object ** gid_connect(void *v)
Definition: ocbbs.cpp:1014

Definition at line 1104 of file ocbbs.cpp.

◆ retstr_members

Member_ret_str_func retstr_members[]
static
Initial value:
= {
"upkstr", upkstr,
0,0
}
static const char ** upkstr(void *v)
Definition: ocbbs.cpp:362

Definition at line 1099 of file ocbbs.cpp.

◆ t

double t

Definition at line 123 of file init.cpp.