next up previous contents
Next: Future Work Up: Conclusion and Future Work Previous: Conclusion and Future Work   Contents

Conclusion

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 up previous contents
Next: Future Work Up: Conclusion and Future Work Previous: Conclusion and Future Work   Contents
Bryan Carpenter 2004-06-09