Added documentation for typed reductions
authorAaron Becker <akbecker@gmail.com>
Fri, 18 Feb 2011 01:13:49 +0000 (19:13 -0600)
committerAaron Becker <akbecker@gmail.com>
Fri, 18 Feb 2011 01:13:49 +0000 (19:13 -0600)
doc/charm++/entry.tex
doc/charm++/reductions.tex

index 4f58758a15dded001833747b46fadfd84a5b5a94..5ad5f543ad435f0ec820420f39ce42274cc3fc98 100644 (file)
@@ -113,4 +113,8 @@ called from python scripts running as explained in section~\ref{python}. In
 order to work, the object owning the method must also be declared with the
 keyword \kw{python}.
 
+\index{reductiontarget}\item[reductiontarget] entry methods may be used as the
+target of reductions, despite not taking CkReductionMsg as an argument.
+See~\ref{typed_reductions}.
+
 \end{description}
index 44f3844500f2557cf4e77bc4d43c2fbd025fc878..1c539ec183abe07c3c54490dff55064f213804a2 100644 (file)
@@ -145,7 +145,33 @@ void myClient(void *param,int dataSize,void *data)
 \}
 \end{alltt}
 
+\subsubsection{Typed Reductions}
 
+\label{typed_reductions}
+
+Typically the entry method that is invoked when a reduction is completed
+takes a single argument of type CkReductionMsg. However, by giving an entry
+method the \kw{reductiontarget} attribute, you can instead use entry methods
+that take arguments of the same type that the reduction function yields.
+For example, for a reduction that yields an int, a typed reduction might look
+like this:
+
+\begin{alltt}
+// in the .ci file...
+entry [reductiontarget] void done(int result);
+
+// in the .cc file...
+void Driver::done(int result) {
+   CkPrintf("Reduction value: %d\n", result);
+}
+\end{alltt}
+
+This will also work for arrays, and for any user-defined type with a PUP method
+(see ~\ref{sec:pup}). If you know that the reduction will yield a particular
+number of elements, say 3 ints, you can also specify a reduction target which
+takes 3 ints and it will be invoked correctly. When creating a callback to the
+reduction target, the entry method index is generated by {\tt
+CkReductionTarget(chare_name, method_name)}.
 
 \subsubsection{Built-in Reduction Types}