The HPJava Project


HPJava Home Page
HPspmd lectures
mpiJava
HPJava language

PCRC Home Page

NPAC Home Page



Java Grande Home

SPMD Programming Model

HPJava is a language for SPMD (Single Program, Multiple Data) parallel programming - in particular, for SPMD programming with distributed arrays.

A process is an execution context with a private memory area and instruction pointer (thread of control). The processes involved in an HPJava program may be scheduled on the same physical processor, or distributed over connected computers. In any case, the same HPJava program text is running in every process. The processes interact at points of communication specified explicitly in the program. Any program variable - scalar or array - is owned by an individual process or group of processes; any program statement is executed by an individual process or group of processes, specified implicitly or explicitly.

The language extends ordinary Java with shorthand syntax for describing how arrays are distributed across processes, and how individual tasks in the program are alloted to specific processes. HPJava has no built-in facilities for communication or synchronization between processes. To make it useable, the HPJava compiler must be accompanied by one or more communication libraries. A standard library provides high-level collective functions that operate directly on the distributed arrays of the language. Other communication libraries are available, including a binding of the standard Message Passing Interface (MPI).

Next: A Simple Example - Matrix multiplication


Bryan Carpenter, (dbc@npac.syr.edu). Last updated January 2000.