Polished/Updated the library and changed the example codes accordingly.
[charm.git] / example / simpleLoopBench / hello.h
1 #ifndef _HELLO_H
2 #define _HELLO_H
3
4 #include "charm++.h"
5 #include "NodeHelperAPI.h"
6 #include "hello.decl.h"
7 #include <assert.h>
8
9 class Main : public Chare {
10 private:
11         int numElemFinished; //record the number of test instances finished in a timestep
12         double timestamp;
13         int mainStep; //the global counter of timesteps
14         double *mainTimes; //record each timestep from test initiation to test finish (i.e. from the point of main)
15
16 public:
17     Main(CkArgMsg* m) ;
18     void done(void);
19         void exitTest();
20     void doTests(CkQdMsg *msg);
21     void processCommandLine(int argc,char ** argv);
22
23 };
24
25 class TestInstance : public CBase_TestInstance {
26         int hasTest; //used for reporting statistics
27         
28     double *allTimes; //record time taken for each timestep
29         int *allResults; //record the result of each timestep
30         
31 public:
32     TestInstance();
33     ~TestInstance() {
34                 delete [] allTimes;
35                 delete [] allResults;
36         }
37     TestInstance(CkMigrateMessage *m) {}
38     void doTest(int curstep);
39         void reportSts();
40 };
41
42 class cyclicMap : public CkArrayMap {
43 public:
44     int procNum(int, const CkArrayIndex &idx) {
45         int index = *(int *)idx.data();
46         int nid = (index/CkMyNodeSize())%CkNumNodes();
47         int rid = index%CkMyNodeSize();
48         return CkNodeFirst(nid)+rid;
49     }
50 };
51
52 #endif