simple jacobi2d in structured dagger based on cutting the z dimension
[charm.git] / examples / charm++ / jacobi2d-sdag / jacobi2d.ci
1 mainmodule jacobi2d {
2
3   readonly CProxy_Main mainProxy;
4   readonly int arrayDimX;
5   readonly int arrayDimY;
6   readonly int blockDimX;
7   readonly int blockDimY;
8
9   readonly int num_chare_x;
10   readonly int num_chare_y;
11
12   readonly int globalBarrier;
13
14   mainchare Main {
15     entry Main(CkArgMsg *m);
16     entry void report();
17   };
18
19   array [2D] Jacobi {
20     entry Jacobi(void);
21     entry void begin_iteration(void);
22     entry void receiveGhosts(int iter, int dir, int size,
23                              double ghosts[size]);
24
25     entry void doStep() {
26       atomic "begin_iteration" {
27         begin_iteration();
28       }
29       for(imsg = 0; imsg < 4; imsg++) {
30         // "iterations" keeps track of messages across steps
31         when
32           receiveGhosts[iterations] (int iter, int dir, int size,
33                                      double ghosts[size])
34           atomic "process ghosts" {
35             processGhosts(dir, size, ghosts);
36           }
37       }
38       atomic "doWork" {
39         check_and_compute();
40       }
41     };
42   };
43 };