  Parallel I/O refers to the ability of scientific programs to concurrently
read/write from/to a single file from multiple processes executing on
distributed memory platforms like compute clusters. In the HPC world, I/O
becomes a significant bottleneck for many real-world scientific applications.
In the last two decades, there has been significant research in improving the
performance of I/O operations in scientific computing for traditional languages
including C, C++, and Fortran. As a result of this, several mature and
high-performance libraries including ROMIO (implementation of MPI-IO), parallel
HDF5, Parallel I/O (PIO), and parallel netCDF are available today that provide
efficient I/O for scientific applications. However, there is very little
research done to evaluate and improve I/O performance of Java-based HPC
applications. The main hindrance in the development of efficient parallel I/O
Java libraries is the lack of a standard API (something equivalent to MPI-IO).
Some adhoc solutions have been developed and used in proprietary applications,
but there is no general-purpose solution that can be used by performance hungry
applications. As part of this project, we plan to develop a Java-based parallel
I/O API inspired by the MPI-IO bindings (MPI 2.0 standard document) for C, C++,
and Fortran. Once the Java equivalent API of MPI-IO has been developed, we will
develop a reference implementation on top of existing Java messaging libraries.
Later, we will evaluate and compare performance of our reference Java Parallel
I/O library with C/C++ counterparts using benchmarks and real-world
applications.
