A few more modifications to confor to pplmanual.sty
authorMilind Bhandarkar <milind@cs.uiuc.edu>
Tue, 26 Dec 2000 07:10:20 +0000 (07:10 +0000)
committerMilind Bhandarkar <milind@cs.uiuc.edu>
Tue, 26 Dec 2000 07:10:20 +0000 (07:10 +0000)
This is still not a final version.

21 files changed:
doc/charm++/ack.tex [deleted file]
doc/charm++/arrays.tex
doc/charm++/chares.tex
doc/charm++/comprundebug.tex [deleted file]
doc/charm++/further.tex
doc/charm++/groups.tex
doc/charm++/inhertmplt.tex
doc/charm++/intro.tex
doc/charm++/io.tex
doc/charm++/keywords.tex
doc/charm++/manual.tex
doc/charm++/messages.tex
doc/charm++/modules.tex
doc/charm++/nodegroups.tex
doc/charm++/othercalls.tex
doc/charm++/overview.tex
doc/charm++/quiesce.tex
doc/charm++/readonly.tex
doc/charm++/sdag.tex
doc/charm++/seqobjs.tex
doc/charm++/syntaxchange.tex [deleted file]

diff --git a/doc/charm++/ack.tex b/doc/charm++/ack.tex
deleted file mode 100644 (file)
index 8e67623..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-\section*{Acknowlegements}
-
-\large
-\normalsize
\ No newline at end of file
index c4fa3978fc2177ddca8d0787f623276c541dc5f4..e1cb9adbe7cc0bd551265ff27958696b9ed52490 100644 (file)
@@ -1,4 +1,4 @@
-\subsection{Chare Arrays}
+\section{Chare Arrays}
 
 Chare arrays \index{arrays} are arbitrarily-sized collections of chares.
 The entire array is has a globally unique identifier of type 
@@ -15,7 +15,7 @@ Array elements can be migrated, allowing arrays to be efficiently
 load balanced.  Array elements can also receive array broadcasts and
 contribute to array reductions.
 
-\subsubsection{Creating an Array}
+\subsection{Creating an Array}
 
 You can declare a one-dimentional \index{array}\index{chare array}chare array
 as:
@@ -57,7 +57,7 @@ information on the \kw{CkMigrateMessage}
 constructor. 
 
 
-\subsubsection{Inserting and Destroying Array Elements}
+\subsection{Inserting and Destroying Array Elements}
 
 You create an array using the \kw{CProxy\_Array::ckNew}
 routine.  You insert elements into the array with the
@@ -137,7 +137,7 @@ After destroying an element, you may insert a new element at
 its index.
 
 
-\subsubsection{Messages and Broadcasts}
+\subsection{Messages and Broadcasts}
 
 \charmpp contains direct support for 1D, 2D, 3D, and user-defined
 index arrays.  These arrays can be declared as:
@@ -218,7 +218,7 @@ simply omit the index, as:
 a3.e(new MyMsg(7)); //<- invokes e(7) on each array element
 \end{verbatim}
 
-\subsubsection{Migratable Array Elements}
+\subsection{Migratable Array Elements}
 Array objects can \index{migrate}migrate from one PE to another.
 For example, the load balancer (see section ``Load Balancing Chare Arrays'')
 might migrate array elements to better balance the load between
@@ -332,7 +332,7 @@ public:
 \end{verbatim}
 
 
-\subsubsection{Load Balancing Chare Arrays}
+\subsection{Load Balancing Chare Arrays}
 \charmpp includes a run-time load balancer which works
 on array elements.  The idea is to run programs more efficiently
 by migrating array elements away from overloaded processors.
@@ -362,7 +362,7 @@ a implemented as a global barrier.
 
 
 
-\subsubsection{Reductions on Chare Arrays}
+\subsection{Reductions on Chare Arrays}
 A \index{reduction}reduction applies a single operation (e.g. add,
 max, min, ...) to data items scattered across many processors and
 collects the result in one place.  \charmpp supports reductions on the
@@ -427,7 +427,7 @@ handler can use \uw{param}, \uw{dataSize}, and the data in any
 fashion; but the data will be deleted after the handler returns.
 
 
-\subsubsection{Built-in Array Reduction Types}
+\subsection{Built-in Array Reduction Types}
 \charmpp includes several built-in reduction types, used to combine the contributions from different array elements.  Any of them may be passed as an \kw{ArrayReductionFn} type to \kw{ArrayElement::contribute}.
 
 The first four reductions (sum, product, max, and min) work on int,
@@ -480,7 +480,7 @@ To extract the contribution of each array element from a reduction set, use the
 
 The reduction set order is undefined.  Add a source field to your contribution if you need to know which array element gave a particular contribution.
 
-\subsubsection{Defining a new array index type}
+\subsection{Defining a new array index type}
 \charmpp array indices are arbitrary collections of bytes.
 To define a new array index, you create an ordinary C++ class 
 which inherits from \kw{CkArrayIndex} and overrides the \kw{getKey} method.  
@@ -539,7 +539,7 @@ AF::AF()
 \end{verbatim}
 
 
-\subsubsection{Array Syntax Changes}
+\subsection{Array Syntax Changes}
 The syntax for arrays changed in April, 2000 in the following ways:
 
 \begin{itemize}
index 6d3a74d4ddaa734af65a6341d4ed1dbadac1af59..9f1fea961f40a01122a266380cda3fd3c7e3551e 100644 (file)
@@ -1,4 +1,4 @@
-\subsection{Chare Objects}
+\section{Chare Objects}
 
 \index{chare}Chares are concurrent objects with methods that can be invoked
 remotely.  These methods are known as \index{entry method}entry methods, and 
@@ -62,7 +62,7 @@ chare whose entry function or public function is currently executing.
 \kw{thishandle} can be used to set fields in a message. This  
 mechanism allows chares to send their handles to other chares.
 
-\subsubsection{Chare Creation}
+\subsection{Chare Creation}
 \label{chare creation}
 
 First, a \index{chare}chare needs to be declared, both in {\tt .ci} file and in
@@ -188,7 +188,7 @@ destPE}); \\
 
 \end{enumerate}
 
-\subsubsection{Method Invocation on Chares}
+\subsection{Method Invocation on Chares}
 
 Before sending a \index{message}message to a \index{chare}chare via an
 \index{entry method}entry method, we need to get a \index{proxy}{\it proxy} of
