examples: modernize fib example and clean it up
authorAaron Becker <akbecker@gmail.com>
Wed, 25 Jul 2012 17:26:23 +0000 (12:26 -0500)
committerAaron Becker <akbecker@gmail.com>
Wed, 25 Jul 2012 17:26:23 +0000 (12:26 -0500)
examples/charm++/fib/Makefile [new file with mode: 0644]
examples/charm++/fib/fib.cc [new file with mode: 0644]
examples/charm++/fib/fib.ci [new file with mode: 0644]
examples/charm++/fib/fib.h [new file with mode: 0644]
examples/charm++/fib/pgm.C [deleted file]
examples/charm++/fib/pgm.ci [deleted file]
examples/charm++/fib/pgm.h [deleted file]

diff --git a/examples/charm++/fib/Makefile b/examples/charm++/fib/Makefile
new file mode 100644 (file)
index 0000000..c137b27
--- /dev/null
@@ -0,0 +1,27 @@
+CHARMC = ../../../bin/charmc
+BINARY = fib
+
+CHARMCFLAGS = $(OPTS)
+CHARMCLINKFLAGS = -language charm++
+TESTFLAGS = $(TESTOPTS)
+
+%.o: %.cc
+
+all: $(BINARY)
+$(BINARY): $(patsubst %.cc,%.o,$(wildcard *.cc))
+       $(CHARMC) $(CHARMCLINKFLAGS) -o $@ $+ 
+
+.SECONDARY: $(patsubst %.cc,%.decl.h,$(wildcard *.cc))
+.SECONDARY: $(patsubst %.cc,%.def.h,$(wildcard *.cc))
+
+%.o: %.cc %.decl.h %.def.h
+       $(CHARMC) $(CHARMCFLAGS) $<
+
+%.decl.h %.def.h: %.ci
+       $(CHARMC) $(CHARMCFLAGS) $<
+
+test: $(BINARY)
+       ./charmrun ./$(BINARY) $(TESTFLAGS)
+
+clean:
+       rm -f *.o *.decl.h *.def.h charmrun $(BINARY)
diff --git a/examples/charm++/fib/fib.cc b/examples/charm++/fib/fib.cc
new file mode 100644 (file)
index 0000000..a483151
--- /dev/null
@@ -0,0 +1,50 @@
+#include "fib.h"
+#define THRESHOLD 10
+
+main::main(CkArgMsg * m)
+{ 
+    if(m->argc < 2) CmiAbort("./pgm N.");
+    int n = atoi(m->argv[1]); 
+    CProxy_fib::ckNew(1, n, thishandle); 
+}
+
+int seqFib(int n) {
+    if (n<2) return n;
+    else return (seqFib(n-1) + seqFib(n-2));
+}
+
+fib::fib(int AmIRoot, int n, CProxy_fib parent){ 
+    CkPrintf("in fib::fib. n=%d\n", n);
+    IamRoot = AmIRoot;
+    this->parent = parent;
+    if (n< THRESHOLD) {
+        result =seqFib(n);
+        processResult();
+    } else {
+        CProxy_fib::ckNew(0,n-1, thishandle); 
+        CProxy_fib::ckNew(0,n-2, thishandle); 
+        result = 0;
+        count = 2;
+    }
+}
+
+void fib::response(int fibValue) {
+    result += fibValue;
+    if (--count == 0)
+        processResult();
+}
+
+void fib::processResult()
+{
+    CkPrintf("result:%d\n", result);
+    if (IamRoot) {
+        CkPrintf("The requested Fibonacci number is : %d\n", result);
+        CkExit();
+    } else {
+        parent.response(result);
+    }
+    delete this; /*this chare has no more work to do.*/ 
+}
+
+#include "fib.def.h"
+
diff --git a/examples/charm++/fib/fib.ci b/examples/charm++/fib/fib.ci
new file mode 100644 (file)
index 0000000..2b30014
--- /dev/null
@@ -0,0 +1,10 @@
+mainmodule fib {
+    mainchare main {
+        entry main(CkArgMsg* m);
+    };
+
+    chare fib {
+        entry fib(int amIroot, int n, CProxy_fib parent);
+        entry void response(int value);
+    };
+};
diff --git a/examples/charm++/fib/fib.h b/examples/charm++/fib/fib.h
new file mode 100644 (file)
index 0000000..d867e83
--- /dev/null
@@ -0,0 +1,21 @@
+#include "fib.decl.h"
+
+class main : public CBase_main
+{
+    public:
+        main(CkMigrateMessage *m) {}
+        main(CkArgMsg *m);
+};
+
+class fib : public CBase_fib
+{
+    private:
+        int result, count, IamRoot;
+        CProxy_fib parent;
+    public:
+        fib(CkMigrateMessage *m) {}
+        fib(int amIRoot, int n, CProxy_fib parent);
+        void response(int fibValue);
+        void processResult();
+};
+
diff --git a/examples/charm++/fib/pgm.C b/examples/charm++/fib/pgm.C
deleted file mode 100644 (file)
index 37e49f9..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-#include "pgm.h"
-#define THRESHOLD 10
-
-main::main(CkArgMsg * m)
-{ 
-  if(m->argc < 2) CmiAbort("./pgm N.");
-  int n = atoi(m->argv[1]); 
-  CProxy_fib::ckNew(1, n, thishandle); 
-}
-
-int seqFib(int n) {
-  if (n<2) return n;
-  else return (seqFib(n-1) + seqFib(n-2));
-}
-
-fib::fib(int AmIRoot, int n, CProxy_fib parent){ 
-  CkPrintf("in fib::fib. n=%d\n", n);
-  IamRoot = AmIRoot;
-  this->parent = parent;
-  if (n< THRESHOLD) {
-    result =seqFib(n);
-    processResult();}
-  else {
-    CProxy_fib::ckNew(0,n-1, thishandle); 
-    CProxy_fib::ckNew(0,n-2, thishandle); 
-    result = 0;
-    count = 2;  }
-}
-
-void fib::response(int fibValue) {
-  result += fibValue;
-  if (--count == 0)
-    processResult();
-}
-
-void fib::processResult()
-{
-  CkPrintf("result:%d\n", result);
-  if (IamRoot) {
-    CkPrintf("The requested Fibonacci number is : %d\n", result);
-    CkExit();
-  }
-  else parent.response(result);
-  delete this; /*this chare has no more work to do.*/ 
-}
-
-#include "pgm.def.h"
diff --git a/examples/charm++/fib/pgm.ci b/examples/charm++/fib/pgm.ci
deleted file mode 100644 (file)
index a34a868..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-mainmodule pgm {
-
-mainchare main
-{
-  entry main();
-};
-
-chare fib
-{
-  entry fib(int amIroot, int n, CProxy_fib parent);
-  entry void response(int value);
-};
-
-};
diff --git a/examples/charm++/fib/pgm.h b/examples/charm++/fib/pgm.h
deleted file mode 100644 (file)
index 3db4313..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-#include "pgm.decl.h"
-
-class main : public Chare
-{
-public:
-  main(CkMigrateMessage *m) {}
-  main(CkArgMsg *m);
-};
-
-class fib : public Chare 
-{
-private:
-  int result, count, IamRoot;
-  CProxy_fib parent;
-public:
-  fib(CkMigrateMessage *m) {}
-  fib(int amIRoot, int n, CProxy_fib parent);
-  void response(int fibValue);
-  void processResult();
-};
-