Next: Java language Binding
Up: Structured SPMD programming- Java
Previous: Structured SPMD programming- Java
In this report, we introduce HPJava language, a programming
language extended from Java [1] for parallel processing,
targeting at multi-processor system with distributed memory.
The language introduces a new programming style, called
structured SPMD programming(We will explain more about this
term in section 2.1.4). It can be summarized as
following
,
- Structured SPMD programming The programming language
presented here has a single thread control on a well organized
process group. As a SPMD program, only the data owners are allowed
to share the current control thread when the data items are
accessed. The language offerers special constructs for programs to
achieve this conveniently, at the same time, presents a well defined
loosely synchronization mechanism among the processors.
- Global name space Besides local variables, the language
provides variables associated with data descriptor, a global
name space, especially, global addressed array with different
distribute patterns among processors in a process group. This helps
to relieve programmers of error-prone activities like
local-to-global, global-to-local translations in most data parallel
applications.
- Collective communication Accessing data on different
processors is through a powerful collective communication library
provided with the language. With this library, data parallel
applications may have dead-lock free communication. As in SPMD
style, the language itself does not provide data movement semantics
implicitly. This encourages the programmer to write algorithms that
exploit locality and simplifies the task of compiler writers.
- Hybrid of data and task parallel programming The
language provides constructs facilitating both data parallel and
task parallel programming. Through language constructs, different
processors can not only work simultaneously on global addressed
data, but also execute independently complex procedures on their own
local data. The conversion between these two phases is a seamless
one.
- Flexible for future extension The language itself only
provides basic concepts to organize a group of process grid.
Different communication patterns are implemented as library
functions. This gives the possibility that when ever a new
communication pattern is needed, it is relatively easy to be
integrated.
In fact, the programming style introduced here is language
independent, it can also be binded with other programming
languages like C/C++ and Fortran.
However, we believe in the near future, Java will play a more
important role in the programming world. In addition Java language
itself is simple. So we explain the new language constructs inside
Java language, and implementing our prototype based on it.
Next: Java language Binding
Up: Structured SPMD programming- Java
Previous: Structured SPMD programming- Java
Guansong Zhang
Mon Dec 15 14:11:59 EST 1997