examples/charm++/barnes-charm: renamed variable in prototype to avoid compiler confusion
[charm.git] / examples / charm++ / fib / fib.cc
1 #include "fib.h"
2 #define THRESHOLD 10
3
4 main::main(CkArgMsg * m)
5
6     if(m->argc < 2) CmiAbort("./pgm N.");
7     int n = atoi(m->argv[1]); 
8     CProxy_fib::ckNew(1, n, thishandle); 
9 }
10
11 int seqFib(int n) {
12     if (n<2) return n;
13     else return (seqFib(n-1) + seqFib(n-2));
14 }
15
16 fib::fib(int AmIRoot, int n, CProxy_fib parent){ 
17     CkPrintf("in fib::fib. n=%d\n", n);
18     IamRoot = AmIRoot;
19     this->parent = parent;
20     if (n< THRESHOLD) {
21         result =seqFib(n);
22         processResult();
23     } else {
24         CProxy_fib::ckNew(0,n-1, thishandle); 
25         CProxy_fib::ckNew(0,n-2, thishandle); 
26         result = 0;
27         count = 2;
28     }
29 }
30
31 void fib::response(int fibValue) {
32     result += fibValue;
33     if (--count == 0)
34         processResult();
35 }
36
37 void fib::processResult()
38 {
39     CkPrintf("result:%d\n", result);
40     if (IamRoot) {
41         CkPrintf("The requested Fibonacci number is : %d\n", result);
42         CkExit();
43     } else {
44         parent.response(result);
45     }
46     delete this; /*this chare has no more work to do.*/ 
47 }
48
49 #include "fib.def.h"
50