HPJava SPMD programming Model

<h1>SPMD Programming Model</h1>

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

<p>

A <i>process</i> 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.

<p>

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).

<p>

<b>Next:</b>
<a href="matrix.html"> A Simple Example - Matrix multiplication</a>

