Merge branch 'charm' into emenese2/liveVizBoundArray emenese2/liveVizBoundArray
authorEsteban Meneses <emenese2@illinois.edu>
Mon, 23 Jul 2012 16:29:31 +0000 (11:29 -0500)
committerEsteban Meneses <emenese2@illinois.edu>
Mon, 23 Jul 2012 16:29:31 +0000 (11:29 -0500)
doc/libraries/liveviz.tex
doc/projections/manual.tex
src/xlat-i/xi-scan.l
tests/charm++/demand_creation/Makefile [new file with mode: 0644]
tests/charm++/demand_creation/hello.C [new file with mode: 0644]
tests/charm++/demand_creation/hello.ci [new file with mode: 0644]

index edec19142dc15d118ebf391a1417c0ed1e149903..28a85a32778dde047ba53853205132cbff9f5b08 100644 (file)
@@ -193,3 +193,10 @@ The differences in Poll Mode may be apparent. There is no callback function whic
 The server should call Deposit with the same global size and combiner type on all of the array elements which correspond to the ``this'' parameter.
 
 The latest version of liveVizPoll is not backwards compatable with older versions. The old version had some fundamental problems which would occur if a server generated an image before a client requested it. Thus the new version buffers server generated images until requested by a client. Furthermore the client requests are also buffered if they arrive before the server generates the images. Problems could also occur during migration with the old version.
+
+\section{Caveats}
+There is a known bug caused by how ``liveVizDeposit'' internally uses a reduction to build the image.
+
+Currently its contribute call is handled as if it were the chare calling ``liveVizDeposit'' that actually contributed to the liveViz reduction.
+If there is any other reduction going on elsewhere in this chare, some liveViz contribute calls might be issued before the corresponding non-liveViz contribute is reached.
+This would imply that image data would be treated as if were part of the non-liveViz reduction, leading to unexpected behavior potentially anywhere in the non-liveViz code.
index d35779b348f46842a822771975c6280eb3ee7cb5..582a43767143dae6cb8ccdd1c8fb5848bcbc426d 100644 (file)
@@ -471,10 +471,11 @@ contact the developers if you have input or suggestions.
 \label{sec::visualization}
 
 The \projections{} Java-based visualization tool (henceforth refered
-to as simply \projections{}) comes pre-built with the \charmpp{}
-source release. It can be located at \\ {\tt
-CHARM\_LOCATION/tools/projections} which will henceforth be refered to
-as {\tt PROJECTIONS\_LOCATION}.
+to as simply \projections{}) does not come pre-built with the \charmpp{}
+source release. An anynonymous git archive can be cloned from \\ {\tt
+git://charm.cs.uiuc.edu/projections.git}, this manual will assume the 
+existance of a local copy, the location of which will henceforth be 
+refered to as {\tt PROJECTIONS\_LOCATION}.
 
 \subsection{Building \projections{}}
 
index 7fa04436864b8b5bbdcfc66f1b33ea561f349592..1cecd3acd64d3bda2dcc111e4402cc74679dca2d 100644 (file)
@@ -15,6 +15,7 @@ TList<Entry *> *connectEntries = new TList<Entry *>();
 /* Local to file */
 unsigned char in_comment=0;
 int search(char *s);
+int count_newlines(char *s);
 
 /* We return Tokens only when not in a comment. */
 #define Return if (!in_comment) return
@@ -56,7 +57,7 @@ nonIntExpr [^();,:]*
 
 %%
 {nonBracket}   { if (in_bracket) {Yval;return Token(CPROGRAM);} else REJECT;}
-{nonBraces}    { if (in_braces) {Yval;return Token(CPROGRAM);} else REJECT;}
+{nonBraces}    { if (in_braces) {Yval; lineno += count_newlines(yytext); return Token(CPROGRAM);} else REJECT;}
 {nonIntExpr}   { if (in_int_expr) {Yval;return Token(CPROGRAM);} else REJECT;}
 "//".*         { /* ignore single line comments */ }
 "\r"           { /* ignore ^M characters for dos-unix compat */ }
@@ -159,4 +160,16 @@ int search(char *s)
   return IDENT;
 }
 
