c1b0cac8bf012526393e523891c0944fd559c11a
[charm.git] / examples / charm++ / allToAll / allToAll.ci
1 mainmodule allToAll {
2
3         readonly CProxy_Main mainProxy;
4     readonly int max_iter;
5     readonly int numChares;
6     readonly int msgSize;
7
8         message allToAllMsg {
9                 char data[];
10         };
11
12         mainchare Main {
13                 entry Main(CkArgMsg *m);
14                 entry [reductiontarget] void allToAllReady();
15                 entry [reductiontarget] void nextallToAll();
16         };
17
18         array [1D] allToAll {
19                 entry allToAll();
20         entry void sendAllToAll();
21                 entry void getAllToAll(allToAllMsg *m);
22         
23         entry void doAllToAll() {
24            
25             atomic {
26                 sendAllToAll();
27             }
28
29             for(count = 0; count < numChares; ++count){
30                 when getAllToAll[iter](allToAllMsg *m) atomic {
31                     processAllToAll(m);
32                 }
33             }
34             atomic {
35                             iter++;
36                                 finish();
37             }
38                 };
39         };
40 };