diff --git a/doc/charm++/comprundebug.tex b/doc/charm++/comprundebug.tex
deleted file mode 100644 (file)
index b114461..0000000
+++ /dev/null
@@ -1,377 +0,0 @@
-\section{Compiling, Running and Debugging \charmpp/\converse Programs}
-
- In this section, we give a brief description on how to compile, run
- and debug a \charmpp/\converse programs. This is a quick start
- introduction, only most commonly used options will be mentioned. For
- more information, refer to Charm/\charmpp/\converse Installation and
- Usage Manual.
-
-\subsection{Compiling \converse, Charm, and \charmpp\ Programs}
-
-The \cmd{charmc} program standardizes compiling and linking procedures
-among various machines and operating systems.  
-
-\cmd{charmc} can perform the following tasks.  The (simplified) syntax for
-each of these modes is shown. The options are described next.
-
-\begin{verbatim}
- * Compile C                        charmc -o pgm.o pgm.c
- * Compile C++                      charmc -o pgm.o pgm.C
- * Link                             charmc -o pgm   obj1.o obj2.o obj3.o...
- * Compile + Link                   charmc -o pgm   src1.c src2.ci src3.C
- * Create Library                   charmc -o lib.a obj1.o obj2.o obj3.o...
- * CPM preprocessing                charmc -gen-cpm file.c
- * Translate Charm++ Interface File charmc file.ci
-\end{verbatim}
-
-The following command-line options are most useful to users of \cmd{charmc}:
-
-\begin{description}
-
-\item[{\tt -o} {\em output-file}:]
-
-Output file name.  Note: \cmd{charmc} only ever produces one output file at
-a time.  Because of this, you cannot compile multiple source files at
-once, unless you then link or archive them into a single output-file.
-If exactly one source-file is specified, then an output file will be
-selected by default using the obvious rule (eg, if the input file if
-pgm.c, the output file is pgm.o).  If multiple input files are
-specified, you must manually specify the name of the output file,
-which must be a library or executable.
-
-\item[{\tt -c}:]
-
-Ignored.  There for compatibility with {\tt cc}.
-
-\item[{\tt -D*}:]
-
-Defines preprocessor variables from the command line at compile time.
-
-\item[{\tt -I}:]
-
-Add a directory to the search path for preprocessor include files.
-
-\item[{\tt -g}:]
-
-Causes compiled files to include debugging information.
-
-\item[{\tt -L*}:]
-
-Add a directory to the search path for libraries selected by
-the {\tt -l} command.
-
-\item[{\tt -l*}:]
-
-Specifies libraries to link in.
-
-\item[{\tt -O}:]
-
-Causes files to be compiled with maximum optimization.
-
-\item[{\tt -NO}:]
-
-If this follows -O on the command line, it turns optimization back off.
-This is just a convenience for simple-minded makefiles.
-
-\item[{\tt -verbose}:]
-
-All commands executed by charmc are echoed to stdout.
-
-\item[{\tt -language \{converse|charm++|sdag\}}:]
-
-When linking with \cmd{charmc}, one must specify the ``language''.  This
-is just a way to help charmc include the right libraries.  Pick the
-``language'' according to this table:
-
-\begin{itemize}
-\item{{\bf Charm++} if your program includes \charmpp, Charm, \CC, and C.}
-\item{{\bf Converse} if your program includes C or \CC.}
-\item{{\bf sdag} if your program includes structured dagger.}
-\end{itemize}
-
-\item[{\tt -tracemode} {\em tracing-mode}:]
-
-Selects the desired degree of tracing for Charm and \charmpp\ programs.
-See the Charm manual and the Projections and SummaryTool manuals for
-more information.  Currently supported modes are {\tt none}, {\tt
-summary}, and {\tt projections}. Default is {\tt -tracemode none}.
-
-\end{description}
-
-\subsection[Executing \converse/Charm/\charmpp\ Programs]
-       {Executing Converse/Charm/Charm++ Programs}
-\label{executing charm programs}
-
-The Charm linker produces one executable file.  On machines with a host
-(such as a network of workstations), a link to the proper host program
-{\fexec charmrun} is created in the user program directory.  Sample
-execution examples are given below (the executable is called {\fparm
-pgm}). Exact details will differ from site to site.  The list of Charm
-command line options is in Section~\ref{command line options}.
-
-\begin{itemize}
-
-\item \underline{\bf ASCI Red:} 
-       \begin{tabbing}
-       {\fexec yod -sz 4 pgm}
-       \end{tabbing}
-       runs {\fparm pgm} on four processors.
-
-\item \underline{\bf Cray T3E:} 
-       \begin{tabbing}
-       {\fexec mpprun -n 4 pgm}
-       \end{tabbing}
-       runs {\fparm pgm} on four processors.
-
-\item \underline{\bf SGI Origin2000 (origin-mpi):} 
-       \begin{tabbing}
-       {\fexec mpirun -np 4 pgm}
-       \end{tabbing}
-       runs {\fparm pgm} on four processors.
-
-\item \underline{\bf SGI Origin2000 (origin2000 or origin-pthreads):} 
-       \begin{tabbing}
-       {\fexec pgm +p4}
-       \end{tabbing}
-       runs {\fparm pgm} on four processors.
-
-\item \underline{\bf Network of workstations:} 
-       \begin{tabbing}
-       {\fexec charmrun pgm +p4}
-       \end{tabbing}
-       executes {\fparm pgm} on 4 nodes.  In a network environment, Charm must
-       be able to locate the directory of the executable.  If all workstations
-       share a common file name space this is trivial.  If they don't, Charm
-       will attempt to find the executable in a directory with the same path
-       from the {\bf \$HOME} directory.  Pathname resolution is performed as 
-       follows:
-       \begin{enumerate}
-               \item The system computes the absolute path of {\fexec pgm}.
-               \item If the absolute path starts with the equivalent of {\bf \$HOME} 
-                       or the current working directory, the beginning part of the path 
-                       is replaced with the environment variable {\bf \$HOME} or the 
-                       current working directory. However, if {\fparm exec\_home} is 
-            specified in the nodes file (see below), the beginning part of
-            the path is replaced with {\fparm exec\_home}.
-               \item The system tries to locate this program (with modified 
-                       pathname and appended extension if specified) on all nodes.
-       \end{enumerate}
-
-The list of nodes must be specified in a file.  The format of this file
-allows you to define groups of machines, giving each group a name.
-Each line of the nodes file is a command.  The most important command
-is:
-
-\begin{verbatim}
-host <hostname> <qualifiers>
-\end{verbatim}
-
-which specifies a host.  The other commands are qualifiers: they modify
-the properties of all hosts that follow them.  The qualifiers are:
-
-
-\begin{tabbing}
-{\tt group <groupname>}~~~\= - subsequent hosts are members of specified group\\
-{\tt login <login>  }     \> - subsequent hosts use the specified login\\
-{\tt shell <shell>  }     \> - subsequent hosts use the specified remote 
-shell\\
-%{\tt passwd <passwd>}     \> - subsequent hosts use the specified password\\
-{\tt setup <cmd>  }       \> - subsequent hosts should execute cmd\\
-{\tt home <dir> }         \> - subsequent hosts should find programs under dir\\
-{\tt cpus <n>}            \> - subsequent hosts should use N light-weight processes\\
-{\tt speed <s>}           \> - subsequent hosts have relative speed rating\\
-{\tt ext <extn>}          \> - subsequent hosts should append extn to the pgm name\\
-\end{tabbing}
-
-{\bf Note:}
-By default, charmrun uses a remote shell ``rsh'' to spawn node processes
-on the remote hosts. The {\tt shell} qualifier can be used to override
-it with say, ``ssh''. One can set the {\tt CONV\_RSH} environment variable
-or use charmrun option {\tt ++remote-shell} to override the default remote 
-shell for all hosts with unspecified {\tt shell} qualifier.
-
-All qualifiers accept ``*'' as an argument, this resets the modifier to
-its default value.  Note that currently, the passwd, cpus, and speed
-factors are ignored.  Inline qualifiers are also allowed:
-
-\begin{verbatim}
-host beauty ++cpus 2 ++shell ssh
-\end{verbatim}
-
-Except for ``group'', every other qualifier can be inlined, with the
-restriction that if the ``setup'' qualifier is inlined, it should be
-the last qualifier on the ``host'' or ``group'' statement line.
-
-Here is a simple nodes file:
-
-\begin{verbatim}
-        group kale-sun ++cpus 1
-          host charm.cs.uiuc.edu ++shell ssh
-          host dp.cs.uiuc.edu
-          host grace.cs.uiuc.edu
-          host dagger.cs.uiuc.edu
-        group kale-sol
-          host beauty.cs.uiuc.edu ++cpus 2
-        group main
-          host localhost
-\end{verbatim}
-
-This defines three groups of machines: group kale-sun, group kale-sol,
-and group main.  The ++nodegroup option is used to specify which group
-of machines to use.  Note that there is wraparound: if you specify
-more nodes than there are hosts in the group, it will reuse
-hosts. Thus,
-
-\begin{verbatim}
-        charmrun pgm ++nodegroup kale-sun +p6
-\end{verbatim}
-
-uses hosts (charm, dp, grace, dagger, charm, dp) respectively as
-nodes (0, 1, 2, 3, 4, 5).
-
-If you don't specify a ++nodegroup, the default is ++nodegroup main.
-Thus, if one specifies
-
-\begin{verbatim}
-        charmrun pgm +p4
-\end{verbatim}
-
-it will use ``localhost'' four times.  ``localhost'' is a Unix
-trick; it always find a name for whatever machine you're on.
-
-Since the new nodes file is incompatible with the old nodes file, it has
-been renamed.  It now is called ``.nodelist'', and all the options and
-environment variables pertaining to it have also been renamed {\tt NODELIST}.
-
-The user is required to set up remote login permissions on all nodes
-using the ``.rhosts'' file in the home directory if ``rsh'' is used for remote
-login into the hosts. If ``ssh'' is used, the user will have to setup
-password-less login to remote hosts either using ``.shosts'' file, or using
-RSA authentication based on a key-pair and adding public keys to ``.ssh/authorized\_keys'' file. See ``ssh'' documentation for more information.
-
-\end{itemize}
-
-Note that the Charm linker will provide the correct 
-executable. The user, however, needs to know how programs are run for
-the particular machine.
-
-\subsubsection[Command Line Options]{Command Line Options}
-\label{command line options}
-\index{command line options}
-
-A Charm program accepts the following command line options:
-\begin{description}
-
-\item[{\fexec +pN}] Run the program with N processors. The default is 1.
-Note that on some nonshared memory machines, e.g., nCUBE/2, the user must
-specify the number of processors using the command provided for that
-machine (e.g. {\fexec xnc} on the nCUBE/2).
-In such cases the {\fexec +p} option is ignored.
-
-%\item[{\fexec +mM}] Run the program with M Kwords of memory per
-%processor. The default is 50 Kwords of memory per processor.
-
-%\item[{\fexec +mmM}] Run the program with M Kwords of memory for
-%processor 0.
-
-\item[{\fexec +ss}] Print summary statistics about chare creation.  This option
-prints the total number of chare creation requests, and the total number of
-chare creation requests processed across all processors.
-
-\item[{\fexec +cs}] Print statistics about the number of create chare messages
-requested and processed, the number of messages for chares requested and 
-processed, and the number of messages for branch office chares requested and
-processed, on a per processor basis.  Note that the number of messages 
-created and processed for a particular type of message on a given node 
-may not be the same, since a message may be processed by a different
-processor from the one originating the request.
-
-%\item[{\fexec +mems}] Print the Memory Usage Statistics at the end, including
-%the number of memory allocation requests and memory free requests, based on
-%the size of the memory allocated or freed.
-
-\item[{\fexec user\_options}] Options that are be interpreted by the user
-program may be included after all the system options. 
-However, {\fexec user\_options} cannot start with +.
-The {\fexec user\_options} will be passed as arguments to the user program 
-via the usual {\fcmd argc/argv} construct to the {\fcmd main}\index{main}
-entry point of the main chare. 
-Charm system options will not appear in {\fcmd argc/argv}.
-
-\end{description}
-
-\subsubsection[Additional Uniprocessor Command Line Options]
-{Additional Uniprocessor Command Line Options}
-\label{uniprocessor command line options}
-
-The uniprocessor versions can be used to simulate multiple
-processors on a single workstation\index{uniprocessor command line
-options}.  Any number of processors between 1 and 32 can be simulated by
-using the {\fexec +p} option, limited only by the available memory on the
-uniprocessor workstation.  By default, the uniprocessor versions handle
-a single message from each processor, going in order from processor 0
-thru $P-1$ (where $P$ is the number of processors) repeatedly.  
-%If the
-%user supplies the {\fexec +seed} \index{+seed} command line option
-%followed by an 
-%integer value, the processors will be accessed in a random (but
-%deterministic) order.  {\fexec +seed} is only recognized by the
-%uniprocessor version.
-
-\subsubsection[Additional Network Command Line Options]
-{Additional Network Command Line Options}
-\label{network command line options}
-
-The following {\fexec ++} command line options are available in
-the network version\index{network command line options}:
-\begin{description}
-
-\item[{\fexec ++debug}] Run each node under gdb in an xterm window, prompting
-the user to begin execution.
-\index{++debug}
-
-\item[{\fexec ++debug-no-pause}] Run each node under gdb in an xterm window
-immediately (i.e. without prompting the user to begin execution).
-\index{++debug-no-pause}
-
-\item[{\fexec ++maxrsh}] Maximum number of {\fcmd rsh}'s to run at a
-time.
-\index{++maxrsh}
-
-\item[{\fexec ++resend-wait}] Timeout before retransmitting datagrams
-(in msec).
-\index{++resend-wait}
-
-\item[{\fexec ++resend-fail}] Timeout before retransmission fails (in
-msec).\index{++resend-fail}
-This parameter can help the user kill ``runaway'' processes, which may not
-be killed otherwise when the user interrupts the program before it 
-completes execution.
-Currently a bug exists in the network version that may cause programs to
-terminate prematurely if this value is set too low and {\fexec scanf} 
-operations are being performed.
-
-\item[{\fexec ++nodelist}] File containing list of nodes.
-\index{++nodelist}\index{.nodes}\index{nodes file}
-
-\end{description}
-
-If using the {\fexec ++debug} option, the user must ensure the
-following:
-\index{++debug}
-\begin{enumerate}
-
-\item {\fexec xterm}, {\fexec xdpyinfo},  and {\fexec gdb} must be in
-the user's path.
-
-\item The path must be set in the {\fexec .cshrc} file, not the {\fexec .login}
-file, because {\fexec rsh} does not run the {\fexec .login} file. 
-
-\item The nodes must be authorized to create windows on the host machine (see
-man pages for {\fexec xhost} and {\fexec xauth}).
-
-\end{enumerate}
-
-
-
-
index f623cc0913f1cc518c22814e789bd4c0b4d75972..2484c9c91a5d035c549cdcaa5a7de585acbcad02 100644 (file)
@@ -1,22 +1,13 @@
-\section{Further Information}
+\chapter{Further Information}
 
