bcbb82e8f8e8d3c2724c82a1e5ae0ff682b4242a
[charm.git] / tests / charm++ / jacobi3d-gausssiedel / jacobi3d.ci
1 mainmodule jacobi3d {
2
3   readonly CProxy_Main mainProxy;
4   readonly CProxy_FuncCkLoop ckLoopProxy;
5   readonly int arrayDimX;
6   readonly int arrayDimY;
7   readonly int arrayDimZ;
8   readonly int blockDimX;
9   readonly int blockDimY;
10   readonly int blockDimZ;
11   readonly int GAUSS_ITER;
12   readonly int threadNums;
13   readonly double THRESHOLD;
14
15   readonly int num_chare_x;
16   readonly int num_chare_y;
17   readonly int num_chare_z;
18
19   readonly int globalBarrier;
20
21   message ghostMsg {
22     double gh[];
23   };
24
25   mainchare Main {
26     entry Main(CkArgMsg *m);
27     entry void start();
28     entry void report();
29     entry [reductiontarget] void converge(double m);
30   };
31
32   array [3D] Jacobi {
33     // Normal Charm++ entry methods
34     entry Jacobi(void);
35     entry void begin_iteration(void);
36     entry void receiveGhosts(ghostMsg *gmsg);
37     entry void processGhosts(ghostMsg *gmsg);
38     entry void print();
39     entry void doStep() {
40       serial "begin_iteration" {
41         begin_iteration();
42       }
43       for(imsg = 0; imsg < neighbors; imsg++) {
44         // "iterations" keeps track of messages across steps
45         when receiveGhosts[iterations] (ghostMsg *gmsg)
46           serial "process ghosts" { processGhosts(gmsg); }
47       }
48       serial "doWork" {
49         check_and_compute();
50       }
51     };
52   };
53
54   group JacobiMap : CkArrayMap {
55     entry JacobiMap(int x, int y, int z);
56   };
57
58   group JacobiNodeMap : CkArrayMap {
59     entry JacobiNodeMap();
60   };
61   nodegroup OmpInitializer {
62     entry OmpInitializer(int numThreads); 
63   };
64
65   group TraceControl {
66       entry TraceControl();
67       entry void startTrace();
68       entry void endTrace();
69   };
70 };