NEURON
partrans.cpp File Reference
#include <../../nrnconf.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <InterViews/resource.h>
#include <nrnoc2iv.h>
#include <nrniv_mf.h>
#include <nrnmpi.h>
#include <mymath.h>
#include <vector>
#include <map>
#include <unordered_map>
#include "partrans.h"

Go to the source code of this file.

Classes

struct  TransferThreadData
 
struct  SourceViBuf
 

Macros

#define PPList   partrans_PPList
 
#define HAVEWANT_t   sgid_t
 
#define HAVEWANT_alltoallv   sgid_alltoallv
 
#define HAVEWANT2Int   MapSgid2Int
 
#define CHKPNT   fprintf(f, "chkpnt %d\n", chkpnt++);
 

Typedefs

typedef std::unordered_map< sgid_t, int > MapSgid2Int
 
typedef std::unordered_map< Node *, double * > MapNode2PDbl
 
typedef std::vector< double * > DblPList
 
typedef std::vector< Node * > NodePList
 
typedef std::vector< Point_process * > PPList
 
typedef std::vector< int > IntList
 
typedef std::vector< sgid_tSgidList
 
typedef std::vector< double * > DblPVec
 
typedef std::map< sgid_t, std::pair< int, int > > NonVSrcUpdateInfo
 

Functions

void nrnmpi_source_var ()
 
void nrnmpi_target_var ()
 
void nrnmpi_setup_transfer ()
 
void nrn_partrans_clear ()
 
static void mpi_transfer ()
 
static void thread_transfer (NrnThread *)
 
static void thread_vi_compute (NrnThread *)
 
static void mk_ttd ()
 
double * nrn_recalc_ptr (double *)
 
void nrn_partrans_update_ptrs ()
 
static void delete_imped_info ()
 
static bool non_vsrc_setinfo (sgid_t ssid, Node *nd, double *pv)
 
static double * non_vsrc_update (Node *nd, int type, int ix)
 
static Nodepv2node (sgid_t ssid, double *pv)
 
static int compute_parray_index (Point_process *pp, double *ptv)
 
static double * tar_ptr (Point_process *pp, int index)
 
static void target_ptr_update ()
 
static void rm_ttd ()
 
static void rm_svibuf ()
 
static MapNode2PDblmk_svibuf ()
 
void pargap_jacobi_setup (int mode)
 
void pargap_jacobi_rhs (double *b, double *x)
 
size_t nrnbbcore_gap_write (const char *path, int *group_ids)
 
static SetupTransferInfonrncore_transfer_info (int)
 
SetupTransferInfonrn_get_partrans_setup_info (int ngroup, int cn_nthread, size_t cn_sidt_sz)
 

Variables

double t
 
int v_structure_change
 
int structure_change_cnt
 
int nrn_node_ptr_change_cnt_
 
const char * bbcore_write_version
 
void(* nrnthread_v_transfer_ )(NrnThread *)
 
void(* nrnthread_vi_compute_ )(NrnThread *)
 
void(* nrnmpi_v_transfer_ )()
 
void(* nrn_mk_transfer_thread_data_ )()
 
static TransferThreadDatatransfer_thread_data_
 
static int n_transfer_thread_data_
 
static SourceViBufsource_vi_buf_
 
static int n_source_vi_buf_
 
static double * insrc_buf_
 
static double * outsrc_buf_
 
static double ** poutsrc_
 
static int * poutsrc_indices_
 
static int insrc_buf_size_
 
static int * insrccnt_
 
static int * insrcdspl_
 
static int outsrc_buf_size_
 
static int * outsrccnt_
 
static int * outsrcdspl_
 
static MapSgid2Int sid2insrc_
 
static DblPList targets_
 
static SgidList sgid2targets_
 
static PPList target_pntlist_
 
static IntList target_parray_index_
 
static NodePList visources_
 
static SgidList sgids_
 
static MapSgid2Int sgid2srcindex_
 
static NonVSrcUpdateInfo non_vsrc_update_info_
 
static int max_targets_
 
static int target_ptr_update_cnt_ = 0
 
static int target_ptr_need_update_cnt_ = 0
 
static int vptr_change_cnt_ = 0
 
static bool is_setup_
 
static int imped_current_type_count_
 
static int * imped_current_type_
 
static Memb_list ** imped_current_ml_
 
static double * vgap1
 
static double * vgap2
 
static int imped_change_cnt
 

Macro Definition Documentation

◆ CHKPNT

#define CHKPNT   fprintf(f, "chkpnt %d\n", chkpnt++);

◆ HAVEWANT2Int

#define HAVEWANT2Int   MapSgid2Int

Definition at line 688 of file partrans.cpp.

◆ HAVEWANT_alltoallv

#define HAVEWANT_alltoallv   sgid_alltoallv

Definition at line 687 of file partrans.cpp.

◆ HAVEWANT_t

#define HAVEWANT_t   sgid_t

Definition at line 686 of file partrans.cpp.

◆ PPList

