HPJava Home Page

HPJava language
SC '02 demo

Project flier

Java HPC Course
HPspmd lectures

Community Grids
Bloomington photos

Java Grande Home
Numerics working group


Viewing these pages

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 a single Java Virtual Machine with its private memory area and local threads of control. Currently, the part of an HPJava program that uses the special syntax of HPJava is limited to running in a single Java thread within that JVM (although this is by no means an essential limitation of the HPJava language itself).

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.

From now on the terms process and processor will be used interchangeably when discussing the HPJava language. The mapping of HPJava processes to physical processors is considered to be a "run-time" issue.

The language extends ordinary Java with 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 useful, 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: An Example - Matrix multiplication

Bryan Carpenter, (dbc@ecs.soton.ac.uk). Last updated May 2007.