OpenAtom  Version1.5a
mapvariables.h
Go to the documentation of this file.
1 #ifndef _MAPVARIABLES_H
2 #define _MAPVARIABLES_H
3 
4 /** \file mapvariables.h
5  \brief collection point for global scope map, proxy, and Uber read-only
6  variables
7 */
8 
9 //////////////////////////////////////////////////////////////////////////////
10 /**
11  * @defgroup proxy_vars proxy_vars
12  * Defining all the Charm++ readonly variables, which include proxies
13  *
14  * to access the arrays and groups and the Communication Library
15  * handles.
16  */
17 //////////////////////////////////////////////////////////////////////////////
18 /**@{*/
19 bool firstInstance = true;
20 int numInst=0;
21 /// INT_MAPs are the ones actually used so
22 /// these are being changed to CkVec's for beads
23 CkVec <int> PIBImaptable;
24 CkVec <MapType1> AtomImaptable;
25 CkVec <MapType2> GSImaptable;
26 CkVec <MapType2> RSImaptable;
27 CkVec <MapType2> RPPImaptable;
28 CkVec <MapType2> RhoGSImaptable;
29 CkVec <MapType2> RhoRSImaptable;
30 CkVec <MapType2> RhoGHartImaptable;
31 CkVec <MapType3> RhoRHartImaptable;
32 ///CkVec <MapType1> LSPRhoGSImaptable;
33 CkVec <MapType2> LSPRhoRSImaptable;
34 
35 #ifndef USE_INT_MAP
36 CkHashtableT<intdual, int> GSmaptable(10000,0.25);
37 CkHashtableT<intdual, int> RSmaptable(10000,0.25);
38 CkHashtableT<intdual, int> RPPmaptable(10000,0.25);
39 CkHashtableT<intdual, int> AsymScalcmaptable(10000,0.25);
40 CkHashtableT<intdual, int> SymScalcmaptable(10000,0.25);
41 #else
42 CkHashtableT<intdual, int> GSmaptable;
43 CkHashtableT<intdual, int> RSmaptable;
44 CkHashtableT<intdual, int> RPPmaptable;
45 CkHashtableT<intdual, int> AsymScalcmaptable;
46 CkHashtableT<intdual, int> SymScalcmaptable;
47 #endif
48 CkHashtableT<intdual, int> RhoGSmaptable;
49 CkHashtableT<intdual, int> RhoRSmaptable;
50 CkHashtableT<intdual, int> RhoGHartmaptable;
51 CkHashtableT<inttriple, int> RhoRHartmaptable;
52 CkHashtableT<intdual, int> Orthomaptable;
53 CkHashtableT<intdual, int> OrthoHelpermaptable;
54 
55 
56 CProxy_main mainProxy;
57 CProxy_PhysScratchCache pScratchProxy;
59 CProxy_TimeKeeper TimeKeeperProxy;
60 CProxy_InstanceController instControllerProxy;
61 CProxy_TemperController temperControllerProxy;
62 CProxy_ENL_EKE_Collector ENLEKECollectorProxy;
63 CPcharmParaInfo simReadOnly;
64 /**@}*/
65 
66 
67 //////////////////////////////////////////////////////////////////////////////
68 /** @defgroup Uber Uber
69  * \brief Ubers provide a multidimensional collection of CkArray proxies such that a complete instance of all objects necessary for a simulation are accessible at each unique tuple of indices.
70  *
71  * Uber proxies for all the things which change per step
72  *
73  * Indexed by PathIntegral Bead. Each Bead has its own set of
74  * proxies. Charm driver startup will construct a different set of
75  * arrays for each bead.
76  *
77  * There is a small flexibility vs performance tradeoff. If we
78  * assume beads are never co-mapped, then the old readonly can be
79  * overwritten locally on each processor
80  * (e.g. gSpacePlaneProxy=UgSpacePlaneProxy[mybead];)
81  * Otherwise we force a slight indirection penalty to lookup
82  * U*Proxy[mybead] for every send. In practice this is probably
83  * noise compared to the real expense of sending a message, but it
84  * does seem a little silly for the default case where there is only
85  * one bead.
86  */
87 
88 
89 /** \addtogroup Uber */
90 /**@{*/
91 CkVec <CProxy_PIBeadAtoms> UPIBeadAtomsProxy;
92 CkVec <CProxy_CP_State_GSpacePlane> UgSpacePlaneProxy;
93 CkVec <CProxy_GSpaceDriver> UgSpaceDriverProxy;
94 CkVec <CProxy_CP_State_ParticlePlane> UparticlePlaneProxy;
95 CkVec <CProxy_CP_State_RealParticlePlane> UrealParticlePlaneProxy;
96 CkVec <CProxy_CP_State_RealSpacePlane> UrealSpacePlaneProxy;
97 CkVec <CProxy_CP_Rho_RealSpacePlane> UrhoRealProxy;
98 CkVec <CProxy_CP_Rho_GSpacePlane> UrhoGProxy;
99 CkVec <CProxy_CP_Rho_RHartExt> UrhoRHartExtProxy;
100 CkVec <CProxy_CP_Rho_GHartExt> UrhoGHartExtProxy;
101 CkVec <CProxy_AtomsCompute> UatomsComputeProxy;
102 CkVec <CProxy_AtomsCache> UatomsCacheProxy;
103 CkVec <CProxy_EnergyGroup> UegroupProxy;
104 CkVec <CProxy_FFTcache> UfftCacheProxy;
105 CkVec <CProxy_StructFactCache> UsfCacheProxy;
106 CkVec <CProxy_StructureFactor> UsfCompProxy;
107 CkVec <CProxy_eesCache> UeesCacheProxy;
108 CkVec <CProxy_CP_LargeSP_RhoGSpacePlane> UlsRhoGProxy;
109 CkVec <CProxy_CP_LargeSP_RhoRealSpacePlane> UlsRhoRealProxy;
110 
111 CkVec <UberCollection> UberAlles;
112 CkVec < PeList * > UavailProcs;
113 
114 /**@}*/
115 
116 
117 CkVec < CkVec <int> > UpeUsedBySF;
118 CkVec < CkVec <int> > UpeUsedByNLZ;
119 CkVec < CkVec <int> > UplaneUsedByNLZ;
120 
121 PeList *availGlobG=NULL;
122 PeList *availGlobR=NULL;
123 PeList *excludePes=NULL;
124 int boxSize;
125 TopoManager *topoMgr=NULL;
126 inttriple *mapOffsets=NULL;
127 
128 
129 #endif
Definition: PeList.h:33
Config config
addtogroup Uber
Definition: mapvariables.h:58
CProxy_InstanceController instControllerProxy
Definition: mapvariables.h:60
CkVec< MapType2 > LSPRhoRSImaptable
CkVec <MapType1> LSPRhoGSImaptable;.
Definition: mapvariables.h:33
CkVec< int > PIBImaptable
INT_MAPs are the ones actually used so these are being changed to CkVec's for beads.
Definition: mapvariables.h:23