Next: Java language Binding
Up: A high level SPMD
Previous: Keywords
In this report, we introduce HPJava language, a programming
language extended from Java for parallel programming on message
passing systems, such as workstation clusters.
Though its name comes directly from HPF[1], HPJava does not
inherit HPF completely. The language introduces a high level SPMD
programming style, HPspmd, which can be summarized as
following,
- Structured SPMD programming The programming language
presented here depends on a well organized process group as control
threads. As in 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.
- Global name space Besides local variables, the language
provides variables associated with data descriptor, offering
a global name space, especially, global addressed array with
different distribute patterns. 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.
The reason we don't follow HPF directly is that during the practice of
compiling HPF[2], ``run-time'' support is emphasized in our
approach, and we found the level of runtime system can be effectively
raised to a programming model. In fact, the new programming style
introduced here is a language independent one, it also can be binded
with other programming languages such as C/C++ and Fortran.
As Java language is simple, elegant, and more promising, we
implemented our prototype based upon this language, and found the
efforts are quite rewarding.
Next: Java language Binding
Up: A high level SPMD
Previous: Keywords
Guansong Zhang
Mon Feb 23 15:47:12 EST 1998