-\subsection{Related Publications}
+\section{Related Publications}
 \label{publications}
 
 For starters, see the publications and reports as well
 as related manuals that can be found on the Parallel Programming
 Laboratory website: {\tt http://charm.cs.uiuc.edu/}. 
 
-Some \charmpp\ related papers:
-\cite{CharmppPPWCPP96},\cite{CharmppOOPSLA93}.  Papers on {\sc Converse}:
-\cite{ConverseRTSPP98}, \cite{InterOpIPPS96}. Some
-{\sc Charm} related papers that formed the early foundation for \charmpp:
-\cite{CharmSys1TPDS94}, \cite{CharmSys2TPDS94},
-\cite{CharmOverviewINTL93}.  Papers on Structured Dagger and Dagger: 
-\cite{DaggerSyncIPPS94}, \cite{StructDaggerEURO96}.  Projections
-papers: \cite{ProjectionsIPPS93}, \cite{Projections}.
-
-\subsection{Associated Tools and Libraries}
+\section{Associated Tools and Libraries}
 
 Several tools and libraries are provided for \charmpp. {\bf
 Projections} is an automatic performance analysis tool which provides
@@ -24,8 +15,8 @@ the user with information about the parallel behavior of \charmpp\ programs. The
 libraries is to reduce the time needed to develop parallel
 applications with the help of a set of efficient and re-usable modules.
 
-\subsubsection{Projections}
-{\bf Projections} \cite{ProjectionsIPPS93}, \cite{Projections} is a
+\subsection{Projections}
+{\bf Projections} is a
 performance visualization and feedback tool. The system has a much
 more refined understanding of user computation than is possible in
 traditional tools.
@@ -40,7 +31,7 @@ and automatically analyzes each individual partition.
 Future versions will be able to provide recommendations/suggestions
 for improving performance as well.
 
-\subsubsection{Communication}
+\subsection{Communication}
 Communication optimizations tend to be specific to a particular
 architecture or an application. To improve portability and to reduce the
 cost of developing parallel applications a mechanism to integrate these
@@ -54,7 +45,7 @@ communication patterns. It also provides the capability to do dynamic
 switching of strategies. This helps the library to adapt itself to the
 existing environment.
 
-\subsection{Contacts}
+\section{Contacts}
 \label{Distribution}
 
 While we can promise neither bug-free software nor immediate solutions   
index 58c4f08d5841a9d87411da5ff4d57499967576d3..fbd1cd49c5dab949015bedd872ec7f108f4d0fcf 100644 (file)
@@ -1,12 +1,12 @@
-\subsection{Group Objects}
+\section{Group Objects}
 
 A {\sl group\footnote{Originally called {\em Branch Office Chare} or 
 {\em Branched Chare}}} \index{group}is a collection of chares where 
 there exists \index{chare}one chare (or {\sl branch}) on each
 processor.   Each branch has its own data members.  Groups have
 a definition syntax similar to normal chares, except that they must
-inherit from the system defined class \keyword{Group}, rather than
-\keyword{Chare}.
+inherit from the system defined class \kw{Group}, rather than
+\kw{Chare}.
 
 In the interface file, we declare
 
@@ -42,7 +42,7 @@ can broadcast messages to all branches of a group.  There can be many
 instances corresponding to a group type.  Each instance has a
 different group handle, and its own set of branches.
 
-\subsubsection{Group Creation}
+\subsection{Group Creation}
 
 \noindent {\bf Chare Group Declaration}:
 
@@ -76,7 +76,7 @@ CkGroupID gid = CProxy_G::ckNew(m1);
 CProxy_G g(gid);
 \end{verbatim}
 
-\subsubsection{Method Invocation on Groups}
+\subsection{Method Invocation on Groups}
 
 Before sending a message to a \index{group}group via an entry
 method, we need to get a proxy of that group using the group identifier (a
index 593c4837dc8670f2f889d00817b4801a3700415e..d780c348cf1d488f2f9bd00083b0b2d456766682 100644 (file)
@@ -1,4 +1,4 @@
-\section{Inheritance and Templates in Charm++}
+\chapter{Inheritance and Templates in Charm++}
 \label{inheritance and templates}
 
 \charmpp\ 5.0 supports inheritance among \charmpp\ objects such as
@@ -6,7 +6,7 @@ chares, groups, and messages. This, along with facilities for generic
 programming using \CC\ style templates for \charmpp\ objects, is a
 major enhancement over the previous version of \charmpp.
 
-\subsection{Chare Inheritance}
+\section{Chare Inheritance}
 \index{inheritance}
 Chare inheritance makes it possible to remotely invoke methods of a base
 chare \index{base chare} from a proxy of a derived
@@ -93,7 +93,7 @@ chareID of the concrete derived chare. Invoking methods on this proxy
 object would invoke those methods remotely on the concrete derived
 class instance.
 
-\subsection{Inheritance for Messages}
+\section{Inheritance for Messages}
 \index{message inheritance}
 
 Similar to Chares, messages can also be derived from base messages. One needs
@@ -102,7 +102,7 @@ inheritance specification (that is, without the \kw{public} access specifier.)
 Message inheritance makes it possible to send a message of derived type to
 the method expecting a base class message.
 
-\subsection{Generic Programming Using Templates}
+\section{Generic Programming Using Templates}
 \index{templates}
 
 One can write ``templated'' code for Chares, Groups, Messages and other 
index 4173365f0a43e6da601a93289937af619f1e92dd..2c9280b6bb4defe0394d34775f15e9a55f934533 100644 (file)
@@ -1,4 +1,4 @@
-\section{Introduction}
+\chapter{Introduction}
 
 %update as you wish
 
@@ -53,7 +53,7 @@ Tutorial Introduction to Charm}\footnote{{\sc Charm} is no longer actively
 supported and maintained, and these manuals are kept only for offering the
 historical perspectives.}.
 
-\subsection{Overview}
+\section{Overview}
 
 %update as you wish
 
@@ -111,7 +111,7 @@ can simplify otherwise arduous parallel programming tasks.
 The following sections provide detailed information about various features of
 \charmpp\ programming system.
 
-\subsection{History}
+\section{History}
 
 %update with history up to 5.0 version
 
@@ -135,7 +135,7 @@ significant shift in the research agenda of the Parallel Programming
 Laboratory. The message-driven runtime system code of the \charmpp\ was
 separated from the actual language implementation, resulting in an
 interoperable parallel runtime system called {\sc
-Converse}\cite{ConverseRTSPP98,InterOpIPPS96}. The \charmpp\ runtime system was
+Converse}. The \charmpp\ runtime system was
 retargetted on top of {\sc Converse}, and popular programming paradigms such as
 MPI and PVM were also implemented on {\sc Converse}. This allowed
 interoperability between these paradigms and \charmpp. This release also
