aboutsummaryrefslogtreecommitdiff
path: root/src/include/pughi.h
blob: b934690d7142d8ec25c42184d2022739c97766af (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
 /*@@
   @header    pughi.h
   @date      Tue Apr 18 21:22:42 2000
   @author    Tom Goodale
   @desc 
   Internal stuff for PUGH
   @enddesc 
   @version $Header$
 @@*/

#ifndef _PUGHI_H_
#define _PUGHI_H_ 1

#ifdef __cplusplus
extern "C" 
{
#endif

extern int (*PUGHi_DestroyP2LTranslation) (void *table);
extern int (*PUGHi_PhysicalToLogical) (void *table, int proc);
extern int (*PUGHi_LogicalToPhysical) (void *table, int num);

extern void *(*PUGHi_CreateP2LTranslation)(int dim, 
                                           int *nprocs, 
                                           int np);

pConnectivity *PUGH_SetupConnectivity(int dim, 
                                      int total_procs, 
                                      const int *nsize,
                                      const int *nghostzones,
                                      int *nprocs,
                                      int *perme);

pGExtras *PUGH_SetupPGExtras(int is_gf,
                             int dim, 
                             int *perme,
                             int *sh,
                             int *nghosts,
                             int total_procs,
                             int *nprocs,
                             int **neighbours,
                             int this_proc);

pComm *PUGH_SetupGArrayGroupComm(pGH *pughGH,
                                 int dim,
                                 int first_var,
                                 int n_vars,
                                 int vartype,
                                 int sync_timelevel,
                                 pGExtras *extras);

void pGH_DumpInfo(pGH *pughGH);
int  PUGH_SetupDefaultTopology(int dim, int *nprocs);
void PUGH_DestroyGArray(pGA **GA);
void PUGH_DestroyComm(pComm **comm);
void PUGH_DestroyConnectivity(pConnectivity **conn);
void PUGH_DestroyPGExtras(pGExtras **PGExtras);
void PUGH_DestroyPGH(pGH **pughGH);

int PUGH_GenerateNeighbours(int dim, 
                            int total_procs, 
                            int *nprocs, 
                            int **neighbours, 
                            int *perme);

pGA *PUGH_SetupGArray(void *parent,
                      pGExtras *extras,
                      pConnectivity *connectivity,
                      pComm *groupcomm,
                      const char *name,
                      int id,
                      int arrayid,
                      int varsize, 
                      int vtype, 
                      int vector_size,
                      int vector_entry,
                      pGA *vector_base);

pComm *PUGH_SetupGArrayComm(pGH *pughGH,
                            int dim,
                            int var,
                            int sync_timelevel,
                            int vartype,
                            pGExtras *extras);

int PUGH_EnableGArrayDataStorage(pGA *GA,
                                 int this_proc,
                                 const char *initialize_memory,
                                 int padding_active,
                                 int padding_cacheline_bits,
                                 int padding_size,
                                 int padding_address_spacing);

int PUGH_EnableGArrayComm(pGA *GA,
                          int commflag);

int PUGH_DisableGArrayDataStorage(pGA *GA);

int PUGH_DisableGArrayComm(pGA *GA);

int PUGH_DisableGArrayGroupComm(pGH *pughGH,
                                int first_var,
                                pComm *groupcomm);

int PUGH_SyncGArray(pGA *GA);

int PUGH_NumTimeLevels(const pGH *pughGH, int var);

#ifdef CCTK_MPI
void PostSendGA     (pGH *pughGH, int dir, pComm *comm);
void PostReceiveGA  (pGH *pughGH, int dir, pComm *comm);
void FinishReceiveGA(pGH *pughGH, int dir, pComm *comm);
#endif

#ifdef __cplusplus
}
#endif

#endif /* defined _PUGHI_H_ */