NEURON
ocbbs.cpp File Reference
#include <list>
#include <InterViews/resource.h>
#include "classreg.h"
#include "code.h"
#include "ivocvect.h"
#include "hoclist.h"
#include "bbs.h"
#include "bbsimpl.h"
#include "section.h"
#include "membfunc.h"
#include "multicore.h"
#include "nrnpy.h"
#include "utils/profile/profiler_interface.h"
#include "node_order_optim/node_order_optim.h"
#include <nrnmpi.h>
#include <cerrno>

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 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_multisend_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)
 
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 ()
 
void bbs_done ()
 
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 number_of_worker_threads (void *)
 
static double partition (void *)
 
static Object ** get_partition (void *)
 
static double thread_stat (void *)
 
static double thread_busywait (void *)
 
static double thread_how_many_proc (void *)
 
static double optimize_node_order (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 print_memory_stats (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 void * cons (Object *)
 
static void destruct (void *v)
 
void ParallelContext_reg ()
 

Variables

double t
 
double nrnmpi_rtcomp_time_
 
double nrnmpi_step_wait_
 
double * nrn_mech_wtime_
 
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 20 of file ocbbs.cpp.

Function Documentation

◆ allgather()

static double allgather ( void *  )
static

Definition at line 761 of file ocbbs.cpp.

◆ allreduce()

static double allreduce ( void *  )
static

Definition at line 726 of file ocbbs.cpp.

◆ alltoall()

static double alltoall ( void *  )
static

Definition at line 784 of file ocbbs.cpp.

◆ barrier()

static double barrier ( void *  )
static

Definition at line 712 of file ocbbs.cpp.

◆ broadcast()

static double broadcast ( void *  )
static

Definition at line 824 of file ocbbs.cpp.

◆ cell()

static double cell ( void *  v)
static

Definition at line 540 of file ocbbs.cpp.

◆ cons()

static void* cons ( Object )
static

Definition at line 1120 of file ocbbs.cpp.

◆ context()

static double context ( void *  v)
static

Definition at line 171 of file ocbbs.cpp.

◆ destruct()

static void destruct ( void *  v)
static

Definition at line 1131 of file ocbbs.cpp.

◆ done()

static double done ( void *  v)
static

Definition at line 251 of file ocbbs.cpp.

◆ event_time()

static double event_time ( void *  v)
static

Definition at line 520 of file ocbbs.cpp.

◆ get_partition()

static Object** get_partition ( void *  )
static

Definition at line 905 of file ocbbs.cpp.

◆ gid2cell()

static Object** gid2cell ( void *  v)
static

Definition at line 1013 of file ocbbs.cpp.

◆ gid2obj()

static Object** gid2obj ( void *  v)
static

Definition at line 1008 of file ocbbs.cpp.

◆ gid_clear()

static double gid_clear ( void *  v)
static

Definition at line 608 of file ocbbs.cpp.

◆ gid_connect()

static Object** gid_connect ( void *  v)
static

Definition at line 1018 of file ocbbs.cpp.

◆ gid_exists()

static double gid_exists ( void *  v)
static

Definition at line 534 of file ocbbs.cpp.

◆ hoc_which_template()

Symbol* hoc_which_template ( Symbol s)

Definition at line 1492 of file hoc_oop.cpp.

◆ integ_time()

static double integ_time ( void *  v)
static

Definition at line 524 of file ocbbs.cpp.

◆ key_help()

static char * key_help ( )
static

Definition at line 406 of file ocbbs.cpp.

◆ look()

static double look ( void *  v)
static

Definition at line 423 of file ocbbs.cpp.

◆ look_take()

static double look_take ( void *  v)
static

Definition at line 433 of file ocbbs.cpp.

◆ master_works()

static double master_works ( void *  v)
static

Definition at line 245 of file ocbbs.cpp.

◆ maxhist()

static double maxhist ( void *  v)
static

Definition at line 677 of file ocbbs.cpp.

◆ mech_time()

static double mech_time ( void *  v)
static

Definition at line 463 of file ocbbs.cpp.

◆ multisplit()

static double multisplit ( void *  v)
static

Definition at line 574 of file ocbbs.cpp.

◆ nhost()

static double nhost ( void *  v)
static

Definition at line 201 of file ocbbs.cpp.

◆ nhost_bbs()

static double nhost_bbs ( void *  v)
static

Definition at line 221 of file ocbbs.cpp.

◆ nhost_world()

static double nhost_world ( void *  v)
static

Definition at line 211 of file ocbbs.cpp.

◆ nrn_multisend_receive_time()

double nrn_multisend_receive_time ( int  type)

Definition at line 319 of file multisend.cpp.

◆ nrn_prcellstate()

void nrn_prcellstate ( int  gid,
const char *  suffix 
)

Definition at line 154 of file prcellstate.cpp.

◆ nrn_rank()

static double nrn_rank ( void *  v)
static

Definition at line 206 of file ocbbs.cpp.

◆ nrn_set_timeout()

int nrn_set_timeout ( int  timeout)

Definition at line 1244 of file netpar.cpp.

◆ nrn_thread_t()

static double nrn_thread_t ( void *  )
static

Definition at line 955 of file ocbbs.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 seg_lfp_factors: list of lfp factors

Definition at line 86 of file nrncore_utils.cpp.

◆ nrnbbcore_register_mapping() [2/2]

static double nrnbbcore_register_mapping ( void *  )
static

Definition at line 1004 of file ocbbs.cpp.

◆ nrncore_is_enabled()

int nrncore_is_enabled ( )

Definition at line 444 of file nrncore_write.cpp.

◆ nrncore_is_file_mode()

int nrncore_is_file_mode ( )

Definition at line 448 of file nrncore_write.cpp.

◆ nrncore_psolve()

int nrncore_psolve ( double  tstop,
int  file_mode 
)

Definition at line 452 of file nrncore_write.cpp.

◆ nrncore_run()

int nrncore_run ( const char *  arg)

Definition at line 440 of file nrncore_write.cpp.

◆ nrncore_write()

size_t nrncore_write ( )

Definition at line 177 of file nrncore_write.cpp.

◆ nrncorerun()

static double nrncorerun ( void *  )
static

Definition at line 997 of file ocbbs.cpp.

◆ nrncorewrite_argappend()

static double nrncorewrite_argappend ( void *  )
static

Definition at line 988 of file ocbbs.cpp.

◆ nrncorewrite_argvec()

static double nrncorewrite_argvec ( void *  )
static

Definition at line 967 of file ocbbs.cpp.

◆ nrnmpi_char_broadcast()

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

Definition at line 43 of file ocbbs.cpp.

◆ nrnmpi_dbl_broadcast()

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

Definition at line 44 of file ocbbs.cpp.

◆ nrnmpi_gid_clear()

void nrnmpi_gid_clear ( int  arg)

Definition at line 988 of file netpar.cpp.

◆ nrnmpi_int_broadcast()

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

Definition at line 42 of file ocbbs.cpp.

◆ nrnmpi_multisplit()

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

Definition at line 300 of file multisplit.cpp.

◆ nrnmpi_setup_transfer()

void nrnmpi_setup_transfer ( )

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

◆ nrnmpi_splitcell_connect()

int nrnmpi_splitcell_connect ( int  that_host)

Definition at line 48 of file splitcell.cpp.

◆ nrnmpi_target_var()

void nrnmpi_target_var ( )

◆ nthrd()

static double nthrd ( void *  )
static

Definition at line 868 of file ocbbs.cpp.

◆ number_of_worker_threads()

static double number_of_worker_threads ( void *  )
static

Definition at line 880 of file ocbbs.cpp.

◆ optimize_node_order()

static double optimize_node_order ( void *  )
static

Definition at line 926 of file ocbbs.cpp.

◆ outputcell()

static double outputcell ( void *  v)
static

Definition at line 617 of file ocbbs.cpp.

◆ pack()

static double pack ( void *  v)
static

Definition at line 280 of file ocbbs.cpp.

◆ pack_help()

static void pack_help ( int  i,
OcBBS bbs 
)
static

Definition at line 257 of file ocbbs.cpp.

◆ ParallelContext_reg()

void ParallelContext_reg ( )

Definition at line 1136 of file ocbbs.cpp.

◆ partition()

static double partition ( void *  )
static

Definition at line 885 of file ocbbs.cpp.

◆ pctime()

static double pctime ( void *  v)
static

Definition at line 443 of file ocbbs.cpp.

◆ post()

static double post ( void *  v)
static

Definition at line 286 of file ocbbs.cpp.

◆ prcellstate()

static double prcellstate ( void *  v)
static

Definition at line 480 of file ocbbs.cpp.

◆ print_memory_stats()

static double print_memory_stats ( void *  )
static

Definition at line 974 of file ocbbs.cpp.

◆ psolve()

static double psolve ( void *  v)
static

Definition at line 638 of file ocbbs.cpp.

◆ py_allgather()

static Object** py_allgather ( void *  )
static

Definition at line 390 of file ocbbs.cpp.

◆ py_alltoall()

static Object** py_alltoall ( void *  )
static

Definition at line 386 of file ocbbs.cpp.

◆ py_alltoall_type()

static Object** py_alltoall_type ( int  type)
static

Definition at line 374 of file ocbbs.cpp.

◆ py_broadcast()

static Object** py_broadcast ( void *  )
static

Definition at line 398 of file ocbbs.cpp.

◆ py_gather()

static Object** py_gather ( void *  )
static

Definition at line 394 of file ocbbs.cpp.

◆ py_scatter()

static Object** py_scatter ( void *  )
static

Definition at line 402 of file ocbbs.cpp.

◆ pyret()

static Object** pyret ( void *  v)
static

Definition at line 363 of file ocbbs.cpp.

◆ rank_bbs()

static double rank_bbs ( void *  v)
static

Definition at line 226 of file ocbbs.cpp.

◆ rank_world()

static double rank_world ( void *  v)
static

Definition at line 216 of file ocbbs.cpp.

◆ retval()

static double retval ( void *  v)
static

Definition at line 191 of file ocbbs.cpp.

◆ sec_in_thread()

static double sec_in_thread ( void *  )
static

Definition at line 934 of file ocbbs.cpp.

◆ send_time()

static double send_time ( void *  v)
static

Definition at line 512 of file ocbbs.cpp.

◆ set_gid2node()

static double set_gid2node ( void *  v)
static

Definition at line 528 of file ocbbs.cpp.

◆ set_maxstep()

static double set_maxstep ( void *  v)
static

Definition at line 654 of file ocbbs.cpp.

◆ set_mpiabort_on_error()

static double set_mpiabort_on_error ( void *  )
static

Definition at line 600 of file ocbbs.cpp.

◆ set_timeout()

static double set_timeout ( void *  v)
static

Definition at line 591 of file ocbbs.cpp.

◆ setup_transfer()

static double setup_transfer ( void *  )
static

Definition at line 707 of file ocbbs.cpp.

◆ source_var()

static double source_var ( void *  )
static

Definition at line 690 of file ocbbs.cpp.

◆ spcompress()

static double spcompress ( void *  v)
static

Definition at line 551 of file ocbbs.cpp.

◆ spike_record()

static double spike_record ( void *  v)
static

Definition at line 624 of file ocbbs.cpp.

◆ spike_stat()

static double spike_stat ( void *  v)
static

Definition at line 659 of file ocbbs.cpp.

◆ splitcell_connect()

static double splitcell_connect ( void *  v)
static

Definition at line 567 of file ocbbs.cpp.

◆ step_time()

static double step_time ( void *  v)
static

Definition at line 490 of file ocbbs.cpp.

◆ step_wait()

static double step_wait ( void *  v)
static

Definition at line 498 of file ocbbs.cpp.

◆ submit()

static double submit ( void *  v)
static

Definition at line 163 of file ocbbs.cpp.

◆ submit_help()

static int submit_help ( OcBBS bbs)
static

Definition at line 93 of file ocbbs.cpp.

◆ subworlds()

static double subworlds ( void *  v)
static

Definition at line 231 of file ocbbs.cpp.

◆ take()

static double take ( void *  v)
static

Definition at line 416 of file ocbbs.cpp.

◆ target_var()

static double target_var ( void *  )
static

Definition at line 698 of file ocbbs.cpp.

◆ thread_busywait()

static double thread_busywait ( void *  )
static

Definition at line 915 of file ocbbs.cpp.

◆ thread_ctime()

static double thread_ctime ( void *  )
static

Definition at line 940 of file ocbbs.cpp.

◆ thread_dt()

static double thread_dt ( void *  )
static

Definition at line 961 of file ocbbs.cpp.

◆ thread_how_many_proc()

static double thread_how_many_proc ( void *  )
static

Definition at line 920 of file ocbbs.cpp.

◆ thread_stat()

static double thread_stat ( void *  )
static

Definition at line 910 of file ocbbs.cpp.

◆ threshold()

static double threshold ( void *  v)
static

Definition at line 546 of file ocbbs.cpp.

◆ unpack()

static double unpack ( void *  v)
static

Definition at line 321 of file ocbbs.cpp.

◆ unpack_help()

static void unpack_help ( int  i,
OcBBS bbs 
)
static

Definition at line 300 of file ocbbs.cpp.

◆ upkpyobj()

static Object** upkpyobj ( void *  v)
static

Definition at line 355 of file ocbbs.cpp.

◆ upkscalar()

static double upkscalar ( void *  v)
static

Definition at line 327 of file ocbbs.cpp.

◆ upkstr()

static const char** upkstr ( void *  v)
static

Definition at line 332 of file ocbbs.cpp.

◆ upkvec()

static Object** upkvec ( void *  v)
static

Definition at line 341 of file ocbbs.cpp.

◆ userid()

static double userid ( void *  v)
static

Definition at line 196 of file ocbbs.cpp.

◆ vtransfer_time()

static double vtransfer_time ( void *  v)
static

Definition at line 447 of file ocbbs.cpp.

◆ wait_time()

static double wait_time ( void *  v)
static

Definition at line 485 of file ocbbs.cpp.

◆ worker()

static double worker ( void *  v)
static

Definition at line 239 of file ocbbs.cpp.

◆ working()

static double working ( void *  v)
static

Definition at line 179 of file ocbbs.cpp.

Variable Documentation

◆ members

Member_func members[]
static

Definition at line 1023 of file ocbbs.cpp.

◆ nrn_mech_wtime_

double* nrn_mech_wtime_
extern

Definition at line 38 of file treeset.cpp.

◆ nrn_trajectory_request_per_time_step_

bool nrn_trajectory_request_per_time_step_
extern

Definition at line 106 of file netcvode.cpp.

◆ nrnmpi_rtcomp_time_

double nrnmpi_rtcomp_time_

Definition at line 31 of file ocbbs.cpp.

◆ nrnmpi_step_wait_

double nrnmpi_step_wait_

Definition at line 34 of file ocbbs.cpp.

◆ posting_

bool posting_ = false
static

Definition at line 70 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},
{"get_partition", get_partition},
{"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:355
static Object ** upkvec(void *v)
Definition: ocbbs.cpp:341
static Object ** gid2cell(void *v)
Definition: ocbbs.cpp:1013
static Object ** py_gather(void *)
Definition: ocbbs.cpp:394
static Object ** py_broadcast(void *)
Definition: ocbbs.cpp:398
static Object ** pyret(void *v)
Definition: ocbbs.cpp:363
static Object ** py_alltoall(void *)
Definition: ocbbs.cpp:386
static Object ** gid_connect(void *v)
Definition: ocbbs.cpp:1018
static Object ** py_allgather(void *)
Definition: ocbbs.cpp:390
static Object ** gid2obj(void *v)
Definition: ocbbs.cpp:1008
static Object ** py_scatter(void *)
Definition: ocbbs.cpp:402
static Object ** get_partition(void *)
Definition: ocbbs.cpp:905

Definition at line 1106 of file ocbbs.cpp.

◆ retstr_members

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

Definition at line 1104 of file ocbbs.cpp.

◆ t

double t
extern

Definition at line 57 of file cvodeobj.cpp.