Merge branch 'charm' of charmgit:charm into charm
[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     readonly int msgCount;
8
9         message allToAllMsg {
10                 char data[];
11         };
12
13         mainchare Main {
14                 entry Main(CkArgMsg *m);
15                 entry [reductiontarget] void allToAllReady();
16                 entry [reductiontarget] void nextallToAll();
17         };
18
19         array [1D] allToAll {
20                 entry allToAll();
21         entry void sendAllToAll();
22                 entry void getAllToAll(allToAllMsg *m);
23         
24         entry void doAllToAll() {
25            
26             atomic {
27                 sendAllToAll();
28             }
29
30             for(count = 0; count < msgCount*numChares; ++count){
31                 when getAllToAll[iter](allToAllMsg *m) atomic {
32                     processAllToAll(m);
33                 }
34             }
35             atomic {
36                             iter++;
37                                 finish();
38             }
39                 };
40         };
41 };