NEURON
multisplitcontrol.h
Go to the documentation of this file.
1 #pragma once
2 
4  public:
6  virtual ~MultiSplitThread();
7 
8  void del_sidA();
9  void triang(NrnThread*);
10  void bksub(NrnThread*);
16  void v_setup(NrnThread*);
17 
18  double *sid1A, *sid1B; // to be filled in sid1 and sid0 columns
19  int* sid0i; // interior node to sid0 index. parallel to sid1B
20  // for mapping sid1A... to transfer buffer when ReducedTree not on this machine
21  int nbackrt_; // number of backbones that send info to ReducedTree
22  int* backsid_; // sid0
23  int* backAindex_; // sid1A index for sid0
24  int* backBindex_; // sid1B index for sid1
27  int i1, i2, i3;
28 };
29 
31  public:
33  virtual ~MultiSplitControl();
34 
35  void multisplit_clear();
41  void prstruct();
42  void reduce_solve();
43 
44  void multisplit(Section*, double, int, int);
45  void solve();
46  void reduced_mark(int, int, int, int*, int*, int*);
47  void matrix_exchange();
48  void matrix_exchange_nocap();
49  void v_setup();
50  void exchange_setup();
51  void rt_map_update();
52  void del_msti();
53  void pmat(bool full = false);
54  void pmatf(bool full = false);
55  void pmat1(const char*);
56  void pexch();
57 
61 
62  int nthost_; // number of distinct hosts that need send-receive
63  int ihost_reduced_long_, ihost_short_long_; // indices for groups
64  MultiSplitTransferInfo* msti_; // will be nthost_ of them
65  int tbsize;
66  int ndbsize;
67  double* trecvbuf_; // enough buffer for all receives
68  double* tsendbuf_; // enough for all send
69  int* nodeindex_buffer_; // nodeindex_ points into here
70  int* nodeindex_buffer_th_; // thread for above
71  int* nodeindex_rthost_; // ReducedTree machine that gets this node info. Normally -1.
72  int narea_; // number of transfer nodes that need area adjustment
73  int iarea_short_long_; // different ones get adjusted at different times
76 
77  int nrtree_;
79 
80  std::unique_ptr<MultiSplitTable> classical_root_to_multisplit_;
81  MultiSplitList* multisplit_list_; // NrnHashIterate is not in insertion order
82 
83  int nth_;
85 };
MultiSplitList * multisplit_list_
MultiSplitThread * mth_
void multisplit(Section *, double, int, int)
Definition: multisplit.cpp:354
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:335
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:350
void bksub_backbone(NrnThread *)
void v_setup(NrnThread *)
void bksub_subtrees(NrnThread *)
void triang_subtree2backbone(NrnThread *)
std::vector< MultiSplit * > MultiSplitList
Definition: multisplit.cpp:295
Represent main neuron object computed by single thread.
Definition: multicore.h:58