Next: Future Work
Up: Conclusion and Future Work
Previous: Conclusion and Future Work
Contents
We have explored enabling parallel, high-performance computation--in
particular development of scientific
software in the network-aware programming language, Java.
Traditionally, this kind of computing was done in Fortran.
Arguably, Fortran is becoming a marginalized language, with limited economic
incentive for vendors to produce
modern development environments, optimizing compilers for new hardware, or
other kinds of associated software expected by today's programmers.
Java looks like a promising alternative for the future.
In this dissertation, we have discussed motivations and features of HPJava,
a new HPspmd programming environment.
HPJava is an environment for SPMD parallel programming--especially, for SPMD
programming with distributed arrays.
HPJava has a lower-level programming model than HPF.
Interfacing to other parallel-programming paradigms is more natural than
in HPF. Both data parallel code and direct SPMD library calls are allowed
in the same program. Various features and new concepts of HPJava were discussed
using simple examples.
We have discussed in detail the design and development of high-level
and low-level runtime libraries for HPJava--these are essentially
communication libraries.
The Adlib API is presented as high-level communication library.
This API is intended as an example of an application level communication
library suitable for data parallel programming in Java.
This library fully supports Java object types, as part of
the basic data types.
We discussed implementation issues of collective communications in depth.
The API and usage of three different types of collective communications were
also presented.
Current implementation of this library is based on low-level communication
library called mpjdev.
Java introduces implementation issues for message-passing APIs
that do not occur in conventional programming languages.
One important issue is how to transfer data between the Java program and
the network while reducing overheads of the Java Native Interface.
As contribution toward new low-level APIs, we developed
a low-level Java API for HPC message passing, called mpjdev.
The mpjdev API is a device level communication library.
This library is developed with HPJava in mind, but it is a standalone library
and could be used by other systems.
We discussed message buffer and communication APIs of mpjdev and also format
of a message.
We also discussed three different implementations of mpjdev: mpiJava-based,
multithreaded, and LAPI-based.
To evaluate current communication libraries, we did various performance tests.
We developed small kernel level applications and a full application for
performance test. We got reasonable performance on simple applications without
any serious optimization. We also evaluated a communication performance of
the high- and low-level libraries for future optimization.
Next: Future Work
Up: Conclusion and Future Work
Previous: Conclusion and Future Work
Contents
Bryan Carpenter
2004-06-09