next up previous
Next: Message Format Up: mpjdev Previous: mpjdev

General Features

The currently specified API for mpjdev is small compared to MPI. It only includes point-to-point communications. Currently the only messaging modes are standard blocking mode (like MPI_SEND, MPI_RECV) and standard non-blocking mode (like MPI_ISEND, MPI_IRECV), together with a couple of ``wait'' primitives. The sophisticated datatypes of MPI are omitted. This is a fairly major change relative to MPI, but for now it seems quite hard to make progress in Java while pursuing the HPC ideal of messaging with ``zero-copying''--something the derived datatypes of MPI were designed to facilitate. Avoiding internal copying of message buffers would require changes to the implementation of some of the most popular Java Virtual Machines. So in mpjdev we adhere to a less demanding discipline in which data is locally copied at least once--between the Java program's memory space and a system-managed message-buffer. There is explicit packing and unpacking of buffers--a similar strategy to new I/O package of the JDK(version 1.4), but we provide a specialized set of gather/scatter buffer operation to better support HPC applications. Much of the complexity in the mpjdev API is then associated with packing and unpacking of message buffers. Because we want to make sure that usually data need be copied locally at most once, we provide a flexible suite of operations for copying data to and from the buffers. These include assorted gather- and scatter-style operations.
next up previous
Next: Message Format Up: mpjdev Previous: mpjdev
Bryan Carpenter 2003-01-23