use cmireduce during recovery
[charm.git] / doc / pose / glossary.tex
1 \section{Glossary of \pose{}-specific Terms}
2
3 \begin{itemize}
4 \item {\tt void {\bf POSE\_init}()}\\
5         $\circ$ Initializes various items in \pose{}; creates the load balancer
6         if load balancing is turned on; initializes the statistics
7         gathering facility if statistics are turned on.\\
8         $\circ$ Must be called in user's main program prior to creation of any
9         simulation objects or reference to any other \pose{} construct.
10 \item {\tt void {\bf POSE\_start}()}\\
11         $\circ$ Sets busy wait to default if none specified; starts
12         quiescence detection; starts simulation timer.\\
13         $\circ$ Must be called in user's main program when simulation
14         should start.
15 \item {\tt void {\bf POSE\_registerCallBack}(CkCallback cb)}\\
16         $\circ$ Registers callback function with \pose{} -- when program
17         ends or quiesces, function is called.\\
18         $\circ$ CkCallback is created with the index of the callback
19         function and a proxy to the object that function is to be
20         called on.  For example, to register the function {\tt wrapUp}
21         in the main module as a callback:
22
23 \begin{verbatim}
24   CProxy_main M(mainhandle);
25   POSE_registerCallBack(CkCallback(CkIndex_main::wrapUp(), M));
26 \end{verbatim}
27
28 \item {\tt void {\bf POSE\_stop}()}\\
29         $\circ$ Commits remaining events; prints final time and
30         statistics (if on); calls callback function.\\
31         $\circ$ Called internally when quiescence is detected or
32         program reaches {\tt POSE\_endtime}.
33 \item {\tt void {\bf POSE\_exit}()}\\
34         $\circ$ Similar to {\tt CkExit()}.
35 \item {\tt void {\bf POSE\_set\_busy\_wait}(int n)}\\
36         $\circ$ Used to control granularity of events; when calling
37         {\tt POSE\_busy\_wait}, program busywaits for time to compute $fib(n)$.
38 \item {\tt void {\bf POSE\_busy\_wait}()}\\
39         $\circ$ Busywait for time to compute $fib(n)$ where n is either
40         1 or set by {\tt POSE\_set\_busy\_wait}.
41 \item {\tt {\bf POSE\_useET(t)}}\\
42         $\circ$ Set program to terminate when global
43         virtual time (GVT) reaches $t$.
44 \item {\tt {\bf POSE\_useID()}}\\
45         $\circ$ Set program to terminate when no events are available
46         in the simulation.
47 \item {\tt void {\bf POSE\_create}({\it constructorName}(eventMsg *m), int
48 handle, int atTime)}\\
49         $\circ$ Creates a poser object given its constructor, an event
50         message $m$ of the appropriate type, any integer as the handle
51         (by which the object will be referred from then on), and a
52         time (in simulation timesteps) at which it should be created.\\ 
53         $\circ$ The handle can be thought of as a chare array element
54         index in Charm++.
55 \item {\tt void {\bf POSE\_invoke\_at}({\it methodName}(eventMsg *m),
56 {\it className}, int handle, int atTime)}\\
57         $\circ$ Send a {\it methodName} event with message $m$ to an
58         object of type {\it className} designated by handle $handle$
59         at time specified by $atTime$.\\
60         $\circ$ This can be used by non-poser objects in the \pose{}
61         module to inject events into the system being simulated.  It
62         should not be used by a poser object to generate an event.
63 \item {\tt void {\bf POSE\_invoke}({\it methodName}(eventMsg *m),
64 {\it className}, int handle, int timeOffset)}\\
65         $\circ$ Send a {\it methodName} event with message $m$ to an
66         object of type {\it className} designated by handle $handle$
67         at current OVT + $timeOffset$.\\
68         $\circ$ This is used by poser objects to send events from one
69         poser to another.
70 \item {\tt void {\bf POSE\_local\_invoke}({\it methodName}(eventMsg
71         *m), int timeOffset)}\\
72         $\circ$ Send a {\it methodName} event with message $m$ to this
73         object at current OVT + $timeOffset$.\\
74         $\circ$ This is used by poser objects to send events to themselves.
75 \item {\tt void {\bf CommitPrintf}(char *s, args...)}\\
76         $\circ$ Buffered print statement; prints when event is
77         committed (i.e. will not be rolled back).\\
78         $\circ$ Currently, must be called on the wrapper class
79         (parent) to work properly, but a fix for this is in the works.
80 \item {\tt void {\bf CommitError}(char *s, args...)}\\
81         $\circ$ Buffered error statement; prints and aborts program
82         when event is committed.\\
83         $\circ$ Currently, must be called on the wrapper class
84         (parent) to work properly, but a fix for this is in the works.
85 \item {\tt void {\bf elapse}(int n)}\\
86         $\circ$ Elapse $n$ simulation time units.
87 \item {\tt {\bf poser}}\\
88         $\circ$ Keyword (used in place of chare) to denote a poser
89         object in the {\tt .ci} file of a \pose{} module.
90 \item {\tt {\bf event}}\\
91         $\circ$ Keyword used in square brackets in the {\tt .ci} file
92         of a \pose{} module to denote that the entry method is an event method.
93 \item {\tt {\bf eventMsg}}\\
94         $\circ$ Base class for all event messages; provides timestamp,
95         priority and many other properties.
96 \item {\tt {\bf sim}}\\
97         $\circ$ Base class of all wrapper classes.
98 \item {\tt {\bf strat}}\\
99         $\circ$ Base class of all strategy classes.
100 \item {\tt {\bf con}}\\
101         $\circ$ Simple conservative strategy class.
102 \item {\tt {\bf opt, opt2, opt3, spec, adapt, adapt2}}\\
103         $\circ$ Optimistic strategy classes.
104 \item {\tt {\bf rep}}\\
105         $\circ$ Base class for all representation classes.
106 \item {\tt {\bf chpt}}\\
107         $\circ$ Simple checkpointing representation class.
108 \item {\tt {\bf OVT()}}\\
109         $\circ$ Returns the object virtual time (OVT) of the poser in
110         which it is called
111 \item {\tt void $MySim$::{\bf terminus}()}\\
112         $\circ$ When simulation has terminated and program is about to exit, this method is called on all posers.  Implemented as an empty method in the base {\tt rep} class, the programmer may choose to override this with whatever actions may need to be performed per object at the end of the simulation.
113 \end{itemize}
114