docs:basic concepts:read-only vars: some edits
authorChao Mei <chaomei2@illinois.edu>
Mon, 23 Jul 2012 21:33:44 +0000 (16:33 -0500)
committerChao Mei <chaomei2@illinois.edu>
Mon, 23 Jul 2012 21:35:35 +0000 (16:35 -0500)
doc/charm++/readonly.tex

index 61a43945c9bdb316cfed6ad42571d7dc4f55ebad..cf9368b23ae1020e6c3dc65ea172d7996d31e5e5 100644 (file)
@@ -4,20 +4,20 @@
 
 Since \charmpp\ does not allow global variables for keeping programs portable
 across a wide range of machines, it provides a special mechanism for sharing
-data amongst all objects. {\it Read-only} variables, messages and arrays are
-used to share information that is obtained only after the program begins
-execution and does not change after they are initialized in the dynamic scope
-of {\tt main::main()} function. They can be accessed from any
-\index{chare}chare on any processor as ``global'' variables.When a variable is declared as read only,it is PUPped so that it can be accessed from any chare on any processor. Large data
-structures containing pointers can be made available as read-only variables
-using read-only messages or read-only arrays. Read-only variables, messages and
-arrays can be used just like local variables for each processor, but the user
-has to allocate space for read-only messages using \kw{new} to create the
+data amongst all objects. {\it Read-only} variables of simple data types or
+compound data types including messages and arrays are used to share information
+that is obtained only after the program begins execution and does not change
+after they are initialized in the dynamic scope of the {\tt main} function of
+the \kw{mainchare}. They are broadcasted to every PE by the \charmpp\ runtime,
+and can be accessed in the same way as \CC ``global'' variables on any PEs.
+Compound data structures containing pointers can be made available as read-only
+variables using read-only messages or read-only arrays.  Note that memory space
+has to be allocated for read-only messages by using \kw{new} to create the
 message in the {\tt main} function of the \kw{mainchare}. 
 
-Read-only variables, messages, and arrays are declared by using the type
-modifier \kw{readonly}, which is similar to \kw{const} in \CC. Read-only data
-is specified in the {\tt .ci} file (the interface file) as: 
+Read-only variables are declared by using the type modifier \kw{readonly},
+which is similar to \kw{const} in \CC. Read-only data is specified in the {\tt
+.ci} file (the interface file) as: 
 
 \begin{alltt}
  readonly Type ReadonlyVarName;
@@ -33,18 +33,20 @@ type \uw{Type}. \uw{Type} must be a single token and not a type expression.
 The variable \uw{ReadonlyMsgName} is declared to be a read-only message of type
 \uw{MessageType}. Pointers are not allowed to be readonly variables unless they
 are pointers to message types. In this case, the message will be initialized on
-every processor.
+every PE.
 
 \begin{alltt}
  readonly Type ReadonlyArrayName [arraysize];
 \end{alltt}
 
 The variable \uw{ReadonlyArrayName} is declared to be a read-only array of type
-\uw{Type}. \uw{Type} must be a single token and not a type expression.
+\uw{Type} with \uw{arraysize} elements. \uw{Type} must be a single token and
+not a type expression. The value of \uw{arraysize} must be known in compile
+time.
 
-Read-only variables, messages and arrays must be declared either as
-global or as public class static data, and these declarations have the
-usual form:
+Read-only variables must be declared either as global or as public class static
+data in the C/\CC\ implementation files, and these declarations have the usual
+form:
 
 \begin{alltt}
  Type ReadonlyVarName;