Next: Base Language ABCL/f
Up: Implementing Parallel Language Constructs
Previous: Implementing Parallel Language Constructs
Parallel Languages and Reflection
Practical parallel and distributed programs often have complicated
computation and communication structures for achieving efficiency.
For example, latency hiding--which is an optimization technique for
remote messages--makes programs complicated because a thread of control
must be deliberately `broken up' into multiple process. To alleviate
this complexity, language systems often provide high-level parallel
constructs that support such specific optimization techniques.
However, it is difficult to provide `generic' constructs to cover all
circumstances, since optimizations tend to be specific to
applications or their executing platforms. In addition, implementation of
new constructs in the language requires tremendous effort for
compiler-writers.
A different (and possibly better) approach is to create a simple, yet
extensible language, and provide user-defined constructs as if
built-in. This approach is beneficial not only to language
implementors, but also to users as they can design and build their own
parallel constructs afterwards. Based on this observation, we are
developing a reflective object-oriented concurrent language
ABCL/R3[6], based on ABCL/f[16],
that we provide such extensibility via reflection. The major features
of our meta-level architecture are as follows: (1) Meta-interpreters
provide programming abstractions with which the user can customize
language's syntax and semantics. (2) Meta-objects serve as the
meta-level representations of objects that can be used for defining
customized object behavior. (3) Reflective annotations can be
defined as programming directives to the meta-level, and their
interpretations can be modified by customizing the meta-interpreters.
The technical details of the ABCL/R3 compiler that uses partial
evaluation for compile-time optimization have been presented
elsewhere[6]. In this paper, we describe how
parallel language constructs can be constructed using the
meta-level architecture of ABCL/R3; they include object replication,
latency hiding, termination detection, and user-level scheduling.
The rest of the paper is organized as follows: The basic
(non-reflective) features of ABCL/f are described in Section
2. Then example parallel programs are examined and
discussed
in Section 3. Section 4
presents the meta-level architecture, and the use of the architecture
for parallel programs is described in Section 5.
Section 6 discusses efficient implementation and
related language systems. Finally, Section 7
concludes the paper.
Next: Base Language ABCL/f
Up: Implementing Parallel Language Constructs
Previous: Implementing Parallel Language Constructs
Matt Hurlbut
1998-07-14