Theoretical Computer Science 258 (2001) 233–267 www.elsevier.com/locate/tcs Concrete data structures and functional parallel programming
GaÃetan Hainsa;∗,FrÃedÃeric Loulerguea, John Mullinsb aLIFO, Universiteà d’Orleans,à BP 6759, 45067 Orleansà Cedex 2, France bDGEGI, Ecole Polytechnique, C.P. 6079, Succ. Centre-Ville, Montrealà (Quebec),à Canada H3C 3A7
Received August 1997; revised November 1999 Communicated by P.-L. Curien
Abstract
A framework is presented for designing parallel programming languages whose semantics is functional and where communications are explicit. To this end, Brookes and Geva’s general- ized concrete data structures are specialized with a notion of explicit data layout to yield a CCC of distributed structures called arrays. Arrays’ symmetric replicated structures, suggested by the data-parallel SPMD paradigm, are found to be incompatible with sum types. We then outline a functional language with explicitly distributed (monomorphic) concrete types, including higher-order, sum and recursive ones. In this language, programs can be as large as the network and can observe communication events in other programs. Such =exibility is missing from cur- rent data-parallel languages and amounts to a fusion with their so-called annotations, directives or meta-languages. c 2001 Elsevier Science B.V. All rights reserved.
Keywords: Functional programming; Deterministic parallel programming; Semantic models; Concrete data structures
1. Explicit communications and functional programming
Faced with the mismatch between parallel programming languages and the require- ments of their users, researchers are advocating resource-aware programming tools [13] and programs with measurable utilization of network capacity [22, 25], where control parallelism can be mixed with data parallelism. In this article, we propose semantic models for languages whose programs are explicitly parallel and whose semantics is functional. Such languages address the above-stated requirements by (1) expressing data placement, and hence communications explicitly,