#define PPList   partrans_PPList

Definition at line 170 of file partrans.cpp.

Typedef Documentation

◆ DblPList

typedef std::vector<double*> DblPList

Definition at line 168 of file partrans.cpp.

◆ DblPVec

typedef std::vector<double*> DblPVec

Definition at line 192 of file partrans.cpp.

◆ IntList

typedef std::vector<int> IntList

Definition at line 172 of file partrans.cpp.

◆ MapNode2PDbl

typedef std::unordered_map<Node*, double*> MapNode2PDbl

Definition at line 167 of file partrans.cpp.

◆ MapSgid2Int

typedef std::unordered_map<sgid_t, int> MapSgid2Int

Definition at line 166 of file partrans.cpp.

◆ NodePList

typedef std::vector<Node*> NodePList

Definition at line 169 of file partrans.cpp.

◆ NonVSrcUpdateInfo

typedef std::map<sgid_t, std::pair<int, int> > NonVSrcUpdateInfo

Definition at line 197 of file partrans.cpp.

◆ PPList

typedef std::vector<Point_process*> PPList

Definition at line 171 of file partrans.cpp.

◆ SgidList

typedef std::vector<sgid_t> SgidList

Definition at line 173 of file partrans.cpp.

Function Documentation

◆ compute_parray_index()

static int compute_parray_index ( Point_process pp,
double *  ptv 
)
static

Definition at line 292 of file partrans.cpp.

◆ delete_imped_info()

static void delete_imped_info ( )
static

Definition at line 215 of file partrans.cpp.

◆ mk_svibuf()

static MapNode2PDbl* mk_svibuf ( )
static

Definition at line 410 of file partrans.cpp.

◆ mk_ttd()

static void mk_ttd ( )
static

Definition at line 492 of file partrans.cpp.

◆ mpi_transfer()

void mpi_transfer ( )
static

Definition at line 612 of file partrans.cpp.

◆ non_vsrc_setinfo()

static bool non_vsrc_setinfo ( sgid_t  ssid,
Node nd,
double *  pv 
)
static

Definition at line 226 of file partrans.cpp.

◆ non_vsrc_update()

static double* non_vsrc_update ( Node nd,
int  type,
int  ix 
)
static

Definition at line 238 of file partrans.cpp.

◆ nrn_get_partrans_setup_info()

SetupTransferInfo* nrn_get_partrans_setup_info ( int  ngroup,
int  cn_nthread,
size_t  cn_sidt_sz 
)

Definition at line 1117 of file partrans.cpp.

◆ nrn_partrans_clear()

void nrn_partrans_clear ( )

Definition at line 897 of file partrans.cpp.

◆ nrn_partrans_update_ptrs()

void nrn_partrans_update_ptrs ( )

Definition at line 350 of file partrans.cpp.

◆ nrn_recalc_ptr()

double* nrn_recalc_ptr ( double *  old)

Definition at line 2179 of file treeset.cpp.

◆ nrnbbcore_gap_write()

size_t nrnbbcore_gap_write ( const char *  path,
int *  group_ids 
)

Definition at line 1123 of file partrans.cpp.

◆ nrncore_transfer_info()

static SetupTransferInfo * nrncore_transfer_info ( int  cn_nthread)
static

Definition at line 1172 of file partrans.cpp.

◆ nrnmpi_setup_transfer()

void nrnmpi_setup_transfer ( )

Definition at line 693 of file partrans.cpp.

◆ nrnmpi_source_var()

void nrnmpi_source_var ( )

Definition at line 274 of file partrans.cpp.

◆ nrnmpi_target_var()

void nrnmpi_target_var ( )

Definition at line 324 of file partrans.cpp.

◆ pargap_jacobi_rhs()

void pargap_jacobi_rhs ( double *  b,
double *  x 
)

Definition at line 1035 of file partrans.cpp.

◆ pargap_jacobi_setup()

void pargap_jacobi_setup ( int  mode)

Definition at line 937 of file partrans.cpp.

◆ pv2node()

static Node* pv2node ( sgid_t  ssid,
double *  pv 
)
static

Definition at line 255 of file partrans.cpp.

◆ rm_svibuf()

static void rm_svibuf ( )
static

Definition at line 393 of file partrans.cpp.

◆ rm_ttd()

static void rm_ttd ( )
static

Definition at line 376 of file partrans.cpp.

◆ tar_ptr()

static double* tar_ptr ( Point_process pp,
int  index 
)
static

Definition at line 300 of file partrans.cpp.

◆ target_ptr_update()

static void target_ptr_update ( )
static

Definition at line 304 of file partrans.cpp.

◆ thread_transfer()

void thread_transfer ( NrnThread _nt)
static

Definition at line 637 of file partrans.cpp.

◆ thread_vi_compute()

void thread_vi_compute ( NrnThread _nt)
static

Definition at line 596 of file partrans.cpp.

Variable Documentation

◆ bbcore_write_version

const char* bbcore_write_version
extern

