From distributed algorithms to OCCAM programs by successive refinements

Abstract A distributed parallel algorithm is viewed as a collection of message-driven entities that communicate via channels of infinite (unbounded) capacity. Translating such an algorithm into an OCCAM program in such a way that the algorithm's correctness and liveness properties are preserved can be a complex problem, especially in view of the zero-capacity channels offered by the language. We describe a methodology and software environment for performing this property-preserving translation automatically, by use of information provided by the programmer on the algorithm's processing and communication loads and message-buffering requirements. Our proposal is centered around a succession of refinements whereby an initial OCCAM program, written as if channels had infinite capacity, is transformed into an OCCAM program that can be readily executed. The program is modified to accommodate appropriate message buffering and reflect an efficient allocation of tasks to processors. The environment includes software for relatively complex communication operations, as store-and-forward and circuit-switched point-to-point message delivery, and various group communication functions.

[1]  Michael Goldsmith,et al.  Programming in occam 2 , 1985, Prentice Hall international series in computer science.

[2]  Valmir C. Barbosa,et al.  Specification of a communication virtual processor for parallel processing systems , 1988 .

[3]  Nancy A. Lynch,et al.  Hierarchical correctness proofs for distributed algorithms , 1987, PODC '87.

[4]  K. Gunther,et al.  Prevention of Deadlocks in Packet-Switched Data Transport Systems , 1981 .

[5]  Edsger W. Dijkstra,et al.  Guarded commands, nondeterminacy and formal derivation of programs , 1975, Commun. ACM.

[6]  K. Mani Chandy,et al.  Parallel program design - a foundation , 1988 .

[7]  C. A. R. Hoare,et al.  Communicating sequential processes , 1978, CACM.

[8]  William J. Dally,et al.  Deadlock-Free Message Routing in Multiprocessor Interconnection Networks , 1987, IEEE Transactions on Computers.

[9]  Douglas M. Pase,et al.  Intel iPSC concurrent computer , 1987 .

[10]  Adrian Segall,et al.  Distributed network protocols , 1983, IEEE Trans. Inf. Theory.

[11]  D. A. Reed,et al.  Networks for parallel processors: measurements and prognostications , 1988, C3P.

[12]  Dimitri P. Bertsekas,et al.  Data Networks , 1986 .

[13]  J. Hopfield,et al.  Computing with neural circuits: a model. , 1986, Science.

[14]  R. Arlauskas,et al.  iPSC/2 system: a second generation hypercube , 1988, C3P.

[15]  Eli Gafni,et al.  Understanding and verifying distributed algorithms using stratified decomposition , 1988, PODC '88.

[16]  Valmir Carneiro Barbosa,et al.  Strategies for the Prevention of Communication Deadlocks in Distributed Parallel Programs , 1990, IEEE Trans. Software Eng..

[17]  William J. Dally,et al.  Network and processor architecture for message-driven computers , 1990 .

[18]  Mario Gerla,et al.  Flow Control Protocols , 1982 .

[19]  N. Lynch,et al.  DISTRIBUTED ALGORITHMS , Lecture Notes for 6.852 FALL 1992 , 1993 .

[20]  N. Lynch,et al.  A Lattice-Structured Proof Technique Applied to a Minimum Spanning Tree Algorithm , 1988 .

[21]  Amir Pnueli The Temporal Semantics of Concurrent Programs , 1981, Theor. Comput. Sci..

[22]  Baruch Awerbuch Reducing complexities of the distributed max-flow and breadth-first-search algorithms by means of network synchronization , 1985, Networks.

[23]  Baruch Awerbuch,et al.  Complexity of network synchronization , 1985, JACM.