d42422ef406bd360b8fd3d0bd423a9c113151d83
[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   readonly int globalBarrier;
16
17   mainchare Main {
18     entry Main(CkArgMsg *m);
19     entry void report();
20   };
21
22   array [3D] Jacobi {
23     entry Jacobi(void);
24     entry void begin_iteration(void);
25     entry void receiveGhosts(int iter, int dir, int height, int width,
26                              double ghosts[height*width]);
27
28     entry void doStep() {
29       atomic "begin_iteration" {
30         begin_iteration();
31       }
32       for(imsg = 0; imsg < 6; imsg++) {
33         // "iterations" keeps track of messages across steps
34         when
35           receiveGhosts[iterations] (int iter, int dir, int height, 
36                                      int width, double ghosts[height*width])
37           atomic "process ghosts" {
38             processGhosts(dir, height, width, ghosts);
39           }
40       }
41       atomic "doWork" {
42         check_and_compute();
43       }
44     };
45   };
46
47   group JacobiMap : CkArrayMap {
48     entry JacobiMap(int x, int y, int z);
49   };
50
51 };