
\section*{Communication}

Simple communications performed by Adhoc primitive \verb$remap$.
\begin{verbatim}
      REAL U (12)
!HPF$ DISTRIBUTE U (BLOCK)

      FORALL (I = 2 : 11)
        U (I) = (U (I - 1) + U (I + 1)) / 2
      END FORALL
\end{verbatim}
could translate to
\begin{verbatim}
  range i_u(12 # t_1) ;
  array float u [i] ;

  {
    range i_internal(10 : base 1 : i_u) ;
    array float n [i_internal] ;
    array float p [i_internal] ;

    remap(n, u [10 : base 0]) ;
    remap(p, u [10 : base 2]) ;
    where(i_internal)
      u = 0.5 * (n + p) ;
  }
\end{verbatim}
\verb$remap$ copies data between two arrays of the same shape---they
can have {\em any} legitimate HPF mapping.

Also provides {\em gather} and {\em scatter} primitives to handle
communications implied by non-linear subscripts.

