
\documentstyle[psfig]{book}


\begin{document}


\chapter{Research Summary}

\section{Research Accomplishments} \label{Research-Accomplishments}

\subsection{Fortran Parallel Programming Systems}

{\em Participants:} Ken Kennedy (Director), Vikram Adve, Erol Akarsu,
Ruth Aydt, Rajesh Bordawekar, Alan Carle, Bryan Carpenter, Alok
Choudhary, Keith Cooper, Luiz DeRose, Kivanc Dincer, Ian Foster,
Geoffrey Fox, Robert Fowler, Bill Gropp, Tom Haupt, Paul Havlak, Chuck
Koelbel, David Kohr, Rakesh Krishnaiyer, Don Leskiw, Xiaoming Li,
Xinying Li, Rusty Lusk, Nat McIntosh, John Mellor-Crummey, Paul
Messina, Michael Paleczny, Dan Reed, Joel Saltz, Alan Sussman, Rajeev
Thakur, Linda Torczon, Yuhong Wen, Guansong Zhang, and Ying Zhang.\\

%\begin{list}
\begin{description}

\item
{\bf {\small \bf HPF} and {\small \bf HPF} Testbed.}
High Performance Fortran ({\small HPF}) provides a relatively
high-level language for programming scientific computations. 

In the past year, the {\small HPF} version 2.0 language specification
was published as a {\small CRPC} technical report.  This updated
definition includes corrections, simplifications to the {\small HPF}
core language, and a set of ``approved extensions'' to provide better
support for irregular computations, task parallelism, and asynchronous
I/O operations.  Implementations of the core language are expected by
early 1998.

We also have finished the development and documentation of a set of
{\small HPF} codes which both illustrate the use of the language and
can be used to benchmark compilers.  We have submitted a summary of
this work to the {\small \em NHSE} {\em Review}.

\item
{\bf Support for Machine-Independent Parallel Programming.}

This project focuses on compiler and tool support for exploiting data
parallelism.  Over the past year, the group's efforts have focused on
research and development of the d{\small HPF} compiler, a second
generation compiler for {\small HPF}. Three principal thrusts of this
effort have been to design and develop (a)~code generation support for
shared memory systems, (b)~advanced optimizations for message-passing
systems, and (c)~compiler support for source-level programming tools.
The tools effort is nearing completion of a prototype interface that
visualizes complex relationships between source program fragments and
their corresponding generated code.

