NEURON
multisplitcontrol.h
Go to the documentation of this file.
1 #ifndef multisplitcontrol_h
2 #define multisplitcontrol_h
3 
5 public:
7  virtual ~MultiSplitThread();
8 
9  void del_sidA();
10  void triang(NrnThread*);
11  void bksub(NrnThread*);
17  void v_setup(NrnThread*);
18 
19  double *sid1A, *sid1B; // to be filled in sid1 and sid0 columns
20  int* sid0i; // interior node to sid0 index. parallel to sid1B
21  // for mapping sid1A... to transfer buffer when ReducedTree not on this machine
22  int nbackrt_; // number of backbones that send info to ReducedTree
23  int* backsid_; // sid0
24  int* backAindex_; // sid1A index for sid0
25  int* backBindex_; // sid1B index for sid1
28  int i1, i2, i3;
29 };
30 
32 public:
34  virtual ~MultiSplitControl();
35 
36  void multisplit_clear();
37  void multisplit_nocap_v();
38  void multisplit_nocap_v_part1(NrnThread*);
39  void multisplit_nocap_v_part2(NrnThread*);
40  void multisplit_nocap_v_part3(NrnThread*);
41  void multisplit_adjust_rhs(NrnThread*);
42  void prstruct();
43  void reduce_solve();
44 
45  void multisplit(Section*, double, int, int);
46  void solve();
47  void reduced_mark(int, int, int, int*, int*, int*);
48  void matrix_exchange();
49  void matrix_exchange_nocap();
50  void v_setup();
51  void exchange_setup();
52  void rt_map_update();
53  void del_msti();
54  void pmat(bool full = false);
55  void pmatf(bool full = false);
56  void pmat1(const char*);
57  void pexch();
58 
59  int narea2buf_, narea2rt_;
62 
63  int nthost_; // number of distinct hosts that need send-receive
64  int ihost_reduced_long_, ihost_short_long_; // indices for groups
65  MultiSplitTransferInfo* msti_; // will be nthost_ of them
66  int tbsize;
67  int ndbsize;
68  double* trecvbuf_; //enough buffer for all receives
69  double* tsendbuf_; // enough for all send
70  int* nodeindex_buffer_; // nodeindex_ points into here
71  int* nodeindex_buffer_th_; // thread for above
72  int* nodeindex_rthost_; // ReducedTree machine that gets this node info. Normally -1.
73  int narea_; // number of transfer nodes that need area adjustment
74  int iarea_short_long_;// different ones get adjusted at different times
77 
78  int nrtree_;
80 
81  std::unique_ptr<MultiSplitTable> classical_root_to_multisplit_;
82  MultiSplitList* multisplit_list_; // NrnHashIterate is not in insertion order
83 
84  int nth_;
86 };
87 
88 #endif
void bksub_backbone(NrnThread *)
std::unique_ptr< MultiSplitTable > classical_root_to_multisplit_
Represent main neuron object computed by single thread.
Definition: multicore.h:58
MultiSplitTransferInfo * msti_
void triang(NrnThread *)
MultiSplitThread * mth_
void solve(void)
Definition: nonlin.cpp:287
void bksub_subtrees(NrnThread *)
void bksub(NrnThread *)
static double multisplit(void *v)
Definition: ocbbs.cpp:607
void triang_subtree2backbone(NrnThread *)
void triang_backbone(NrnThread *)
ReducedTree ** rtree_
virtual ~MultiSplitThread()
Definition: multisplit.cpp:358
void bksub_short_backbone_part1(NrnThread *)
void v_setup(NrnThread *)
MultiSplitList * multisplit_list_