@@ -151,15 +151,15 @@ changes, and the macros that replaced the syntactic extensions in original
 \charmpp, were replaced by natural \CC\ constructs.
 
 
-\subsection{Notation Used}
+\section{Notation Used}
 
 Small code samples used to illustrate syntax specifications throughout
 this document will use the following typeface conventions:
 
 \begin{itemize}
-\item Language keywords appear as boldface words: \keyword{chare}.
+\item Language keywords appear as boldface words: \kw{chare}.
 \item User-defined types and function names appear in a sans serif font:
-\userword{chareName}. 
+\uw{chareName}. 
 \item User-defined variables appear italicized: {\it myChare}.
 \item All other code appears in the same font as the regular text of
 this document.
index 3281b9bc5965d4946b25fcafb2d960bec980fff0..0f6261c087dfbe801f6719ce7575f00839e2b639 100644 (file)
@@ -1,4 +1,4 @@
-\subsection{Terminal I/O}
+\section{Terminal I/O}
 
 \index{input/output}
 \charmpp\ provides both C and \CC\ style methods of doing terminal I/O.  
index bdb75eb216119b94cab12499a1619a8f291f61c1..b606f43c4918b0a6e9983de8560f0abae2fd1411 100644 (file)
@@ -1,4 +1,4 @@
-\section{\charmpp\ Keywords}
+\chapter{\charmpp\ Keywords}
 The following is the complete list of keywords in \charmpp:
 
 \begin{enumerate}
