jacobi3d in sdag
[charm.git] / examples / bigsim / sdag / jacobi3d / 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   readonly int torusDimX;
11   readonly int torusDimY;
12   readonly int torusDimZ;
13
14   readonly int num_chare_x;
15   readonly int num_chare_y;
16   readonly int num_chare_z;
17
18   readonly int globalBarrier;
19   readonly int localBarrier;
20
21   message ghostMsg {
22     double gh[];
23   };
24
25   mainchare Main {
26     entry Main(CkArgMsg *m);
27     entry void report();
28   };
29
30   array [3D] Jacobi {
31     // Normal Charm++ entry methods
32     entry Jacobi(void);
33     entry void begin_iteration(void);
34     entry void receiveGhosts(ghostMsg *gmsg);
35     entry void processGhosts(ghostMsg *gmsg);
36
37     entry void doStep() {
38       atomic "begin_iteration" {
39         begin_iteration();
40       }
41       for(imsg = 0; imsg < 6; imsg++) {
42         when receiveGhosts(ghostMsg *gmsg)
43           atomic "process ghosts" { processGhosts(gmsg); }
44       }
45       atomic "doWork" {
46         check_and_compute();
47       }
48     };
49   };
50
51   group JacobiMap : CkArrayMap {
52     entry JacobiMap(int x, int y, int z, int tx, int ty, int tz);
53   };
54
55 };