## How Much Non-strictness do Lenient Programs Require? (1995)

Venue: | In Conf. on Func. Prog. Languages and Computer Architecture |

Citations: | 3 - 0 self |

### BibTeX

@INPROCEEDINGS{Schauser95howmuch,

author = {Klaus E. Schauser and Seth C. Goldstein},

title = {How Much Non-strictness do Lenient Programs Require?},

booktitle = {In Conf. on Func. Prog. Languages and Computer Architecture},

year = {1995},

pages = {21622--5},

publisher = {ACM Press}

}

### OpenURL

### Abstract

Lenient languages, such as Id90, have been touted as among the best functional languages for massively parallel machines [AHN88]. Lenient evaluation combines non-strict semantics with eager evaluation [Tra91]. Non-strictness gives these languages more expressive power than strict semantics, while eager evaluation ensures the highest degree of parallelism. Unfortunately, non-strictness incurs a large overhead, as it requires dynamic scheduling and synchronization. As a result, many powerful program analysis techniques have been developed to statically determine when non-strictness is not required [CPJ85, Tra91, Sch94]. This paper studies a large set of lenient programs and quantifies the degree of non-strictness they require. We identify several forms of non-strictness, including functional, conditional, and data structure non-strictness. Surprisingly, most Id90 programs require neither functional nor conditional non-strictness. Many benchmark programs, however, make use of a limited fo...

### Citations

537 |
S.: The Implementation of Functional Programming Languages
- Jones
- 1987
(Show Context)
Citation Context ...st for context switching. Much research has been devoted to analysis techniques that determine when the full generality of non-strictness is not required. These techniques include strictness analysis =-=[Pey87]-=-, backwards analysis [Hug88b], path analysis [BH87], and partitioning [Tra91, SCvE91, HDGS91]. For lenient languages the compilation approach is to schedule instructions statically into sequential thr... |

288 | Why functional programming matters - Hughes - 1989 |

229 | I-structures: data structures for parallel computing. Acm trans. program. lang
- Arvind, Rishiyur, et al.
- 1989
(Show Context)
Citation Context ...l, the elements of the array have to be defined completely within the array comprehension. This ensures that referential transparency is preserved. Because this is not sufficient for certain problems =-=[ANP87]-=-, Id90 also provides two non-functional data structures, Istructures [ANP89] and M-structures [BNA91]. I-structures are write-once data structures which separate the creation of the structure from the... |

134 | On the expressive power of programming languages
- Felleisen
- 1991
(Show Context)
Citation Context ... that the translation of a program which uses non-strictness into a strict equivalent may require a global reorganization of the entire program; a more formal definition of expressiveness is given in =-=[Fel91]-=-. Non-strictness, as present in lenient and lazy evaluation, significantly increases expressiveness: The programmer can create circular data structures and define data structures recursively in terms ... |

79 | Using circular programs to eliminate multiple traversals of data - Bird - 1984 |

74 | Attribute grammars as a functional programming paradigm - Johnsson - 1987 |

66 |
Backwards analysis of functional programs
- Hughes
- 1988
(Show Context)
Citation Context ...ch research has been devoted to analysis techniques that determine when the full generality of non-strictness is not required. These techniques include strictness analysis [Pey87], backwards analysis =-=[Hug88b]-=-, path analysis [BH87], and partitioning [Tra91, SCvE91, HDGS91]. For lenient languages the compilation approach is to schedule instructions statically into sequential threads and have dynamic schedul... |

60 |
A compiler controlled Threaded Abstract Machine
- TAM
- 1993
(Show Context)
Citation Context ...piler uses a front-end developed at MIT [Tra86] which produces dataflow graphs. The back-end partitions these dataflow graphs into threads and then generates code for TAM, a Threaded Abstract Machine =-=[CGSvE93]. The TAM -=-code is then translated to the target machine. Our translation path uses C as a portable "intermediate form" and produces code for the CM-5 as well as for various standard sequential machine... |

58 | Compiler-controlled multithreading for lenient parallel languages
- Schauser
- 1991
(Show Context)
Citation Context ...b] FT ms 356 NAS benchmark FT (M-structures) [SB93b] Small examples KT-cond 5 Traub's non-strict conditional [Tra91] Two 5 Non-strict function with two results [SCG95] Cube 6 Non-strict cube function =-=[SCvE91]-=- Flat 17 Flatten leaves of tree [Nik91] Fib 3 Doubly recursive Fibonacci Fib lazy 5 Infinite list of Fibonacci numbers Fib lenient 6 Finite list of Fibonacci numbers Fib strict 5 Fibonacci using linea... |

