
\documentstyle{pumaslides}
\special{dvitops: landscape}
\def\footline{\PUMA{} review meeting, Munich, 11 July 1991. \hfill \thepage}
\begin{document}

%\sloppy

\section*{Task 5.1.1 Array Communications Library}

\begin{itemize}
\item Puma machine provides efficient point-to-point communication.
Many more elaborate communication patterns recur frequently in data-parallel
applications---tree-based operations, whole array shifts, etc.
\item Desirable to capture these higher level operations on distributed
data into reusable libraries, which partially abstract from underlying
message-passing implementation.
\item Potential applications include distributed-data numerical libraries and
data-parallel languages.
\end{itemize}
\newpage

\subsection*{Implementation}
\begin{itemize}
\item First version written in occam, for direct use from occam programs.
Implemented on top of VCR.
\item Introduces generalised channel-like structures as the communication
resources---``distributed indicies'' and ``distributed channels''.  
Incorporate (and subsume role of) multiple conventional occam channels
for complex array communications.
\item Various dynamic features are included, or in process
of implementation.  These simplify the configuration procedure.
\end{itemize}
\newpage

\subsection*{Application to Numerical Algorithms (task 5.2)}
\begin{itemize}
\item Liverpool experience reinforces belief that many communication
patterns (eg, log-time vector broadcast and other tree-based algorithms)
should be available as reusable code.
\item Dynamic features, such as run-time ``channel duplication''
useful in library code (eg, where 2 dot-products in a routine best
executed in parallel, but configuration level code standardised
with single-channel static connections).
\item Representations of segmented distributed arrays needed in
future library code---incompletely addressed by current version of ACL.
Need to support block, cyclic, etc, distributions.
\end{itemize}
\newpage

\subsection*{Application to Fortran 90 auto-parallelisation (task 4.3)}

\begin{itemize}

\item  Task 4.3 is developing a parallelisation system for Fortran~90
array programs, based on array distribution.


\item  Array Communications Library is the basis for the Fortran~90 library 
(which performs I/O, communications and array intrinsic functions).
E.g.:
\begin{verbatim}
 SCALAR  = A (I)    ! uses BROADCAST.EL
 A (1:5) = B (6:10) ! uses PERM.SHIFT
 A (1:N) = B (VEC)  ! gather-scatter; uses RELATE.DS
 READ *, A(10)      ! uses INPUT.1D.EL
 DOTPRODUCT(V1,V2)  ! F90 intrinsic; uses GLOB.SUM
\end{verbatim}

\item  Array Communications Library developed in close liaison with Task 4.3.  
Some results of this liaison are:
\begin{itemize}
	\item Common execution and communication model shared by both tasks
and supported by library (e.g.\ model assumes 
array comms operations are called identically along grid axes; I/O operations
called globally).
	\item Library can handle non-uniform distributions and {\em sections} of
distributed arrays.
	\item All the basic functions required for distributed
versions of the F90 intrinsics are provided.
\end{itemize}


\item Some F90 library functions not implemented directly
(e.g.\ \verb@MATMUL@, \verb@RESHAPE@, \verb@TRANSPOSE@), but can be built 
on top of library.

\end{itemize}

\end{document}

