\section*{A. Project summary}
\setcounter{page}{1}
\setlength{\topmargin}{0.5cm}
\setlength{\headheight}{0.0in}
\setlength{\baselineskip}{0.17in}

The increasing power of computers should be used not just to solve larger
more complex problems but also to produce more attractive programming
environments. This proposal explores the concept that environments that
integrate interpretative and compiled subsystems are an attractive way of
combining productivity with high performance. We intend to use Web
technology, especially Java, to build prototype systems which explore the
interpreter/compiler integration for both sequential and parallel systems.

Our central idea is a front end compiler that produces intermediate code for
what we call II/CVM (Integrated Interpretative/Compiled Virtual Machine)
which can be implemented by either a high performance runtime or flexible
interpretative mode. This research complements and builds on existing
commercial activity as we focus on two areas - scientific computing and
support of large scale data parallelism - which are outside the commercial
mainstream. We have already initiated a community activity studying the use
of Java in scientific and engineering computation which will help us make
certain that our work is synergistic with and not competitive with
commercial efforts. Qualitatively one can view our front end compiler as
similar to the javac compiler's function of producing JavaVM bytecodes. The
II/CVM will naturally need the study of such issues as Just in Time
compilation, dynamic linking, remote loading, garbage collection, stack
handling, communication latency hiding and the invocation of high
performance pre-compiled runtime. Our research will lead to insights on the
tradeoffs in placing optimizations either in the front end compiler or in
the dynamic runtime supporting the new hybrid Virtual Machine.

This project builds on our previous research in HPF where we have produced a
very robust public domain front end which we will modify to support the
II/CVM front end compiler. Further our Darpa funded PCRC activity has
produced parallel compiler runtime which can support Fortran, C++ and Java
drivers and this will be a central part of the runtime support for the
II/CVM. Note that languages such as HPF are natural for hybrid environments
as they largely achieve parallelism by identifying (by either automatic
methods or user specification) coarse grain parallel constructs such as
array primitives and forall statements which are then implemented by
efficient runtime. Such a coarse grain analysis can in the spirit of MATLAB
or APL, be implemented with an interpreter as this would not have
significant overhead. We in fact built a successful but not sustainable
prototype HPF interpreter in 1993-94 which we intend to essentially
generalize here. We see web technology now gives us appropriate
infrastructure which we can use to build far more effective systems than was
possible 3 years ago. In summary, the objectives of this research include:
\begin{list}{$\bullet$}{%
  \setlength{\leftmargin}{0.2in}%
  \setlength{\itemsep}{0.0in}%
  \setlength{\parsep}{0.0in}}
\item
Identification of issues in optimal integration of interpretation and
compilation techniques for parallel language systems.
\item
Study of the impact of the hybrid environments on performance for scientific
and engineering applications.
\item
Development of a set of technologies that aim at a high performance language
system with interpreted (Java) front end supported by compiled parallel
runtime for solving scientific and engineering problems. Although not the
central theme, this proposal will contribute to the understanding of the
different ways of incorporating data parallelism in Java.
\end{list}

This proposal funds work at Syracuse University which is collaborative with
the strong Compiler groups at Peking University and Harbin Institute of
Technology whose local funding brings a major outside contribution to this
proposed work.
