A class library approach to concurrent object-oriented programming with applications to VLSI CAD

Despite increasing availability, the use of parallel platforms in the solution of significant computing problems remains largely restricted to a set of well-structured, numeric applications. This is due in part to the difficulty of parallel application development, which is itself largely the result of a lack of high-level development environments applicable to the majority of extant parallel architectures. This thesis addresses the issue of facilitating the application of parallel platforms to unstructured problems through the use of object-oriented design techniques and the actor model of concurrent computation. We present a multilevel approach to expressing parallelism for unstructured applications: a high-level interface based on the actor and aggregate models of concurrent object-oriented programming, and a low-level interface which provides an object-oriented interface to system services across a wide range of diverse parallel architectures. The interfaces are manifested in the ProperCAD II library, a C++ object library supporting actor concurrency on microprocessor-based parallel architectures and appropriate for applications exhibiting medium-grain parallelism. The interface supports uniprocessors, shared memory multiprocessors, distributed memory multicomputers, and hybrid architectures comprising network-connected clusters of uni- and multiprocessors. The library currently supports workstations from Sun, shared memory multiprocessors from Sun and Encore, distributed memory multicomputers from Intel and Thinking Machines, and hybrid architectures comprising IP network-connected clusters of Sun uni- and multiprocessors. We demonstrate our approach through an examination of the parallelization process for two existing unstructured serial applications drawn from the field of VLSI computer-aided design. We compare and contrast the library-based actor approach to other methods for expressing parallelism in C++.

[1]  Pierre America,et al.  Pool-T: a parallel object-oriented language , 1987 .

[2]  Benjamin W. Wah,et al.  MANIP-2 : A Multicomputer Architecture for Evaluating Logic Programs , 1985, ICPP.

[3]  Anoop Gupta,et al.  The Stanford Dash multiprocessor , 1992, Computer.

[4]  Jeffrey S. Chase,et al.  The Amber system: parallel programming on a network of multiprocessors , 1989, SOSP '89.