Definition at line 25 of file nrncore_io.cpp.

◆ imped_change_cnt

int imped_change_cnt
static

Definition at line 935 of file partrans.cpp.

◆ imped_current_ml_

Memb_list** imped_current_ml_
static

Definition at line 213 of file partrans.cpp.

◆ imped_current_type_

int* imped_current_type_
static

Definition at line 212 of file partrans.cpp.

◆ imped_current_type_count_

int imped_current_type_count_
static

Definition at line 211 of file partrans.cpp.

◆ insrc_buf_

double* insrc_buf_
static

Definition at line 175 of file partrans.cpp.

◆ insrc_buf_size_

int insrc_buf_size_
static

Definition at line 179 of file partrans.cpp.

◆ insrccnt_

int * insrccnt_
static

Definition at line 179 of file partrans.cpp.

◆ insrcdspl_

int * insrcdspl_
static

Definition at line 179 of file partrans.cpp.

◆ is_setup_

bool is_setup_
static

Definition at line 207 of file partrans.cpp.

◆ max_targets_

int max_targets_
static

Definition at line 201 of file partrans.cpp.

◆ n_source_vi_buf_

int n_source_vi_buf_
static

Definition at line 164 of file partrans.cpp.

◆ n_transfer_thread_data_

int n_transfer_thread_data_
static

Definition at line 155 of file partrans.cpp.

◆ non_vsrc_update_info_

NonVSrcUpdateInfo non_vsrc_update_info_
static

Definition at line 198 of file partrans.cpp.

◆ nrn_mk_transfer_thread_data_

void(* nrn_mk_transfer_thread_data_) () ( )
extern

Definition at line 48 of file multicore.cpp.

◆ nrn_node_ptr_change_cnt_

int nrn_node_ptr_change_cnt_
extern

Definition at line 84 of file treeset.cpp.

◆ nrnmpi_v_transfer_

void(* nrnmpi_v_transfer_) () ( )
extern

Definition at line 152 of file fadvance.cpp.

◆ nrnthread_v_transfer_

void(* nrnthread_v_transfer_) (NrnThread *) ( NrnThread nt)
extern

Definition at line 153 of file fadvance.cpp.

◆ nrnthread_vi_compute_

void(* nrnthread_vi_compute_) (NrnThread *) ( NrnThread nt)
extern

Definition at line 155 of file fadvance.cpp.

◆ outsrc_buf_

double* outsrc_buf_
static

Definition at line 176 of file partrans.cpp.

◆ outsrc_buf_size_

int outsrc_buf_size_
static

Definition at line 180 of file partrans.cpp.

◆ outsrccnt_

int * outsrccnt_
static

Definition at line 180 of file partrans.cpp.

◆ outsrcdspl_

int * outsrcdspl_
static

Definition at line 180 of file partrans.cpp.

◆ poutsrc_

double** poutsrc_
static

Definition at line 177 of file partrans.cpp.

◆ poutsrc_indices_

int* poutsrc_indices_
static

Definition at line 178 of file partrans.cpp.

◆ sgid2srcindex_

MapSgid2Int sgid2srcindex_
static

Definition at line 195 of file partrans.cpp.

◆ sgid2targets_

SgidList sgid2targets_
static

Definition at line 187 of file partrans.cpp.

◆ sgids_

SgidList sgids_
static

Definition at line 194 of file partrans.cpp.

◆ sid2insrc_

MapSgid2Int sid2insrc_
static

Definition at line 181 of file partrans.cpp.

◆ source_vi_buf_

SourceViBuf* source_vi_buf_
static

Definition at line 163 of file partrans.cpp.

◆ structure_change_cnt

int structure_change_cnt

Definition at line 53 of file partrans.cpp.

◆ t

double t
extern

Definition at line 59 of file cvodeobj.cpp.

◆ target_parray_index_

IntList target_parray_index_
static

Definition at line 189 of file partrans.cpp.

◆ target_pntlist_

PPList target_pntlist_
static

Definition at line 188 of file partrans.cpp.

◆ target_ptr_need_update_cnt_

int target_ptr_need_update_cnt_ = 0
static

Definition at line 204 of file partrans.cpp.

◆ target_ptr_update_cnt_

int target_ptr_update_cnt_ = 0
static

Definition at line 203 of file partrans.cpp.

◆ targets_

DblPList targets_
static

Definition at line 186 of file partrans.cpp.

◆ transfer_thread_data_

TransferThreadData* transfer_thread_data_
static

Definition at line 154 of file partrans.cpp.

◆ v_structure_change

int v_structure_change

Definition at line 52 of file partrans.cpp.

◆ vgap1

double* vgap1
static

Definition at line 934 of file partrans.cpp.

◆ vgap2

double * vgap2
static

Definition at line 934 of file partrans.cpp.

◆ visources_

NodePList visources_
static

Definition at line 193 of file partrans.cpp.

◆ vptr_change_cnt_

int vptr_change_cnt_ = 0
static

Definition at line 205 of file partrans.cpp.