next up previous
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 up previous
Next: Base Language ABCL/f Up: Implementing Parallel Language Constructs Previous: Implementing Parallel Language Constructs
Matt Hurlbut
1998-07-14