\item
{\bf Performance Tools for {\small \bf HPF}.}
We have continued to work with the Portland Group ({\small PGI}) to
augment our tools for correlating dynamic performance data with
{\small HPF} source code.  The result of this collaboration among
Illinois, Rice, and {\small PGI} is a tool called svPablo that can correlate
the dynamic execution behavior with {\small HPF} source code.  This new tool
provides a variety of performance hierarchy displays, ranging from
procedural to individual source code construct and integrates both
software and hardware ({\small MIPS R}10000 counter data on the 
{\small SGI} Origin)
performance measurements.  The svPablo distribution is available via
the {\small WWW} at {\tt
http://www-pablo.cs.uiuc.edu/Projects/HPF/svpablo.html}.  


\item
{\bf Scalable I/O Support.}
The Scalable I/O Consortium is launching a broad-based attack on the
parallel I/O problem, i.e., efficiently transferring large volumes of
data into and out of parallel machines.  The Fortran Parallel
Programming Systems group 
is concentrating on a subproblem, support for out-of-core
computations.  In past years, we developed compiler techniques for
converting in-core computations to use out-of-core data structures.
This year saw the first fully automatic implementation of those
techniques, based on using the d{\small HPF} compiler framework to generate
calls to the {\small PASSION} parallel I/O library.  This allows the
programmer to concentrate on the logic of the program, rather than
spending great efforts in managing the I/O directly.

\item
{\bf Irregular Problem Support.}
Compiler work at Maryland has concentrated on the support 
of programs with pointers.  Constructing {\small DEF/USE} chains for
statements with pointers provides compilers with information about the
set of statements that may traverse the pointer links constructed by a
particular statement. One application of this information is to
generate communication schedules for programs with recursive data
structures (e.g. linked lists or trees), because {\small DEF/USE} information
describes where the referenced recursive data structures are
constructed and modified.

\item
{\bf Data-Parallel Library Interoperability.}
Runtime library work at Maryland has focused on developing techniques for
transferring data between distributed data structures owned by different
data-parallel runtime libraries. These techniques have been implemented in
the Maryland Meta-Chaos library, which currently is capable of transferring
data between (distributed) arrays that have been created using High
Performance Fortran, the Maryland {\small CHAOS} and Multiblock 
{\small PARTI} libraries, and
the Indiana pC++ runtime library, Tulip. 

\item
{\bf Parallel Compiler Runtime.}
We have released an 
{\small HPF} 2.0 front end with
an extensive checking package. 
We have developed a simple Fortran to Java translator. A complete
documented and tested public domain {\small HPF}/{\small HPC}++
regular runtime will be released soon.


\item
{\bf Integration of Programming Languages with the Web.}  The {\small
CRPC} co-organized and participated in workshops that explored the
role of Java and the Web in Computational Science.  Research has
focused on three areas: (1)~for the {\small PCRC} runtime, we are
developing a Java interface that includes a Java {\small MPI} linkage;
(2)~we have adapted our basic course in computational science to
include a tutorial in Java as a scientific language and included Java
plus {\small MPI} in our Virtual Programming Laboratory used in this
course; and (3)~we have developed an extensive Java and JavaScript
front end for scientific programming, which includes SciVis, a
Java-based visualization package.

\item
{\bf Optimizing Java.}  We have begun an investigation of
performance-enhancing optimizations of Java, especially for scientific
applications. Our initial focus has been on inlining code in an

optimizer that uses the Java Virtual Machine language as both source
and target. Systematic inlining has been shown to yield integer factor
improvements on many Java programs. A challenge is to implement
inlining in a way that does not create security holes. This research
has developed a novel strategy for inlining whole objects in
situations where method inlining would violate security. The strategy
has been implemented in a prototype optimizer developed jointly with
JavaSoft, Inc.

%\end{list}
\end{description}

\section{Research Plan}

\subsection{Fortran Parallel Programming Systems}

%\begin{list}
\begin{description}

\item
{\small \bf HPF.}  During the next year, the major activities related
to {\small HPF} will be technology transfer and user education.  We
will work with {\small PGI} and other vendors to move compiler
techniques from our research d{\small HPF} compiler to production
systems.  {\small HPF} tutorials will be presented at the SC `98
conference and used in the {\small DOD HPC} Modernization Program.

\item
{\bf Support for Machine-Independent Parallel Programming.}
The d{\small HPF} compiler has matured to the point where it can be used with
application benchmarks in addition to kernels. A significant focus
over the next year will be performance studies of application
benchmarks to assess the benefits of the compiler's advanced analysis
and optimizations.

\item
{\bf Performance Tools for {\small \bf HPF}.}  We plan to continue to
focus on performance scalability instrumentation and predictions, with
emphasis on predictions for distributed shared memory ({\small DSM})
systems. We will continue to work to integrate our software with the
d{\small HPF} compiler.  We will explore the effects of code
generation models and {\small DSM} data movement on {\small HPF}
application performance.

\item
{\bf Scalable I/O Support.}
We intend to link the Rice out-of-core compiler with the performance
instrumentation available through Pablo (another component of the
{\small SIO} effort).  

\item 
{\bf Irregular Problem Support.}  We will continue to develop new
compiler techniques that take advantage of code traversal patterns for
linked data structures and to investigate the application of these
techniques to programs containing conflicting data structure and
traversal patterns.

\item
{\bf Data-Parallel Library Interoperability.}
We will work with Syracuse to implement the inquiry functions required
to use Meta-Chaos with the new Syracuse {\small HPF} compiler.

\item
{\bf Optimizing Java.}
We will continue to investigate new strategies for obtaining high
performance from Java code using ideas developed in the context of
interprocedural optimization of Fortran codes, including the use of
more aggressive global inlining strategies.

\item
{\bf Performance Analysis.}  Syracuse and Maryland are collaborating
on an {\small ARPA} sponsored program to develop performance
estimation tools oriented to the rapid prototyping of designs as
needed for instance in exploring architectures for peta{\small OP}
performance. Deliverables include key generic applications and an
object-oriented performance estimation tool called PetaSim.


%\end{list}
\end{description}

\end{document}

