For my Ph.D. thesis I designed and implemented Jade, an implicitly parallel language for coarse-grain parallel computing. Jade has been implemented on shared-memory multiprocessors, message-passing machines, and heterogeneous networks of workstations. Jade programs port without modification between all of these platforms. Jade has been implemented on a wide range of platforms, including (1) shared-memory multiprocessors which include the Encore Multimax, the Silicon Graphics 4D/240S, the Stanford DASH multiprocessor; (2) a distributed memory machine -- the Intel Touchstone, (3) a network of computers including SPARC-based machines from Sun Microsystems, DECStation 3100 and 5000 workstations, and the Silicon Graphics 4D/240S multiprocessor, (4) the Sun Laboratories High Resolution Video (HRV) Workstation, a heterogeneous system consisting of multiple SPARC and Intel i860 processors, and functional units capable of digitizing, processing,and displaying video at up to full HDTV rates. An implementation of Jade is available.
Presents the design, implementation, and evaluation of Jade, a portable, implicitly parallel programming language. 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 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.
Presents our experience using Jade data access declarations to apply locality optimizations.
Presents the integrated synchronization and consistency protocol used in the implementation of Jade. The consistency protocol tags each replica of shared data with a version number. The synchronization algorithm computes the correct version numbers of the replicas of shared data that the computation will access. Because the protocol piggybacks the version number information on the synchronization messages, it generates fewer messages than standard update and invalidate protocols. This paper characterizes the performance impact of the consistency protocol by presenting experimental results for several Jade applications running on the iPSC/860 under several different Jade implementations.
Presents our experience using Jade data access declarations to apply communication optimizations. For our application set replicating data for concurrent read access and improving the locality of the computation by placing tasks close to the data that they access are the most important optimizations. Broadcasting widely accessed data has a significant performance impact on one application; other optimizations such as concurrently fetching remote data and overlapping computation with communication have no effect.
Defines the concept of implicitly synchronized abstract data types and shows how Jade supports their development and use.
Ph.D. Thesis on Jade.
Presents our experience using Jade on a variety of platforms: (1) shared-memory multiprocessors which include the Encore Multimax, the Silicon Graphics 4D/240S, the Stanford DASH multiprocessor; (2) a distributed memory machine -- the Intel Touchstone, (3) a network of computers including SPARC-based machines from Sun Microsystems, DECStation 3100 and 5000 workstations, and the Silicon Graphics 4D/240S multiprocessor, (4) the Sun Laboratories High Resolution Video (HRV) Workstation, a heterogeneous system consisting of multiple SPARC and Intel i860 processors, and functional units capable of digitizing, processing,and displaying video at up to full HDTV rates.
Shows that the Jade parallelization approach is sound.
Presents Jade's support for hierarchical concurrency, in which the computation is structured as a tree of parallel tasks in which each task may create several parallel subtasks.
Introduces the implicitly parallel programming language Jade.