Documentation #1917: Remove inadequate documentation about immediate messages 10/4210/2
authorNitin Bhat <nbhat4@illinois.edu>
Mon, 21 May 2018 15:31:13 +0000 (10:31 -0500)
committerNitin Bhat <nbhat4@illinois.edu>
Mon, 21 May 2018 16:11:51 +0000 (11:11 -0500)
Charm++ user messages targeted to immediate entry methods are internally
converted to Immediate messages by charmxi and it is unnecessary to
separately mention immediate messages in the user facing Charm++ manual.
This patch removes the documentation and also updates the immediateEntryMethod
example to include Charm++ user messages.

Change-Id: I488085a522dc996ae65d1f501e99eeb76803b488

doc/charm++/entry.tex
doc/charm++/messages.tex
examples/charm++/immediateEntryMethod/immediateEM.C
examples/charm++/immediateEntryMethod/immediateEM.ci

index 8da7de06bea3191768ec82434f3183043b65fdb2..8aec0116bd2077a5a0090edcbfaad537793295f1 100644 (file)
@@ -88,8 +88,8 @@ could take a long time to finish. Immediate entry methods are implicitly
 will not be interrupted by another. Function \kw{CmiProbeImmediateMsg()} can be
 called in user codes to probe and process immediate messages periodically. Also
 note that \texttt{immediate} entry methods are by default \texttt{notrace} and are
-not traced during execution. An example of \texttt{immediate} entry method,
-``immediatering'' can be found in \testrefdir{megatest}.
+not traced during execution. An example of \texttt{immediate} entry method
+can be found in \examplerefdir{immediateEntryMethod}.
 
 \index{expedited}\item[expedited] entry methods skip the priority-based message
 queue in \charmpp{} runtime. It is useful for messages that require prompt
index a111bb4488304af841ac24dd4e51233819bab4ba..bd450933f71a13289b8d81e91672d0300eaba7a3 100644 (file)
@@ -592,15 +592,3 @@ While serializing an arbitrary data structure into a flat buffer, one must be
 very wary of any possible alignment problems.  Thus, if possible, the buffer
 itself should be declared to be a flat struct.  This will allow the \CC\
 compiler to ensure proper alignment of all its member fields.
-
-
-
-\subsubsection{Immediate Messages}
-
-Immediate messages are special messages that skip the Charm scheduler, they
-can be executed in an ``immediate'' fashion even in the middle of 
-a normal running entry method. 
-They are supported only in nodegroup.
-
-
-
index fa59a082facbb965dc028733d5fe15a0c6eb5102..beb92364ab9f7801ad14ff6d6a2d402c289b2a5d 100644 (file)
@@ -2,6 +2,17 @@
 
 CProxy_main mainProxy;
 
+class immMessage : public CMessage_immMessage{
+public:
+  int i;
+  double d;
+  immMessage() {i=0; d=0;}
+  immMessage(int i_, double d_) {
+    i = i_;
+    d = d_;
+  }
+};
+
 class main : public CBase_main{
   int counter;
   CProxy_NG1 ng1Proxy;
@@ -37,6 +48,14 @@ class main : public CBase_main{
     cb.send();
   }
 
+  void invokeImmediateEntryMethodWithMessage() {
+    if(++counter != CkNumNodes()) return;
+    counter = 0;
+    CkPrintf("\n[PE: %d][Node: %d][Rank: %d] ******** Invoking Immediate Entry Method with immediate message *******\n", CkMyPe(), CkMyNode(), CkMyRank());
+    immMessage *iMsg = new immMessage(20,8.66);
+    ng1Proxy.immediateEntryMethodWithMessage(iMsg);
+  }
+
   void done() {
     if(++counter != CkNumNodes()) return;
     CkExit();
@@ -64,9 +83,17 @@ class NG1 : public CBase_NG1{
       mainProxy.invokeImmediateEntryMethodCb();
     } else {
       CkPrintf("[PE: %d][Node: %d][Rank: %d] Invoked immediate entry method through callback\n", CkMyPe(), CkMyNode(), CkMyRank());
-      mainProxy.done();
+      mainProxy.invokeImmediateEntryMethodWithMessage();
     }
   }
+
+  void immediateEntryMethodWithMessage(immMessage *iMsg) {
+    CkPrintf("[PE: %d][Node: %d][Rank: %d] Invoked immediate entry method with immediate Message\n", CkMyPe(), CkMyNode(), CkMyRank());
+    CkAssert(iMsg->i == 20);
+    CkAssert(fabs(iMsg->d - 8.66)< 0.000001);
+    delete iMsg;
+    mainProxy.done();
+  }
 };
 
 #include "immediateEM.def.h"
index 592a926cce2f11beb1300b24cba09a075820c955..a6633cc1eecfdc92950fd56b04c149010c6d7a57 100644 (file)
@@ -1,12 +1,14 @@
 mainmodule immediateEM {
 
   readonly CProxy_main mainProxy;
+  message immMessage;
 
   mainchare main {
     entry main(CkArgMsg *m);
     entry void invokeRegularEntryMethod();
     entry void invokeImmediateEntryMethod();
     entry void invokeImmediateEntryMethodCb();
+    entry void invokeImmediateEntryMethodWithMessage();
     entry void done();
   };
 
@@ -14,5 +16,6 @@ mainmodule immediateEM {
     entry NG1();
     entry void regularEntryMethod();
     entry [immediate] void immediateEntryMethod();
+    entry [immediate] void immediateEntryMethodWithMessage(immMessage *);
   };
 };