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