Currently, there exist diierent approaches to parallelizing a computation at a coarse-grain. One approach is to parallelize a computation by placing compiler declarations in the source code. This approach makes it possible to conceptually separate the code describing a computation from the code (i.e. declarations) describing its parallelization. This approach also makes it possible to explicitly control a computation's parallelization, thereby providing an opportunity to increase the com-putation's performance. However, there are cases when it is not reasonable to expect a desired mechanism for concurrency to be supported by the available, and xed set of declarations, such as when the desired mechanism is highly specialized to a given computation and target architecture. In these cases, the declaration-based approach fails. In this thesis, we demonstrate that metaobject protocols can solve this problem. Under the metaobject protocol approach, a computation is parallelized by marking source code expressions with marks supported by the compiler. Marks, like declarations, are used to separate a computation from its parallelization. When the supported marks can not be used to express a desired mechanism for concurrency, the metaobject protocol is used to incrementally augment the compiler's parallelization strategy to support the desired mechanism. The metaobject protocol is a model of the compiler's parallelization strategy that provides the knowledge necessary to augment the strategy incrementally, without exposing arbitrary or irrelevant implementation details. In order to demonstrate the eeectiveness of the metaobject protocol-based approach, we present Anibus, a metaobject protocol-based compiler. We give several examples of using marks, and of incrementally augmenting Anibus's parallelization strategy. The examples include two implementations of the n-body gravity problem. Acknowledgments There are many people I would like to thank for helping me through this thesis. I would like to thank John Lamping for his patient guidance and his commitment. I would also like to thank Hal Abelson for driving me to do better. Special thanks go to Gregor Kiczales; for over two years he has provided plenty of good advice, opportunities, and feedback; many times without any sort of obligation to do so. Many thanks also go to John, Hal, and Gregor for great feedback on the many drafts of this thesis. I also want to thank Jim des Rivi eres for discussing ideas about the approach to writing this thesis, and for his very careful readings of drafts of this thesis. Also, thanks to their love and their dedication to my well-being have …
[1]
G. Sussman,et al.
Numerical Evidence That the Motion of Pluto Is Chaotic
,
1988,
Science.
[2]
Robert H. Halstead,et al.
MULTILISP: a language for concurrent symbolic computation
,
1985,
TOPL.
[3]
Inmos Corp,et al.
Occam Programming Manual
,
1984
.
[4]
C. A. R. Hoare,et al.
Communicating sequential processes
,
1978,
CACM.
[5]
Monica S. Lam,et al.
Coarse-grain parallel programming in Jade
,
1991,
PPOPP '91.
[6]
Pete Tinker,et al.
Parallel execution of sequential scheme with ParaTran
,
1988,
LISP and Functional Programming.
[7]
Marina C. Chen.
A parallel language and its compilation to multiprocessor machines or VLSI
,
1986,
POPL '86.
[8]
D. K. Gifford,et al.
FX-87 PERFORMANCE MEASUREMENTS: DATAFLOW IMPLEMENTATION
,
1988
.
[9]
Daniel G. Bobrow,et al.
Book review: The Art of the MetaObject Protocol By Gregor Kiczales, Jim des Rivieres, Daniel G. and Bobrow(MIT Press, 1991)
,
1991,
SGAR.
[10]
David R. Jefferson,et al.
Virtual time
,
1985,
ICPP.
[11]
Joannes M. Lucassen.
Types and Effects Towards the Integration of Functional and Imperative Programming.
,
1987
.
[12]
Charles Koelbel,et al.
Supporting shared data structures on distributed memory architectures
,
1990,
PPOPP '90.
[13]
Young-il Choo,et al.
Parallel-program transformation using a metalanguage
,
1991,
PPOPP '91.