\documentstyle{csart}

\newenvironment{linear}{\\ \begin{minipage}[t]{\textwidth}}{\end{minipage}}
% Prevents body from being split between pages.  Can't be used at start
% of a paragraph, irritatingly.

\begin{document}

\sloppy

\pagestyle{empty}

%\title{Translation of "Level-II" DAP occam to occam}

%\author{D.B. Carpenter}
%\address{Department of Electronics and Computer Science, \\
%         Southampton University, \\
%         Southampton, S09 5NH} 

%\maketitle

%\newpage

%\tableofcontents
%\listoftables

%\newpage

\setcounter{page}{1}
\pagestyle{plain}

\section{Mapping ``Distributions'' onto Process Grids}

     Parallel arrays, or ``distributions'' have to be mapped across
the process grid.  There are two aspects of this mapping.  The first
is the manner in which the elements of a distribution are scattered
over the process array, and the second is how the elements of
the domain of the distribution held in a single process's memory
is mapped into that memory.  The first aspect can be handled at
a higher level of abstraction than that of the individual distribution
(several distributions are likely to share the same mapping). 
In fact, in my notation, this aspect is embodied in the
implementation of the \verb$RANGE$, and associated with a distributed
data structure accordingly called the ``range structure''.
The second aspect has to be managed on a per-distribution basis---each
distribution has associated with it an ``access structure'' which defines
how the local domain is mapped into local memory.

\subsection{The access structure}

     To some extent the range structure is built on top of the
access structure, so I'll outline the important features
of the latter structure before going on to the former.
Logically, the domain of a $d$-dimensional distribution
over a rank $\{x, y, \dots \}$ 
held in a single process is a $d$-dimensional array.  A
suitable concrete representation of a domain access strutcture is as
a base address, $b$, and a set of $d$ strides $\{s_x, s_y,\dots \}$.
If the indicies into this array are $\{i_x, i_y,\dots \}$ the
corresponding element is held at local memory location
\begin{equation}
m = b + s_x i_x + s_y i_y + \dots
\end{equation}
This is perhaps a more detailed specification than strictly
necessary here---the essential feature is simply that this is a
$d$-dimensional array with a set of local indicies, the $i$'s.
Notice, by the way, that no requirement is imposed that the
totality of elements of a particular array of this type
form a contiguous region of memory.  Also that no upper
bounds on the indicies are defined in the access structure---the
number of points in a domain is defined by a range structure.
Finally, notice that at this stage we haven't specified any
relation between the values of, for example, $i_x$ and the
values of the $x$ coordinate associated with a site.  This
binding is also defined by the range structure.

\subsection{The access structure}

     A range structure defines the distribution properties of a range
of sites selected from a particular distributed index.  In this
context a range is assumed to correspond to a {\em contiguous}
slice of the index coordinate values.  The most important operations
on a range structure are
\begin{enumerate}
\item
Given a range structure associated with some range of coordinate values,
derive a new structure associated with a sub-range of those values.
\item
\end{document}