[5]  Jenq Kuen Lee,et al.  Object oriented parallel programming: experiments and results , 1991, Proceedings of the 1991 ACM/IEEE Conference on Supercomputing (Supercomputing '91).

[6]  Tassos Markas,et al.  On distributed fault simulation , 1990, Computer.

[7]  Andrew A. Chien,et al.  Concurrent aggregates (CA) , 1990, PPOPP '90.

[8]  Cherri M. Pancake,et al.  Do parallel languages respond to the needs of scientific programmers? , 1990, Computer.

[9]  Gul A. Agha,et al.  ACTORS - a model of concurrent computation in distributed systems , 1985, MIT Press series in artificial intelligence.

[10]  Srinivas Patil,et al.  Parallel algorithms for test generation and fault simulation , 1991 .

[11]  Robert J. Harrison,et al.  Portable tools and applications for parallel computers , 1991 .

[12]  Dennis G. Kafura,et al.  Inheritance in Actor Based Concurrent Object-Oriented Languages , 1989, Comput. J..

[13]  Dennis Kafura,et al.  ACT++: Building a Concurrent C++ with Actors , 1989 .

[14]  Gul A. Agha,et al.  HAL: A High-Level Actor Language and Its Distributed Implementation , 1992, ICPP.

[15]  Vaidy S. Sunderam,et al.  PVM: A Framework for Parallel Distributed Computing , 1990, Concurr. Pract. Exp..

[16]  Laxmikant V. Kalé,et al.  Supporting Machine Independent Programming on Diverse Parallel Architectures , 1991, ICPP.

[17]  P. de Jong,et al.  Compilation into actors , 1986, OOPWORK '86.

[18]  Gul Agha,et al.  ActorSpaces: a model for scalable heterogeneous computing , 1993, [1993] Proceedings of the Twenty-sixth Hawaii International Conference on System Sciences.

[19]  Prabhakar Goel,et al.  An Implicit Enumeration Algorithm to Generate Tests for Combinational Logic Circuits , 1981, IEEE Transactions on Computers.

[20]  Janak H. Patel,et al.  Test generation in a parallel processing environment , 1988, Proceedings 1988 IEEE International Conference on Computer Design: VLSI.

[21]  Andrew W. Appel,et al.  Compiling with Continuations , 1991 .

[22]  Seth Copen Goldstein,et al.  Active messages: a mechanism for integrating communication and computation , 1998, ISCA '98.

[23]  David Bryan,et al.  Combinational profiles of sequential benchmark circuits , 1989, IEEE International Symposium on Circuits and Systems,.

[24]  L.D. Cagan,et al.  Software/parallel processing-Linda on the networks , 1993, IEEE Spectrum.

[25]  David S. Johnson,et al.  Computers and Intractability: A Guide to the Theory of NP-Completeness , 1978 .

[26]  Akinori Yonezawa,et al.  Distributed computing in ABCL/1 , 1987 .

[27]  Narain H. Gehani,et al.  Implementing concurrent C , 1992, Softw. Pract. Exp..

[28]  Chen-Shang Lin,et al.  Parallel sequence fault simulation for synchronous sequential circuits , 1996, J. Electron. Test..

[29]  Gul A. Agha,et al.  Abstraction and modularity mechanisms for concurrent computing , 1993, IEEE Parallel & Distributed Technology: Systems & Applications.

[30]  Ernst G. Ulrich,et al.  Concurrent simulation of nearly identical digital networks , 1973, Computer.

[31]  John S. Conery,et al.  The and/or process model for parallel interpretation of logic programs , 1983 .

[32]  Sunil B. Patil,et al.  A parallel branch and bound approach to test generation , 1990 .

[33]  Andrew A. Chien,et al.  The concert system--compiler and runtime support for efficient, fine-grained concurrent object-oriented programs , 1993 .

[34]  Evangelos P. Markatos,et al.  Using processor affinity in loop scheduling on shared-memory multiprocessors , 1992, Supercomputing '92.

[35]  Cherri M. Pancake,et al.  What users need in parallel tool support: survey results and analysis , 1994, Proceedings of IEEE Scalable High Performance Computing Conference.

[36]  Douglas B. Armstrong,et al.  A Deductive Method for Simulating Faults in Logic Circuits , 1972, IEEE Transactions on Computers.

[37]  Jacques Cohen,et al.  Concurrent object-oriented programming , 1993, CACM.

[38]  James H. Aylor,et al.  Results of a topologically partitioned parallel automatic test pattern generation system on a distributed-memory multiprocessor , 1992, [1992] Proceedings. Fifth Annual IEEE International ASIC Conference and Exhibit.

[39]  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.

[40]  S. Ghosh,et al.  NODIFS: a novel, distributed circuit-partitioning based algorithm for fault simulation of combinational and sequential digital designs on loosely-coupled parallel processors , 1991, Conference Proceedings 1991 IEEE International Conference on Systems, Man, and Cybernetics.

[41]  A. Malony,et al.  Implementing a parallel C++ runtime system for scalable parallel systems , 1993, Supercomputing '93.

[42]  Jacques Ferber,et al.  Actors and agents as reflective concurrent objects: a MERING IV perspective , 1991, IEEE Trans. Syst. Man Cybern..

[43]  Daniel G. Theriault Issues in the Design and Implementation of Act2 , 1983 .

[44]  J. Paul Roth,et al.  Diagnosis of automata failures: a calculus and a method , 1966 .

[45]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[46]  Bernd Mohr,et al.  Performance analysis of pC++: a portable data-parallel programming system for scalable parallel computers , 1994, Proceedings of 8th International Parallel Processing Symposium.

[47]  Henry Lieberman,et al.  Concurrent object-oriented programming in Act 1 , 1987 .

[48]  Jon Postel,et al.  User Datagram Protocol , 1980, RFC.

[49]  Laxmikant V. Kalé,et al.  Information sharing mechanisms in parallel programs , 1994, Proceedings of 8th International Parallel Processing Symposium.

[50]  Bjarne Stroustrup,et al.  The Annotated C++ Reference Manual , 1990 .

[51]  Prithviraj Banerjee,et al.  Reconfiguration and recovery in distributed memory multicomputers , 1994 .

[52]  Thomas Michael Niermann,et al.  Techniques for sequential circuit automatic test generation , 1991 .

[53]  Prithviraj Banerjee,et al.  A portable parallel algorithm for VLSI circuit extraction , 1993, [1993] Proceedings Seventh International Parallel Processing Symposium.

[54]  Laxmikant V. Kalé,et al.  Prioritization in Parallel Symbolic Computing , 1992, Parallel Symbolic Computing.

[55]  Jack Dongarra,et al.  PVM and HeNCE: tools for heterogeneous network computing , 1993 .

[56]  Benjamin W. Wah,et al.  Multiprocessing of Combinatorial Search Problems , 1985, Computer.

[57]  Wu-Tung Cheng,et al.  Differential Fault Simulation - A Fast Method Using Minimal Memory , 1989, 26th ACM/IEEE Design Automation Conference.

[58]  Brian N. Bershad,et al.  PRESTO: A system for object‐oriented parallel programming , 1988, Softw. Pract. Exp..

[59]  Sungho Kim,et al.  Improved Algorithms for Cell Placement and Their Parallel Implementations , 1993 .

[60]  Wooyoung Kim A Linguistic Framework for Dynamic Composition of Dependability Protocols , 1993 .

[61]  Daniel R. Edelson Smart Pointers: They're Smart, But They're Not Pointers , 1992, C++ Conference.

[62]  Monica S. Lam,et al.  Heterogeneous parallel programming in Jade , 1992, Proceedings Supercomputing '92.

[63]  Srinivas Patil,et al.  Performance trade-offs in a parallel test generation/fault simulation environment , 1991, IEEE Trans. Comput. Aided Des. Integr. Circuits Syst..

[64]  Andrew A. Chien,et al.  Concurrent Aggregates: Supporting Modularity in Massively Parallel Programs , 1993 .

[65]  B. Ramkumar,et al.  A dynamic and adaptive quiescence detection algorithmAmitabh , 1993 .

[66]  Nicholas Carriero,et al.  Linda in context , 1989, CACM.

[67]  Prathima Agrawal,et al.  Sequential Circuit Test Generation on a Distributed System , 1993, 30th ACM/IEEE Design Automation Conference.

[68]  Peter A. Buhr,et al.  μC++: Concurrency in the object‐oriented language C++ , 1992, Softw. Pract. Exp..

[69]  Gul A. Agha,et al.  Semantic Considerations in the Actor Paradigm of Concurrent Computation , 1984, Seminar on Concurrency.

[70]  Sundaram Seshu,et al.  On an Improved Diagnosis Program , 1965, IEEE Trans. Electron. Comput..

[71]  Jacob A. Abraham,et al.  Fault simulation in a distributed environment , 1988, 25th ACM/IEEE, Design Automation Conference.Proceedings 1988..

[72]  Vipin Kumar,et al.  Automatic test pattern generation on parallel processors , 1991, Parallel Comput..

[73]  Nicholas Carriero,et al.  How to write parallel programs: a guide to the perplexed , 1989, CSUR.

[74]  Andrew Birrell,et al.  Implementing remote procedure calls , 1984, TOCS.

[75]  Leslie Lamport,et al.  How to Make a Multiprocessor Computer That Correctly Executes Multiprocess Programs , 2016, IEEE Transactions on Computers.

[76]  K. Mani Chandy,et al.  Compositional C++: Compositional Parallel Programming , 1992, LCPC.

[77]  Tom Blank,et al.  Parallel logic simulation on general purpose machines , 1988, 25th ACM/IEEE, Design Automation Conference.Proceedings 1988..

[78]  John R. Corbin The Art of Distributed Applications , 1991, Sun Technical Reference Library.

[79]  Laxmikant V. Kalé,et al.  High level support for divide-and-conquer parallelism , 1991, Proceedings of the 1991 ACM/IEEE Conference on Supercomputing (Supercomputing '91).

[80]  Jesfis Peral,et al.  Heuristics -- intelligent search strategies for computer problem solving , 1984 .

[81]  Janak H. Patel,et al.  Experimental evaluation of testability measures for test generation (logic circuits) , 1989, IEEE Trans. Comput. Aided Des. Integr. Circuits Syst..

[82]  P. Pierce,et al.  The Paragon implementation of the NX message passing interface , 1994, Proceedings of IEEE Scalable High Performance Computing Conference.

[83]  W. Richard Stevens,et al.  TCP/IP Illustrated, Volume 1: The Protocols , 1994 .

[84]  Judea Pearl,et al.  Heuristics : intelligent search strategies for computer problem solving , 1984 .

[85]  Van Jacobson,et al.  Congestion avoidance and control , 1988, SIGCOMM '88.

[86]  Srinivas Patil,et al.  A Parallel Branch and Bound Algorithm for Test Generation , 1989, 26th ACM/IEEE Design Automation Conference.

[87]  Janak H. Patel,et al.  Parallel test generation for sequential circuits on general-purpose multiprocessors , 1991, 28th ACM/IEEE Design Automation Conference.

[88]  Prithviraj Banerjee,et al.  ProperSYN: a portable parallel algorithm for logic synthesis , 1992, ICCAD.

[89]  Anthony P. Reeves,et al.  Paragon: A Parallel Programming Environment for Scientific Applicaitons Using Communication Structures , 1991, J. Parallel Distributed Comput..

[90]  Laxmikant V. Kalé,et al.  Machine Independent AND and OR Parallel Execution of Logic Programs: Part I-The Binding Environment , 1994, IEEE Trans. Parallel Distributed Syst..

[91]  Janak H. Patel,et al.  PROOFS: a fast, memory efficient sequential circuit fault simulator , 1990, 27th ACM/IEEE Design Automation Conference.

[92]  Jacob A. Abraham,et al.  CHIEFS : A Concurrent, Hierarchical and Extensible Fault Simulator , 1985, ITC.

[93]  Jonathan Walpole,et al.  A user-level process package for PVM , 1994, Proceedings of IEEE Scalable High Performance Computing Conference.

[94]  G. Agha An overview of actor languages , 1986, OOPWORK '86.

[95]  Michel Toulouse,et al.  CLAP: an object-oriented programming system for distributed memory parallel machines , 1994, OOPS.

[96]  B.R. Seyfarth,et al.  Glenda: an environment for easy parallel programming , 1994, Proceedings of IEEE Scalable High Performance Computing Conference.

[97]  Gul A. Agha,et al.  A Language Framework for Multi-Object Coordination , 1993, ECOOP.

[98]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[99]  Narain H. Gehani,et al.  Concurrent C++: Concurrent programming with class(es) , 1988, Softw. Pract. Exp..

[100]  Prithviraj Banerjee,et al.  Portable parallel test generation for sequential circuits , 1992, ICCAD.

[101]  Friedemann Mattern,et al.  Global Quiescence Detection Based on Credit Distribution and Recovery , 1989, Inf. Process. Lett..

[102]  Bjarne Stroustrup,et al.  The Design and Evolution of C , 1994 .

[103]  V. Karamcheti,et al.  Concert-efficient runtime support for concurrent object-oriented programming languages on stock hardware , 1993, Supercomputing '93.

[104]  Srinivas Patil,et al.  Fault partitioning issues in an integrated parallel test generation/fault simulation environment , 1989, Proceedings. 'Meeting the Tests of Time'., International Test Conference.

[105]  Prithviraj Banerjee Parallel algorithms for VLSI computer-aided design , 1994 .

[106]  Laxmikant V. Kalé,et al.  Dagger: combining benefits of synchronous and asynchronous communication styles , 1994, Proceedings of 8th International Parallel Processing Symposium.

[107]  Janak H. Patel,et al.  HITEC: a test generation package for sequential circuits , 1991, Proceedings of the European Conference on Design Automation..

[108]  Message Passing Interface Forum MPI: A message - passing interface standard , 1994 .

[109]  Gerald J. Sussman,et al.  Structure and interpretation of computer programs , 1985, Proceedings of the IEEE.

[110]  Timothy G. MATTSONz Parallel Programming Systems for Workstation Clusters , 1993 .

[111]  Laxmikant V. Kalé,et al.  CHARM++: a portable concurrent object oriented system based on C++ , 1993, OOPSLA '93.

[112]  Martin H. Schultz,et al.  Efficient parallel programming with Linda , 1992, Proceedings Supercomputing '92.

[113]  Hideo Fujiwara,et al.  The Complexity of Fault Detection Problems for Combinational Logic Circuits , 1982, IEEE Transactions on Computers.

[114]  Gul A. Agha,et al.  ActorSpace: an open distributed programming paradigm , 1993, PPOPP '93.

[115]  Laxmikant V. Kalé,et al.  The Chare Kernel Parallel Programming Language and System , 1990, ICPP.

[116]  Ewing Lusk,et al.  User''s Guide to the p4 Parallel Programming System , 1992 .

[117]  Prithviraj Banerjee,et al.  ProperCAD: a portable object-oriented parallel environment for VLSI CAD , 1992, Proceedings 1992 IEEE International Conference on Computer Design: VLSI in Computers & Processors.

[118]  Peter de Jong,et al.  Compilation into actors , 1986, OOPWORK.

[119]  Francisco Moura,et al.  Concurrency annotations in C++ , 1994, SIGP.

[120]  Daniel G. Saab,et al.  Portable parallel logic and fault simulation , 1989, 1989 IEEE International Conference on Computer-Aided Design. Digest of Technical Papers.

[121]  Alan Borning,et al.  Classes versus Prototypes in Object-Oriented Languages , 1986, FJCC.

[122]  Andrew S. Grimshaw An Introduction to Parallel Object-Oriented Programming with Mentat , 1991 .

[123]  Janak H. Patel,et al.  Effectiveness of Heuristics Measures for Automatic Test Pattern Generation , 1986, 23rd ACM/IEEE Design Automation Conference.