d38e7356a16a0e6d655e3f2a63d79e9bff588bab
[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
12   readonly int num_chare_x;
13   readonly int num_chare_y;
14   readonly int num_chare_z;
15
16   readonly int globalBarrier;
17
18   message ghostMsg {
19     double gh[];
20   };
21
22   mainchare Main {
23     entry Main(CkArgMsg *m);
24     entry void start();
25     entry void report();
26     entry [reductiontarget] void converge(double m);
27   };
28
29   array [3D] Jacobi {
30     // Normal Charm++ entry methods
31     entry Jacobi(void);
32     entry void begin_iteration(void);
33     entry void receiveGhosts(ghostMsg *gmsg);
34     entry void processGhosts(ghostMsg *gmsg);
35     entry void print();
36     entry void doStep() {
37       serial "begin_iteration" {
38         begin_iteration();
39       }
40       for(imsg = 0; imsg < neighbors; imsg++) {
41         // "iterations" keeps track of messages across steps
42         when receiveGhosts[iterations] (ghostMsg *gmsg)
43           serial "process ghosts" { processGhosts(gmsg); }
44       }
45       serial "doWork" {
46         check_and_compute();
47       }
48     };
49   };
50
51   group JacobiMap : CkArrayMap {
52     entry JacobiMap(int x, int y, int z);
53   };
54
55   group JacobiNodeMap : CkArrayMap {
56     entry JacobiNodeMap();
57   };
58   nodegroup OmpInitializer {
59     entry OmpInitializer(int numThreads); 
60   };
61
62   group TraceControl {
63       entry TraceControl();
64       entry void startTrace();
65       entry void endTrace();
66   };
67 };