48 |
The Parallel Programming Language Id and Its Compilation for Parallel Machines
- Nikhil
- 1993
(Show Context)
Citation Context ...uments in parallel. In addition, lenient evaluation can exploit producer-consumer parallelism. Consider the function flat which produces a list of the leaves of a binary tree using accumulation lists =-=[Nik91]-=-. def flat tree acc = if (leaf tree) then (cons tree acc) else flat (left tree) (flat (right tree) acc); This example does not require non-strictness; therefore it can be executed with any of the thre... |

45 | Id (version 90.0) Reference Manual - Nikhil - 1990 |

40 |
A compiler for the MIT tagged-token dataflow architecture
- Traub
- 1986
(Show Context)
Citation Context ... ensure the correct order of execution. 4.2 Compilation Framework The programs were all compiled using the Id90 compiler with the Berkeley TAM back-end. The compiler uses a front-end developed at MIT =-=[Tra86]-=- which produces dataflow graphs. The back-end partitions these dataflow graphs into threads and then generates code for TAM, a Threaded Abstract Machine [CGSvE93]. The TAM code is then translated to t... |

33 | Strictness analysis --- a practical approach - Clack, Jones - 1985 |

20 |
Future scientific programming on parallel machines
- Arvind, Ekanadham
- 1988
(Show Context)
Citation Context ...lic computing, NAS parallel benchmarks, and small kernels. Most of the programs fall into the catagory of scientific computing, the area specifically targeted by the implicitly parallel language Id90 =-=[AE88]-=-. Most of the programs contain many conditionals and function calls and exhibit fine-grained behavior (e.g., Quicksort), while programs such as the blocked matrix multiply are more medium-grained [SGS... |

19 | Separation constraint partitioning -- A new algorithm for partitioning non-strict programs into sequential threads
- Schauser, Culler, et al.
(Show Context)
Citation Context ...m the results of a function invocation to its arguments. To illustrate this form of non-strictness and the need for dynamic scheduling we use the following simple, but somewhat contrived, computation =-=[SCG95]-=-. 5 def two x y = (x*x, y+y); def g z = -- a,b = (two z a) in b; def h z = -- a,b = (two b z) in a; In this example, the function two takes two arguments, x and y, and returns two results, xsx and y +... |

17 |
Implementation of Non-Strict Functional Programming Languages
- Traub
- 1991
(Show Context)
Citation Context ...enient languages, such as Id90, have been touted as among the best functional languages for massively parallel machines [AHN88]. Lenient evaluation combines non-strict semantics with eager evaluation =-=[Tra91]-=-. Non-strictness gives these languages more expressive power than strict semantics, while eager evaluation ensures the highest degree of parallelism. Unfortunately, non-strictness incurs a large overh... |

16 |
Pomset interpretations of parallel functional programs
- Hudak, Anderson
- 1987
(Show Context)
Citation Context ...ictness more expressiveness non-strictness Figure 2: Expressiveness of the three evaluation strategies. 2.2.2 Parallelism The evaluation strategy can have a strong impact on the amount of parallelism =-=[HA87]-=-. Lenient evaluation results in the largest amount of parallelism, while lazy evaluation shows the least amount of parallelism [Tre94]. Lazy evaluation needs to show that an argument is actually requi... |

15 |
Path semantics
- Bloss, Hudak
(Show Context)
Citation Context ...oted to analysis techniques that determine when the full generality of non-strictness is not required. These techniques include strictness analysis [Pey87], backwards analysis [Hug88b], path analysis =-=[BH87]-=-, and partitioning [Tra91, SCvE91, HDGS91]. For lenient languages the compilation approach is to schedule instructions statically into sequential threads and have dynamic scheduling only between threa... |

15 |
Ramakrishnan I. Small domains spell fast strictness analysis
- Sekar, Pawagi
- 1990
(Show Context)
Citation Context ...85 Enumerate isomers of paraffins [AHN88] Primes filter 40 Generate primes by filtering [Hel89] Primes sieve 50 Primes using sieve of Eratosthenes [Tre94] Compresspath 89 Recursive doubling algorithm =-=[SPR90]-=- N-Queens 66 N-queens problem (using circular lists) [All93] NQ Solutions 66 Number of N-queens solutions [All93] Permutations 57 Generate permutations of sets of elements (using circular structure) [... |

13 |
Compiling Lenient Languages for Parallel Asynchronous Execution
- Schauser
- 1995
(Show Context)
Citation Context ...statically and ordered into threads is called partitioning [Tra91]. Two operations can be placed into the same thread only if the compiler can statically determine the order in which they execute. In =-=[Sch94]-=- we presented a new thread partitioning algorithm, separation constraint partitioning, which improves substantially on previous work [Tra91, HDGS91, SCvE91]. To evaluate our partitioning algorithm, we... |

12 |
Programming Generality and Parallel Computers
- Arvind, Nikhil
- 1988
(Show Context)
Citation Context ...sity of California, Berkeley Berkeley, CA 94720 sethg@cs.berkeley.edu Abstract Lenient languages, such as Id90, have been touted as among the best functional languages for massively parallel machines =-=[AHN88]-=-. Lenient evaluation combines non-strict semantics with eager evaluation [Tra91]. Non-strictness gives these languages more expressive power than strict semantics, while eager evaluation ensures the h... |

11 | Compile-time partitioning of a non-strict language into sequential threads - Hoch, Davenport, et al. - 1991 |

8 |
A parallel intermediate language
- PTAC
(Show Context)
Citation Context ... shows the duality between conditionals and function calls made through function variables. A conditional can be viewed as a call site, where one of two functions is called depending on the predicate =-=[AA89]-=-. These two functions contain the code of the then side and else side of the conditional, respectively. 3.3 Data Structure Non-strictness In non-strict languages, data structure constructors exhibit t... |

8 |
Efficient lazy data-structures on a dataflow machine
- Heller
- 1989
(Show Context)
Citation Context ...n provides the control structure to handle infinite data structures, as long as only a finite part is accessed. Using explicit delays, programmers can obtain the same benefit under lenient evaluation =-=[Hel89]-=-. infinite structures Strict evaluation circular structures Lazy evaluation Lenient evaluation non-strictness more expressiveness non-strictness Figure 2: Expressiveness of the three evaluation strate... |

8 |
Parallel Implementation of Lazy Functional Languages Using Abstract Demand Propagation
- Tremblay
- 1994
(Show Context)
Citation Context ...ion strategy can have a strong impact on the amount of parallelism [HA87]. Lenient evaluation results in the largest amount of parallelism, while lazy evaluation shows the least amount of parallelism =-=[Tre94]-=-. Lazy evaluation needs to show that an argument is actually required for the final answer before starting its evaluation, while strict and lenient evaluation can always evaluate independent arguments... |

6 | Lazy dynamic-programming can be eager - Allison - 1992 |

6 |
Parallel Language Support for Shared memory multiprocessors
- Sah
- 1991
(Show Context)
Citation Context ... Biology [HFA + 94] Gamteb 649 Monte Carlo neutron transport [BCS + 89] MCNP 2351 Monte Carlo photon transport [HL93] Simple 1105 Hydrodynamics and heat conduction [AE88] Speech 172 Speech processing =-=[Sah91]-=- DTW 100 Dynamic time warp [Sah91] MM 74 Matrix multiply [HCAA93] MMT44 118 Blocked matrix multiply test [CGSvE93] Eigen3 151 Eigen problem Householder 304 Householder Eigen-Solver [SB93a] Jacobi 215 ... |

5 | Analysis of Non-Strict Functional Implementations of the Dongarra-Sorensen Eigensolver
- Sur, Bohm
- 1994
(Show Context)
Citation Context ... processing [Sah91] DTW 100 Dynamic time warp [Sah91] MM 74 Matrix multiply [HCAA93] MMT44 118 Blocked matrix multiply test [CGSvE93] Eigen3 151 Eigen problem Householder 304 Householder Eigen-Solver =-=[SB93a]-=- Jacobi 215 Jacobi Eigen-Solver [BH93] Jacobi group 162 Jacobi Eigen-Solver (group rotations) [BH93] FT fu 370 NAS benchmark FT (functional) [SB93b] FT is 333 NAS benchmark FT (I-structures) [SB93b] F... |

4 |
Extending a parallel, non-strict, functional language with state
- M-structures
- 1991
(Show Context)
Citation Context ...es that referential transparency is preserved. Because this is not sufficient for certain problems [ANP87], Id90 also provides two non-functional data structures, Istructures [ANP89] and M-structures =-=[BNA91]-=-. I-structures are write-once data structures which separate the creation of the structure from the definition of its 1 Parallel Haskell (pH), an ongoing development which integrates many concepts of ... |

3 | An Overview of the Parallel Language Id - A Foundation for pH, a Parallel Dialect of Haskell
- Nikhil
- 1994
(Show Context)
Citation Context ...sed on lenient evaluation. referentially transparent Functional core determinate M-structures I-structures determinate more expressive power simpler semantics Figure 1: The three layers of Id90 (from =-=[Nik93]-=-). elements. Like functional arrays, I-structures provide efficient indexed access to the individual elements. In addition, I-structures provide element-by-element synchronization between the producer... |

2 |
Application of recursively defined data structures
- Allison
- 1993
(Show Context)
Citation Context ...enerate primes by filtering [Hel89] Primes sieve 50 Primes using sieve of Eratosthenes [Tre94] Compresspath 89 Recursive doubling algorithm [SPR90] N-Queens 66 N-queens problem (using circular lists) =-=[All93]-=- NQ Solutions 66 Number of N-queens solutions [All93] Permutations 57 Generate permutations of sets of elements (using circular structure) [All93] Id Compiler 38919 Id in Id compiler Id Interpreter 74... |

2 | Functional Implementations of the Jacobi Eigen-Solver
- Bohm, Hiromoto
- 1993
(Show Context)
Citation Context ...e warp [Sah91] MM 74 Matrix multiply [HCAA93] MMT44 118 Blocked matrix multiply test [CGSvE93] Eigen3 151 Eigen problem Householder 304 Householder Eigen-Solver [SB93a] Jacobi 215 Jacobi Eigen-Solver =-=[BH93]-=- Jacobi group 162 Jacobi Eigen-Solver (group rotations) [BH93] FT fu 370 NAS benchmark FT (functional) [SB93b] FT is 333 NAS benchmark FT (I-structures) [SB93b] FT ms 356 NAS benchmark FT (M-structure... |

1 |
Implementation of a Threaded Abstract
- Goldstein
- 1994
(Show Context)
Citation Context ...The TAM code is then translated to the target machine. Our translation path uses C as a portable "intermediate form" and produces code for the CM-5 as well as for various standard sequential=-= machines [Gol94]-=-. For the experiments performed in this paper we limit ourselves to sequential execution on a SparcStation 10. As we have explained, the compiler has been extended with options to treat function calls... |

1 |
MCNP-ID --- A Dataflow Photon Transport Code. LANL
- Hammes, Lubeck
- 1993
(Show Context)
Citation Context ...cientific computation Wavefront 40 Simple wavefront SOR [ANP89] Pseudoknot 3323 Molecular Biology [HFA + 94] Gamteb 649 Monte Carlo neutron transport [BCS + 89] MCNP 2351 Monte Carlo photon transport =-=[HL93]-=- Simple 1105 Hydrodynamics and heat conduction [AE88] Speech 172 Speech processing [Sah91] DTW 100 Dynamic time warp [Sah91] MM 74 Matrix multiply [HCAA93] MMT44 118 Blocked matrix multiply test [CGSv... |

1 | Efficient Declarative Programs: Experience in Implementing NAS Benchmark FT
- Sur, Bohm
- 1993
(Show Context)
Citation Context ...en problem Householder 304 Householder Eigen-Solver [SB93a] Jacobi 215 Jacobi Eigen-Solver [BH93] Jacobi group 162 Jacobi Eigen-Solver (group rotations) [BH93] FT fu 370 NAS benchmark FT (functional) =-=[SB93b]-=- FT is 333 NAS benchmark FT (I-structures) [SB93b] FT ms 356 NAS benchmark FT (M-structures) [SB93b] Small examples KT-cond 5 Traub's non-strict conditional [Tra91] Two 5 Non-strict function with two ... |

1 |
NAS parallel benchmark integer sort (IS) performance on MINT
- Sur, Bohm
- 1993
(Show Context)
Citation Context ... Id in Id compiler Id Interpreter 740 Top level Id interpreter Quicksort 55 Quick sort on lists [CSS + 91] Arraysort 75 Selection sort on arrays [CSS + 91] Bitonicsort 142 Bitonic sort (M-structures) =-=[SB93c]-=- Bubblesort 67 Bubble sort (M-structures) [SB93c] Heapsort IS 128 Heap sort (I-structures) [SB93c] Heapsort MS 123 Heap sort (M-structures) [SB93c] Quicksort IS 124 Quick sort (I-structures) [SB93c] Q... |