index ef5d9e7597e39342176d5d7f28630be015a1f087..2ad241aff4ba84ca4d95f837b0b650eaba2dc415 100644 (file)
@@ -1,86 +1,12 @@
-\documentclass[11pt]{article}
-
-\newif\ifpdf
-\ifx\pdfoutout\undefined
-  \pdffalse
-\else
-  \pdfoutput=1
-  \pdftrue
-\fi
-
-\ifpdf
-  \pdfcompresslevel=9
-  \usepackage[pdftex,colorlinks=true,plainpages=false]{hyperref}
-\else
-\fi
+\documentclass[10pt]{report}
 
 \usepackage{../pplmanual}
 \input{../pplmanual}
 
-%
-% Old page dimensions, superceded by pplmanual.sty
-% commented by Chee Wai 12/20/2000
-%
-%\usepackage{fullpage}
-%\pagestyle{headings}
-%\setlength{\parskip}{0.1in}
-%\setlength{\textheight}{9.5in}
-%\setlength{\textwidth}{6.5in}
-%\setlength{\parindent}{0in}
-%\setlength{\topmargin}{-.5in}
-%\parskip 0.1in
-
-%
-% Constants
-%
-% \version command superceded by pplmanual.sty
-% commented by Chee Wai 12/20/2000
-%
-%\newcommand{\version}{5.0}            %%% The current version number
-\newcommand{\prevversion}{4.9} %%% The previous version number
-
-%
-% Commands
-%
-% \zap, \note command superceded by pplmanual.sty
-% commented by Chee Wai 12/20/2000
-%
-%\newcommand{\zap}[1]{ }
-\newcommand{\fcmd}{\bf}                %%% Font for Charm commands
-\newcommand{\fparm}{\it\sf}    %%% Font for parameters to Charm commands
-\newcommand{\fexec}{\bf}       %%% Font for compile/execute cmds/options
-\newcommand{\atitle}[1]{{\it #1}}
-\newcommand{\keyword}[1]{{\textbf{#1}}}
-\newcommand{\userword}[1]{{\fparm \textsf{#1}}}
-\newcommand{\constraint}[1]{Note: {\it #1}}
-%\newcommand{\note}[1]{Note: {\it #1}}
-
-%
-% Conveniences
-%
-% \uw and \kw superceded by new definitions in pplmanual.tex
-% commented by Chee Wai 12/20/2000
-% 
-%\newcommand{\uw}[1]{\userword{#1}}
-%\newcommand{\kw}[1]{\keyword{#1}}
-\newcommand{\CLocalBranch}{\keyword{CLocalBranch}}
-
-%
-%       \CC gives "C++" that looks good.
-%
-% all commands superceded by pplmanual.sty
-% commented by Chee Wai 12/20/2000
-%
-%\newcommand{\CC}{C\kern -0.0em\raise 0.5ex\hbox{\normalsize++}}
-%\newcommand{\emCC}{C\kern -0.0em\raise 0.4ex\hbox{\normalsize\em++}}
-%\newcommand{\charmpp}{{\sc Charm++}}
-
-\makeindex
-
 \title{The\\ \charmpp\\ Programming Language\\ Manual}
-\version{5.0}
+\version{5.5}
 \credits{
-The Charm software was developed as a group effort.  The earliest
+{\small The Charm software was developed as a group effort.  The earliest
 prototype, Chare Kernel(1.0), was developed by Wennie Shu and Kevin
 Nomura working with Laxmikant Kale.  The second prototype, Chare
 Kernel(2.0), a complete re-write with major design changes, was
@@ -99,17 +25,17 @@ interoperability among modules written using different paradigms
 within a single application. \charmpp\ runtime system was re-targetted
 at Converse. Syntactic extensions in \charmpp\ were dropped, and a
 simple interface translator was developed that, along with the \charmpp\
-runtime, became the \charmpp\ language.  The current version (5.0)
+runtime, became the \charmpp\ language.  The current version (5.5)
 includes a complete rewrite of the \charmpp\ runtime system (using \CC)
 and the interface translator (done by Milind Bhandarkar).  It also
 includes several new features such as Chare Arrays (developed by
-Robert Brunner), and various libraries (written by Terry Wilmarth,
+Robert Brunner and Orion Lawlor), and various libraries 
+(written by Terry Wilmarth,
 Gengbin Zheng, Laxmikant Kale, Zehra Sura, Milind Bhandarkar, Robert
 Brunner, and Krishnan Varadarajan.) A coordination language
 ``Structured Dagger'' has been implemented on top of \charmpp\ (Milind
-Bhandarkar), and included in this version.  IDL bindings for \charmpp\ 
-were developed by Jayant Desouza, Milind Bhandarkar and Gengbin
-Zheng. Several features have also been added to Converse. Dynamic
+Bhandarkar), and included in this version.  
+Several features have also been added to Converse. Dynamic
 seed-based load balancing has been implemented (Terry Wilmarth and
 Joshua Yelon), a client-server interface for Converse programs, and
 debugging support has been added (Parthasarathy Ramachandran, Jeff
@@ -120,39 +46,17 @@ Brunner), and SGI Origin2000 (Milind Bhandarkar).  The test suite for
 Hu. Projections, the performance visualization and analysis tool, was
 redesigned and rewritten using Java by Michael Denardo.
 }
+}
 
 \begin{document}
 
 \maketitle
 
-%\begin{titlepage}
-%\vspace*{2in}
-%\Huge
-%\begin{center}
-%The \\
-%\charmpp \\
-%Programming Language \\
-%Manual\\
-%\vspace*{0.5in}
-%Version 5.0\\
-%\vspace*{0.7in}
-%\today
-%\end{center}
-%\normalsize
-%\end{titlepage}
-
-%\input{ack}
-
-%\newpage
-%\tableofcontents
-
-\newpage
 \input{intro}
 
-\newpage
 \input{overview}
 
-\section{The \charmpp\ Language}
+\chapter{The \charmpp\ Language}
   \input{modules}      
   \input{messages}
   \input{seqobjs}
@@ -165,29 +69,16 @@ redesigned and rewritten using Java by Michael Denardo.
   \input{io}
   \input{othercalls}    
 
-\newpage
 \input{inhertmplt}
 
-\newpage
 \appendix
 
-\input{comprundebug}
-
 \input{keywords}
 
-\input{syntaxchange}
-
 \input{sdag}
 
 \input{further}
 
-\newpage
-\addtocontents{toc}{\contentsline {section}{\numberline {}References}{46}}
-\bibliographystyle{plain}
-\bibliography{group}
-
-\newpage
-\addtocontents{toc}{\contentsline {section}{\numberline {}Index}{47}}
 \input{index}
 
 \end{document}
index 7ae18bfad6628e402b997eee18bc9a6e31191e98..51ea35b0eb7ecd764a2e5038e50a580b965b2dd1 100644 (file)
@@ -1,4 +1,4 @@
-\subsection{Messages}
+\section{Messages}
 
 In \charmpp, \index{chare}chares, \index{group}groups and \index{nodegroup}
 nodegroups communicate using 
@@ -50,7 +50,7 @@ is generated by the charm translator. Then message definition has the form:
 \end{tabbing}
 
 
-\subsubsection{Message Creation and Deletion}
+\subsection{Message Creation and Deletion}
 \label{memory allocation}
 
 \index{message}Messages are allocated using the \CC\ \kw{new} operator:
@@ -117,7 +117,7 @@ the programmer.  Messages can be deleted using the standard C++
 \kw{delete} operator.  
 
 
-\subsubsection{Message Packing}
+\subsection{Message Packing}
 \label{message packing}
 \index{message packing}
 \index{packed messages}
@@ -254,7 +254,7 @@ This will allow the \CC\ compiler to ensure proper alignment of all
 its member fields.
 
 
-\subsubsection{Variable Size Messages}
+\subsection{Variable Size Messages}
 \label{varsize messages}
 \index{variable size messages}
 \index{varsize message}
@@ -395,7 +395,7 @@ After packing, they become offsets from the address of the pointer variable to
 the start of the pointed-to data.  Unpacking restores them to pointers. 
 
 
-\subsubsection{Prioritized Execution}
+\subsection{Prioritized Execution}
 \label{prioritized message passing}
 \index{prioritized execution}
 \index{prioritized message passing}
@@ -553,7 +553,7 @@ delivery order} you specify.
 However, it makes a serious attempt to be ``close'', so priorities
 can strongly affect the efficiency of your program.
 
-\subsubsection{Entry Method Attributes}
+\subsection{Entry Method Attributes}
 \label{attributes}
 
 Charm++ provides a handful of special attributes that \index{entry method}entry
@@ -562,9 +562,9 @@ method an attribute, you must specify the keyword for the desired attribute in
 the attribute list of that entry method's .ci file declaration.  The syntax for
 this is as follows:
 
-\small
-\kw{entry} \userword{[attribute1, ..., attributeN] void EntryMethod(MessageType *)};
-\normalsize
+\begin{alltt}
+entry [attribute1, ..., attributeN] void EntryMethod(MessageType *);
+\end{alltt}
 
 Charm++ currently offers four attributes that one may give an entry method:
 \kw{threaded}, \kw{sync}, \kw{exclusive}, and \kw{virtual}.
@@ -600,9 +600,9 @@ behave in the same way as pure virtual methods in C++ and are declared in a
 very similar fashion.  To make a virtual entry method pure, add a ``= 0'' after
 that entry method's .ci file declaration.  This looks like the following:
 
-\small
-\kw{entry} \userword{[virtual] void PureVirtualEntry(MessageType *) = 0};
-\normalsize
+\begin{alltt}
+entry [virtual] void PureVirtualEntry(MessageType *) = 0;
+\end{alltt}
 
 
 
index 66cde3c3c8ad647bcab87a52a8df1c7e0e2b91ab..9d9e8b4b275362ad7c527547bd474917d58bc439 100644 (file)
@@ -1,6 +1,6 @@
-\subsection{Modules}
+\section{Modules}
 
-\subsubsection{Structure of a \charmpp\ Program}
+\subsection{Structure of a \charmpp\ Program}
 
 A \charmpp\ program is structurally similar to a C++ program.  Most of
 a \charmpp\ program {\em is} C++ code
@@ -134,7 +134,7 @@ will then print
 ``Hello World...'' and then call the \uw{Wait} method 
 of \uw{HelloMain}. The Wait method calls CkExit() after all group members have called it (i.e., they have finished printing ``Hello World...''), and the \charmpp program exits.
 
-\subsubsection{Functions in the ``decl.h'' and ``def.h'' files}
+\subsection{Functions in the ``decl.h'' and ``def.h'' files}
 
        The \uw{decl.h} file provides declarations for the proxy classes of the concurrent objects declared in the ``.ci'' file (from which the \uw{decl.h} file is generated). So the \uw{Hello.decl.h} file will have the declaration of the class CProxy\_HelloMain. Similarly it will also have the declaration for the HelloGroup class. 
 
index 88e30d250b24ebdc3dccaa28a993dfdfe6331f85..a86751aab2813a251dba85ceb46c1b32dcb6a3bc 100644 (file)
@@ -1,4 +1,4 @@
-\subsection{Nodegroup Objects}
+\section{Nodegroup Objects}
 
 {\it Node groups} \index{node groups} \index{nodegroup} are very
 similar to the group objects already discussed in that node groups are
@@ -39,7 +39,7 @@ variable \index{thisgroup}\kw{thisgroup}, and once again, \index{thishandle}
 \kw{thishandle} is the handle of the particular branch in which the function 
 is executing.
 
-Node groups may possess \index{exclusive}\keyword{exclusive} entry methods.  
+Node groups may possess \index{exclusive}\kw{exclusive} entry methods.  
 These are entry methods that will not run while other other exclusive entry 
 methods of that node group are running on the same node.  For instructions 
 for making an entry method exclusive, refer to section \ref{attributes}.
@@ -64,7 +64,7 @@ group type, and each instance has a different group handle, and its own set of
 branches.
 
 
-\subsubsection{Method Invocation on Nodegroups}
+\subsection{Method Invocation on Nodegroups}
 
 Methods can be invoked either on a particular \index{branch}branch
 of a \index{nodegroup}nodegroup by specifying a {\em node number} as a method
index 4f828e62a696e1fda5695e8e5eb89f70f54597a0..ccfb27a70af2a9461d43cb5cca65c6d92c1b002f 100644 (file)
@@ -1,4 +1,4 @@
-\subsection{Other Calls}
+\section{Other Calls}
 
 \label{other Charm++ calls}
 
index 3969fdb92b0ba48604a94521c3ee01942de9ce6b..9e9935cfde8f990e6ef53d20ce113bd9424dc511 100644 (file)
@@ -1,4 +1,4 @@
-\section{Charm++ Overview}
+\chapter{Charm++ Overview}
 
 We think that \charmpp\ is easy to use if you are familiar with object-based
 programming. (But of course that is our opinion, if your opinion differs, you
@@ -50,7 +50,7 @@ some differences among the features they support, but the basic syntax and
 semantics almost always remains the same, and that is of invoking methods on
 the remote object by invoking methods on proxies.
 
-\subsection{\charmpp\ Execution Model}
+\section{\charmpp\ Execution Model}
 
 A \charmpp\ program consists of a number of \charmpp\ objects distributed
 across the available number of processors. Thus, the basic unit of parallel
@@ -131,11 +131,11 @@ called after the currently executing entry method completes. \kw{CkExit}
 need not be called on all processors; it is enough to call it from just one
 processor at the end of the computation.
 
-\subsection{Entities in \charmpp\ programs}
+\section{Entities in \charmpp\ programs}
 
 This section describes various entities in a typical \charmpp\ program.
 
-\subsubsection{Sequential Objects}
+\subsection{Sequential Objects}
 
 A \charmpp\ program typically contains a number of sequential objects. These
 objects are similar to the objects in C++, except that they {\em should not
@@ -150,7 +150,7 @@ their methods could be synchronously invoked only from the local processor.
 These objects are not known to the \charmpp\ runtime system, and
 thus they need not be mentioned in the module interface files.
 
-\subsubsection{Messages}
+\subsection{Messages}
 
 Messages supply data arguments to the asynchronous remote method invocation.
 These objects are treated differently from other objects in \charmpp\ by the
@@ -167,7 +167,7 @@ Varsize messages is an effective optimization on conditionally packed messages,
 and have to be made known to the \charmpp\ runtime using a special keyword in
 the interface file.
 
-\subsubsection{Chares}
+\subsection{Chares}
 
 Chares are the most important entities in a \charmpp\ program. These concurrent
 objects are different from sequential \CC\ objects in many ways. Syntactically,
@@ -187,7 +187,7 @@ have its constuctors as entry methods (with at most one message pointer
 parameter). These chares and their entry methods have to be specified in the
 interface file.
 
-\subsubsection{Chare Groups}
+\subsection{Chare Groups}
 
 Chare Groups\footnote{ These were called Branch Office Chares (BOC) in earlier
 version of Charm.  } are a special type of concurrent objects.  Each chare
@@ -201,7 +201,7 @@ system-provided class called \kw{Group}. The Charm kernel has to be notified
 that these chares are semantically different, and therefore chare groups have a
 different declaration in the interface specification file.
 
-\subsubsection{Chare Nodegroups}
+\subsection{Chare Nodegroups}
 
 Chare nodegroups are very similar to chare groups except that instead of having
 one groupmember on each processor, the nodegroup has one member on each shared
@@ -223,7 +223,7 @@ problems by allowing the programmer to specify an entry method of a nodegroup
 to be {\em exclusive}, thus guaranteeing that no other {\em exclusive} method
 of that nodegroup member can execute simultaneously within the node.
 
-\subsubsection{Chare Arrays}
+\subsection{Chare Arrays}
 
 Chare arrays are collections of chares. However unlike chare groups or
 nodegroups, arrays are not constrained by characteristics of the underlying
index 0d1970e3d0c88a1f660bae58e5a9f9935e45a7fd..3dcdc8a287b81549fba0fe61249d756854d8eac9 100644 (file)
@@ -1,4 +1,4 @@
-\subsection{Quiescence Detection}
+\section{Quiescence Detection}
 
 In \charmpp, \index{quiescence}quiescence is defined as the state in which no
 processor is executing an entry point, and no messages are awaiting processing.
index 19b79c8339ea2af95fb3ecd96032019645de9633..9e70fb60a3e613fdee80ca49aaa82f82e0634ad1 100644 (file)
@@ -1,4 +1,4 @@
-\subsection{Read-only Variables, Messages and Arrays}
+\section{Read-only Variables, Messages and Arrays}
 
 Since \charmpp\ does not allow global variables for keeping
 programs portable across a wide range of machines, it provides a special
index 205c1d5a11c2b405a501da430be29c294b18fa13..c400193e7431f82e46316cc86848ae570beb510f 100644 (file)
@@ -1,4 +1,4 @@
-\section{Structured Dagger}
+\chapter{Structured Dagger}
 
 \newcommand{\sdag}{Structured Dagger}
 \newcommand{\charm}{Charm}
@@ -188,7 +188,7 @@ xx\=xx\=xx\=xx\=xx\=xx\kill
 \label{figsdagexample}
 \end{figure}
 
-\sdag\ \cite{StructDaggerEURO96}  is a coordination language built on top of
+\sdag\ is a coordination language built on top of
 \charmpp\ that supports the sequencing mentioned above,
 while overcoming limitations of thread-based languages, and
 facilitating a clear expression of flow of control within the object
@@ -210,9 +210,9 @@ entries in \charmpp\ interface file. The implementation of the
 entry methods that contain the when-block is written using the \sdag\
 language. Grammar of \sdag\ is given in the EBNF form below.
 
-\subsection{Grammar}
+\section{Grammar}
 
-\subsubsection{Tokens}
+\subsection{Tokens}
 
 \begin{verbatim}
   <ident> = Valid C++ identifier 
@@ -220,7 +220,7 @@ language. Grammar of \sdag\ is given in the EBNF form below.
   <c++-code> = Valid C++ code 
 \end{verbatim}
 
-\subsubsection{Grammar in EBNF Form}
+\subsection{Grammar in EBNF Form}
 
 \begin{verbatim}
 <sdag> := <class-decl> <sdagentry>+ 
index b04a79fdba53f095a9ea24b94f93e43e25eaeedb..a585e924fce9fbe7fc48d3c04635079445cc2abd 100644 (file)
@@ -1,4 +1,4 @@
-\subsection{Sequential Objects}
+\section{Sequential Objects}
 \index{sequential objects} 
 
 These are the same as C++ classes and functions.  All C++ features can
diff --git a/doc/charm++/syntaxchange.tex b/doc/charm++/syntaxchange.tex
deleted file mode 100644 (file)
index 165f053..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-\section{Syntax Changes from \charmpp\ 4.9}
-
-The following changes are required to make older \charmpp\ 4.9
-programs run with the new translator and runtime system in
-\charmpp\ 5.0.
-
-\begin{itemize}
-
-\item Replace all references to {\tt *.top.h} and {\tt *.bot.h} to
-{\tt *.decl.h} and {\tt *.def.h} respectively. This should be done in
-Makefile, and everywhere these two types of files are included.
-
-\item Change all X.ci files to include a top-level enclosure of module X {...}.
-
-\item Change \kw{chare} \uw{main} to \kw{mainchare} \uw{main}.
-
-\item Replace \kw{chare\_object} by \kw{Chare}.
-
-\item Replace \kw{groupmember} by \kw{Group}.
-
-\item Replace \kw{comm\_object} by \uw{CMessage\_<msgName>} in all
-message declarations in {\tt *.h} files. 
-
-\item Remove all \kw{operator new} methods of messages.
-
-\item Remove \kw{MsgIndex(..)} parameter to \kw{new} for message allocation.
-
-\item Remove all the empty messages (used only for triggering
-computations.) from {\tt *.h}, {\tt *.ci}, {\tt *.C} files. All the
-entry methods that take these empty messages as parameters should be
-made methods with \kw{void} parameter. This should be done in all {\tt
-*.ci}, {\tt *.h}, and {\tt *.C} files.  In these methods, there may be
-a {\tt delete msg}. Remove that. 
-
-\item Check for \kw{mainhandle} in the source. If it is there, declare
-it as a \kw{readonly} variable in {\tt .ci} file, and initialize it in
-the \kw{mainchare}'s constructor, so that it is available to all the
-processors during the run.
-
-\item All the \kw{packmessage} declarations in {\tt *.ci} files should
-be changed to \kw{message [packed]}. 
-
-\item All \kw{CPrintf}, \kw{CScanf}, and \kw{CError} should be changed
-to \kw{CkPrintf}, \kw{CkScanf}, and \kw{CkError}. 
-
-\item All \kw{CharmExit} should be changed to \kw{CkExit}.
-
-\item Replace \kw{CMyPe} by \kw{CkMyPe}. Replace \kw{CNumPes} by \kw{CkNumPes}.
-
-\item Change \kw{ChareIDType} to \kw{CkChareID}.
-
-\item Change signature of \uw{M::pack} and \uw{M::unpack} for all
-messages \uw{M} in {\tt *.h}, {\tt *.C} to\\
-\verb+static void *pack(M* msg)+\\
-and\\
-\verb+static M* unpack(void *buf)+\\
-and change the code
-accordingly. This is a significant change because {\tt pack} and {\tt unpack}
-used to be instance methods, and now they are class static
-methods.  Avenues of optimizations open with this change, but one need
-not explore those in the interest of time immediately. Further, one
-should make sure that the performance of the new scheme is at least as
-good as the old one. 
-
-\item Replace all \kw{new\_group} by \uw{CProxy\_<grpName>::ckNew}.
-
-\item Replace \kw{new\_chare2} by proxy creation.
-
-\item Replace \kw{CSendMsg} by temporary proxy creation based on
-ChareID and invoking appropriate method on it. One optimization is to
-create a proxy immediately after a ChareID is received, and reusing it
-everytime.
-
-\item Similarly replace \kw{CSendMsgBranch} by temporary proxy
-creation based on the groupID, and invoking appropriate method on it,
-with processor number as the second parameter. Once again, there is an
-opportunity for optimization here. 
-
-\item Similarly replace \kw{CBroadcastMsgBranch} by temporary proxy
-creation based on the groupID, and invoking appropriate method on it,
-without any second parameter. Once again, there is an opportunity for
-optimization here. 
-
-\item Replace \kw{CStartQuiescence} by \kw{CkStartQD}.
-
-\item Replace \kw{GetEntryPtr} by appropriate static method
-(\kw{ckIdx\_*}) calls. 
-
-\item Replace \kw{CLocalBranch} macros by \kw{ckLocalBranch} instance
-method on temporarily created proxy. 
-
-\item Change \kw{CPriorityPtr} to \kw{CkPriorityPtr}, also cast it
-explicitly to {\tt (int *)}. 
-
-\item Replace \kw{QuiescenceMessage} by \kw{CkQDMsg}. Remove all
-extern declarations of \kw{CkQDMsg} from {\tt *.ci} files.
-
-\end{itemize}