Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members

ComputeMgr.h

Go to the documentation of this file.
00001 
00007 #ifndef COMPUTEMGR_H
00008 #define COMPUTEMGR_H
00009 
00010 #include "charm++.h"
00011 #include "main.h"
00012 #include <new>
00013 
00014 #include "NamdTypes.h"
00015 #include "BOCgroup.h"
00016 
00017 #include "ResizeArray.h"
00018 
00019 #include "GlobalMaster.h"
00020 #include "GlobalMasterServer.h"
00021 #include "ComputeMgr.decl.h"
00022 
00023 class Compute;
00024 class ComputeMap;
00025 class CkQdMsg;
00026 
00027 class ComputeGlobal;
00028 class ComputeGlobalConfigMsg;
00029 class ComputeGlobalDataMsg;
00030 class ComputeGlobalResultsMsg;
00031 
00032 class ComputeDPME;
00033 class ComputeDPMEDataMsg;
00034 class ComputeDPMEResultsMsg;
00035 class ComputeConsForceMsg;
00036 
00037 class ComputeEwald;
00038 class ComputeEwaldMsg;
00039 
00040 class ComputeNonbondedCUDA;
00041 class NonbondedCUDASlaveMsg;
00042 
00043 class ComputeNonbondedWorkArrays;
00044 
00045 class ComputeMgr : public BOCclass
00046 {
00047 public:
00048 
00049   ComputeMgr();
00050   ~ComputeMgr();
00051   void createComputes(ComputeMap *map);
00052   void updateComputes(int,CkGroupID);
00053   void updateComputes2(CkQdMsg *);
00054   void updateComputes3();
00055   void splitComputes();
00056   void splitComputes2(CkQdMsg *);
00057   void updateLocalComputes();
00058   void updateLocalComputes2(CkQdMsg *);
00059   void updateLocalComputes3();
00060   void updateLocalComputes4(CkQdMsg *);
00061   void updateLocalComputes5();
00062   void doneUpdateLocalComputes();
00063 
00064   void sendComputeGlobalConfig(ComputeGlobalConfigMsg *);
00065   void recvComputeGlobalConfig(ComputeGlobalConfigMsg *);
00066   void sendComputeGlobalData(ComputeGlobalDataMsg *);
00067   void recvComputeGlobalData(ComputeGlobalDataMsg *);
00068   void sendComputeGlobalResults(ComputeGlobalResultsMsg *);
00069   void recvComputeGlobalResults(ComputeGlobalResultsMsg *);
00070 
00071   void sendComputeDPMEData(ComputeDPMEDataMsg *);
00072   void recvComputeDPMEData(ComputeDPMEDataMsg *);
00073   void sendComputeDPMEResults(ComputeDPMEResultsMsg *, int);
00074   void recvComputeDPMEResults(ComputeDPMEResultsMsg *);
00075 
00076   void sendComputeEwaldData(ComputeEwaldMsg *);
00077   void recvComputeEwaldData(ComputeEwaldMsg *);
00078   void sendComputeEwaldResults(ComputeEwaldMsg *);
00079   void recvComputeEwaldResults(ComputeEwaldMsg *);
00080 
00081   void recvComputeConsForceMsg(ComputeConsForceMsg *);
00082 
00083   // Made public in order to access the ComputeGlobal on the node
00084   ComputeGlobal *computeGlobalObject; /* node part of global computes */
00085 
00086   void sendYieldDevice(int pe);
00087   void recvYieldDevice(int pe);
00088   void sendBuildCudaForceTable();
00089   void recvBuildCudaForceTable();
00090   void sendCreateNonbondedCUDASlave(int,int);
00091   void recvCreateNonbondedCUDASlave(NonbondedCUDASlaveMsg *);
00092   void sendNonbondedCUDASlaveReady(int,int,int,int);
00093   void recvNonbondedCUDASlaveReady(int,int,int);
00094   void sendNonbondedCUDASlaveEnqueue(ComputeNonbondedCUDA *c, int,int,int,int);
00095   
00096 private:
00097   void createCompute(ComputeID, ComputeMap *);
00098 
00099   GlobalMasterServer *masterServerObject; /* master part of global computes */
00100   ComputeDPME *computeDPMEObject;
00101 
00102   ComputeEwald *computeEwaldObject;
00103 
00104   ComputeNonbondedCUDA *computeNonbondedCUDAObject;
00105 
00106   ComputeNonbondedWorkArrays *computeNonbondedWorkArrays;
00107 
00108   int skipSplitting;
00109   int updateComputesCount;
00110   int updateComputesReturnEP;
00111   CkGroupID updateComputesReturnChareID;
00112 
00113   ResizeArray<int> computeFlag;
00114 };
00115 
00116 #endif /* COMPUTEMGR_H */
00117 

Generated on Fri May 24 04:07:18 2013 for NAMD by  doxygen 1.3.9.1