+// Oh my $DEITY...
+int count_newlines(char *s) {
+    int count = 0;
+
+    while (*s != '\0') {
+        if (*s == '\n') count++;
+        s++;
+    }
+
+    return count;
+}
+
 int yywrap() { return 1; }
diff --git a/tests/charm++/demand_creation/Makefile b/tests/charm++/demand_creation/Makefile
new file mode 100644 (file)
index 0000000..774fcfa
--- /dev/null
@@ -0,0 +1,23 @@
+CHARMC=../../../bin/charmc $(OPTS)
+
+OBJS = hello.o
+
+all: hello
+
+hello: $(OBJS)
+       $(CHARMC) -language charm++ -o hello $(OBJS)
+
+hello.decl.h: hello.ci
+       $(CHARMC) hello.ci
+
+clean:
+       rm -f *.decl.h *.def.h conv-host *.o hello charmrun *.log *.sum *.sts
+
+hello.o: hello.C hello.decl.h
+       $(CHARMC) -c -O2 hello.C
+
+test: all
+       ./charmrun ./hello +p4 10 $(TESTOPTS)
+
+bgtest: all
+       ./charmrun ./hello +p4 10 +x2 +y2 +z2 +cth1 +wth1 +bglog $(TESTOPTS)
diff --git a/tests/charm++/demand_creation/hello.C b/tests/charm++/demand_creation/hello.C
new file mode 100644 (file)
index 0000000..65e54bc
--- /dev/null
@@ -0,0 +1,69 @@
+/** \file hello.C
+ *  Author: Ehsan Totoni 
+ *  Date Created: July 20, 2012
+ */
+
+#include "hello.decl.h"
+#include <stdio.h>
+
+/*readonly*/ CProxy_Main mainProxy;
+
+/** \class Main
+ *
+ */
+class Main : public CBase_Main
+{
+public:
+  CProxy_Hello arr;
+  int counter;
+
+  Main(CkArgMsg* m)
+  {
+    //Start the computation
+    CkPrintf("Running Hello on %d processors \n",
+            CkNumPes());
+    mainProxy = thisProxy;
+
+    arr = CProxy_Hello::ckNew();
+    arr.doneInserting();
+    counter = 0;
+    CkPrintf("Array created\n");
+
+    arr(0, 0, 0).SayHi(0);
+    arr(0, 4, 8).SayHi(1);
+    arr(20, 3, 7).SayHi(2);
+    arr(8, 0, 4).SayHi(3);
+  };
+
+  void done(void)
+  {
+    counter++;
+    if(counter == 4) {
+      CkPrintf("All done\n");
+      CkExit();
+    }
+  };
+};
+
+/** \class Hello
+ *
+ */
+class Hello : public CBase_Hello 
+{
+public:
+  Hello()
+  {
+    CkPrintf("Hello %d %d %d created\n", thisIndex.x, thisIndex.y, thisIndex.z);
+  }
+
+  Hello(CkMigrateMessage *m) {}
+  
+  void SayHi(int hiNo)
+  {
+    CkPrintf("Hi [%d] from element %d %d %d\n", hiNo, thisIndex.x, thisIndex.y, thisIndex.z);
+    mainProxy.done();
+  }
+
+};
+
+#include "hello.def.h"
diff --git a/tests/charm++/demand_creation/hello.ci b/tests/charm++/demand_creation/hello.ci
new file mode 100644 (file)
index 0000000..8ac7202
--- /dev/null
@@ -0,0 +1,13 @@
+mainmodule hello {
+  readonly CProxy_Main mainProxy;
+  mainchare Main {
+    entry Main(CkArgMsg *m);
+    entry void done(void);
+  };
+
+  array [3D] Hello {
+    entry Hello(void);
+    entry [createhere] void SayHi(int hiNo);
+  };
+
+};