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();
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 
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
MultiSplitList * multisplit_list_
MultiSplitThread * mth_
void multisplit(Section *, double, int, int)
Definition: multisplit.cpp:363
void multisplit_nocap_v_part1(NrnThread *)
void multisplit_nocap_v()
void multisplit_adjust_rhs(NrnThread *)
void pmatf(bool full=false)
void pmat1(const char *)
void matrix_exchange_nocap()
virtual ~MultiSplitControl()
Definition: multisplit.cpp:344
MultiSplitTransferInfo * msti_
std::unique_ptr< MultiSplitTable > classical_root_to_multisplit_
void multisplit_nocap_v_part3(NrnThread *)
void pmat(bool full=false)
ReducedTree ** rtree_
void reduced_mark(int, int, int, int *, int *, int *)
void multisplit_nocap_v_part2(NrnThread *)
void triang_backbone(NrnThread *)
void triang(NrnThread *)
void bksub_short_backbone_part1(NrnThread *)
void bksub(NrnThread *)
virtual ~MultiSplitThread()
Definition: multisplit.cpp:359
void bksub_backbone(NrnThread *)
void v_setup(NrnThread *)
void bksub_subtrees(NrnThread *)
void triang_subtree2backbone(NrnThread *)
std::vector< MultiSplit * > MultiSplitList
Definition: multisplit.cpp:304
Represent main neuron object computed by single thread.
Definition: multicore.h:58