The design, implementation, and evaluation of Jade
- 1 May 1998
- journal article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Programming Languages and Systems
- Vol. 20 (3) , 483-545
- https://doi.org/10.1145/291889.291893
Abstract
Jade is a portable, implicitly parallel language designed for exploiting task-level concurrency.Jade programmers start with a program written in a standard serial, imperative language, then use Jade constructs to declare how parts of the program access data. The Jade implementation uses this data access information to automatically extract the concurrency and map the application onto the machine at hand. The resulting parallel execution preserves the semantics of the original serial program. We have implemented Jade as an extension to C, and Jade implementations exist for s hared-memory multiprocessors, homogeneous message-passing machines, and heterogeneous networks of workstations. In this atricle we discuss the design goals and decisions that determined the final form of Jade and present an overview of the Jade implementation. We also present our experience using Jade to implement several complete scientific and engineering applications. We use this experience to evaluate how the different Jade language features were used in practice and how well Jade as a whole supports the process of developing parallel applications. We find that the basic idea of preserving the serial semantics simplifies the program development process, and that the concept of using data access specifications to guide the parallelization offers significant advantages over more traditional control-based approaches. We also find that the Jade data model can interact poorly with concurrency patterns that write disjoint pieces of a single aggregate data structure, although this problem arises in only one of the applications.Keywords
This publication has 19 references indexed in Scilit:
- TreadMarks: shared memory computing on networks of workstationsComputer, 1996
- Low‐energy electron/atom elastic scattering cross sections from 0.1–30 keVScanning, 1995
- Evaluating the basic performance of the Intel iPSC/860 parallel computerConcurrency: Practice and Experience, 1992
- Orca: a language for parallel programming of distributed systemsIEEE Transactions on Software Engineering, 1992
- SPLASHACM SIGARCH Computer Architecture News, 1992
- DDM-a cache-only memory architectureComputer, 1992
- PVM: A framework for parallel distributed computingConcurrency: Practice and Experience, 1990
- Linda in contextCommunications of the ACM, 1989
- MULTILISP: a language for concurrent symbolic computationACM Transactions on Programming Languages and Systems, 1985
- Generative communication in LindaACM Transactions on Programming Languages and Systems, 1985