Next: Message Format
Up: mpjdev
Previous: mpjdev
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: Message Format
Up: mpjdev
Previous: mpjdev
Bryan Carpenter
2003-01-23