00001
00007
00008
00009
00010
00011
00012
00013 #ifndef COMPUTE_H
00014 #define COMPUTE_H
00015
00016 #include "main.h"
00017 #include "charm++.h"
00018
00019 #include "NamdTypes.h"
00020
00021 class Node;
00022 class PatchMap;
00023 class LocalWorkMsg;
00024
00025
00026
00027
00028 class Compute {
00029 private:
00030 int patchReadyCounter;
00031 int numPatches;
00032 int doAtomUpdate;
00033 int computeType;
00034 int sequenceNumber;
00035
00036 protected:
00037 int basePriority;
00038 void enqueueWork();
00039
00040 public:
00041 const ComputeID cid;
00042
00043 LocalWorkMsg *const localWorkMsg;
00044 Compute(ComputeID);
00045 int type() { return computeType; };
00046
00047 virtual ~Compute();
00048
00049 void setNumPatches(int n) { patchReadyCounter = numPatches = n; }
00050 int getNumPatches() { return (numPatches); };
00051
00052
00053 virtual void initialize() {};
00054
00055
00056 virtual void atomUpdate() {};
00057 virtual void patchReady(PatchID, int doneMigration, int seq);
00058 virtual int noWork();
00059 virtual void doWork();
00060 int sequence(void) { return sequenceNumber; }
00061 int priority(void) { return basePriority; }
00062 };
00063
00064
00065
00066
00067
00068 #define TRACE_COMPOBJ_IDOFFSET 10000
00069
00070 #endif
00071