Java Grande and HPJava
Investigators: B. Carpenter, G.Fox
Following a workshop
organized by Fox in December 1996, there has been growing interest in the use
of Java and its associated technologies in large-scale computation. The
workshop series is popular and now well established with ACM sponsorship.
Further, the Java Grande Forum (http://www.javagrande.org) established
in March 1998, has divided the issues into two broad areas: Numerics and
Concurrency. The Numeric subgroup led by the NIST group of Boisvert and Pozo
has brought to the Java standards process a set of proposals which are designed
to make the Java language appropriate for core science codes. Clearly Java can
be used client side for nifty animations and the use for modern servers is well
established in both industry and academia. However can Java be effective in
your basic parallel algorithm? Satisfying this goal brings up issues such as
floating point performance, convenient expression of complex variables and
efficient array constructs. Already the Java Grande Forum, coordinated by Fox,
has had significant impact on Sun Microsystems. As well as these community
activities, we focus in CSIT on several specific research projects. Later we
discuss work on web-based Problem Solving Environments and Science portals
while here we describe research on new approaches to Java-based data parallel
programming. This is a collaboration with Professor Xiaoming Li from Peking
University with whom we developed the basic ideas as part of research on
compiler runtime for High Performance Fortran and C++. The HPJava model is less
ambitious than systems like High Performance Fortran (HPF) and aims to support
an SPMD model intermediate between basic message passing (MPI) and HPF. We call
the generalization to languages like Fortran and C++ HPspmd but at Florida
State we focus on Java. HPJava can be implemented as either threads or
distributed MPI and we would be early users of both the proposed major parallel
architectures (in the research infrastructure) to compare the effectiveness of
these two paradigms. Currently HPJava has a few key concepts: distributed
arrays, data-parallel arrays and special control constructs allowing one to
restrict either the processors or array elements used. There is an elegant
syntax for user specified decomposition. Currently we are testing the first
HPJava compiler (really just a translator) but we will then take some ab-initio
application codes (such as those in our GEM Earthquake activity) and see if the
new language can produce good code in a practical case. Obviously this can
drive changes to both the implementation and the basic parallel concepts.
As part of the pure MPI syntax for HPJava, we have developed an MPI Java
binding which is available for download (http://www.npac.syr.edu/projects/pcrc/HPJava)
and is a reference implementation used by the Java Grande MPI subgroup. We are
developing an interesting research thrust looking at MPI style messaging which
is natural for languages like Java. This involves rather obviously serialized
object based messaging replacing derived types in MPI. However more interesting
is links to technology like Jini to support dynamic invocation of parallel
codes on cluster architectures. We hope this will be a major thrust on the
proposed cluster resource. Here we link to work described later on Science
Portals which are the natural software model for the user interface and
middleware linking parallel Java codes to data and other services.
We hope that the next few years will see a convergence of the standards work (improved numerical performance of Java) and research like ours (parallel programming paradigms exploiting features of languages like Java). The net result should be more attractive programming environments for computational science.