msgQ test: Adjust test parameters (num priorities, numiters)
[charm.git] / tests / charm++ / penciltest / testpencil.C
1
2 #include "charm++.h"
3 #include "pencilfft/pencil_api.h"
4 #include "testpencil.decl.h"
5
6 #define START_TIMING   10
7 #define MAX_ITERATIONS 100
8
9 LineFFTInfo   info;
10 int           iteration;
11 double        startTime;
12
13 void red_handler (void *param, int size, void *data) {
14
15   iteration ++;
16
17   if (iteration == START_TIMING)
18     startTime = CmiWallTimer ();
19   
20   if (iteration == MAX_ITERATIONS) {
21
22     double endTime = CmiWallTimer();
23
24     CkAssert (MAX_ITERATIONS > START_TIMING);
25     CkPrintf ("Time to perform a pair of (%d, %d, %d) 3D FFT operations %g ms\n", 
26               info.sizeX, info.sizeY, info.sizeZ,
27               (endTime - startTime) * 1000.0/ (MAX_ITERATIONS - START_TIMING));
28     CkExit ();
29   }
30
31   startLineFFTArray (&info);
32 }
33
34 class main : public CBase_main {
35 public:
36   main (CkArgMsg *m);
37   main (CkMigrateMessage *m) {}
38 };
39
40 main::main (CkArgMsg *m) {
41   int sizeX=0, sizeY=0, sizeZ=0;
42   int grainX=0, grainY=0, grainZ=0;
43
44   if (m->argc <= 1) {
45     sizeX = sizeY = sizeZ = 16;
46     grainX = grainY = grainZ = 4;
47   }
48   else if (m->argc == 7) {
49     sizeX = atoi (m->argv[1]);
50     sizeY = atoi (m->argv[2]);
51     sizeZ = atoi (m->argv[3]);
52
53     grainX = atoi (m->argv[4]);
54     grainY = atoi (m->argv[5]);
55     grainZ = atoi (m->argv[6]);
56
57     CkAssert ((sizeX % grainX) == 0);
58     CkAssert ((sizeY % grainY) == 0);
59     CkAssert ((sizeZ % grainZ) == 0);
60   }
61   else {
62     sizeX = sizeY = sizeZ = atoi (m->argv[1]);
63     grainX = grainY = grainZ = atoi (m->argv[2]);    
64     CkAssert ((sizeX % grainX) == 0);
65   }
66
67   CkPrintf ("Calling Configure\n");
68   configureLineFFTInfo (&info, sizeX, sizeY, sizeZ, 
69                         grainX, grainY, grainZ,
70                         NULL, ARRAY_REDUCTION, true);
71
72   CkPrintf ("Calling Create\n");
73   createLineFFTArray (&info);
74
75   info.xProxy.setReductionClient (red_handler, NULL);
76
77   CkPrintf ("Calling Start\n");
78   startLineFFTArray (&info);
79
80   delete m;
81 };
82
83
84 #include "testpencil.def.h"