00001
00008
00009
00010
00011
00012
00013
00014 #ifndef _SYNC_H
00015 #define _SYNC_H
00016
00017 #include "charm++.h"
00018
00019 #include "ProcessorPrivate.h"
00020 #include "Sync.decl.h"
00021 #include "ResizeArrayPrimIter.h"
00022
00023 extern int useSync, useProxySync;
00024
00025 typedef ResizeArrayPrimIter<ComputeID> ComputeIDListIter;
00026
00027 class Sync : public BOCclass
00028 {
00029 private:
00030 struct _clist {
00031 int pid;
00032 int step;
00033 ComputeIDListIter cid;
00034 int doneMigration;
00035 } *clist;
00036 const int INCREASE;
00037 int capacity;
00038
00039 int step;
00040 int counter;
00041 int cnum;
00042 int nPatcheReady;
00043 int numPatches;
00044
00045 char homeReady;
00046
00047 void releaseComputes();
00048 void triggerCompute();
00049 public:
00050 Sync(void);
00051 ~Sync(void);
00052 inline static Sync *Object() { return CkpvAccess(Sync_instance); }
00053 void openSync();
00054 int holdComputes(PatchID pid, ComputeIDListIter cid, int doneMigration);
00055 void PatchReady(void);
00056 };
00057
00058 #endif