Accidents always Come in Threes : A Case Study of Data-intensive Programs in Parallel Haskell

Accidents happen: “An invisible car came out of nowhere, struck my vehicle and vanished.” “I pulled away from the side of the road, glanced at my mother-in-law, and headed for the embankment.” “As I approached the intersection a sign suddenly appeared in a place where no stop sign had ever appeared before.” Luckily, we don’t normally have to deal with problems as bizarre as these. One interesting application that does arise at the Centre for Transport Studies consists of matching police reports of several accidents so as to locate accident blackspots. The application provides an interesting, data-intensive, test-bed for the persistent functional language PFL. We report here on an approach aimed at improving the performance of this application using Glasgow Parallel Haskell. The accident application is one of several large parallel Haskell programs under development at Glasgow. Our objective is to achieve wall-clock speedups over the best sequential implementations, and we report modest wallclock speedups for a demonstration program. From experience with these and other programs the group is developing a methodology for parallelising large functional programs. We have also developed strategies, a mechanism to separately specify a function’s algorithm and its dynamic behaviour.

[1]  Robert E. Tarjan,et al.  Efficiency of a Good But Not Linear Set Union Algorithm , 1972, JACM.

[2]  Robert H. Halstead,et al.  MULTILISP: a language for concurrent symbolic computation , 1985, TOPL.

[3]  Geoffrey L. Burn,et al.  Evaluation transformers - a model for the parallel evaluation of functional languages (extended abstract) , 1987, FPCA.

[4]  Paul H. J. Kelly Functional programming for loosely-coupled multiprocessors , 1989, Research monographs in parallel and distributed computing.

[5]  Murray Cole,et al.  Algorithmic Skeletons: Structured Management of Parallel Computation , 1989 .

[6]  Robert H. Halstead,et al.  Lazy task creation: a technique for increasing the granularity of parallel programs , 1990, LISP and Functional Programming.

[7]  Alexandra Poulovassilis,et al.  A Functional Programming Approach to Deductive Databases , 1991, VLDB.

[8]  Colin Runciman,et al.  Profiling Parallel Functional Computations (Without Parallel Machines) , 1993, Functional Programming.

[9]  Alexandra Poulovassilis,et al.  A Domain-theoretic Approach to Integrating Functional and Logic Database Languages , 1993, VLDB.

[10]  Hans-Wolfgang Loidl,et al.  Visualising Granularity in Parallel Programs: A Graphical Winnowing System for Haskell , 1995 .

[11]  Lennart Augustsson,et al.  PH Language Reference Manual, Version 1.0---preliminary , 1995 .

[12]  Hans-Wolfgang Loidl,et al.  Solving Systems of Linear Equations Functionally: a Case Study in Parallelisation , 1995 .

[13]  C. J. Date An Introduction to Database Systems, 6th Edition , 1995 .

[14]  Stephen A. Jarvis,et al.  Profiling Large-Scale Lazy Functional Programs , 1996, J. Funct. Program..

[15]  K. Davis Mpp Parallel Haskell (preliminary Draft) , 1996 .

[16]  L. Harbird,et al.  A functional database system for road accident analysis , 1996 .

[17]  Simon L. Peyton Jones,et al.  GUM: a portable parallel implementation of Haskell , 1996, PLDI '96.

[18]  Guy E. Blelloch,et al.  A provable time and space efficient implementation of NESL , 1996, ICFP '96.

[19]  Cormac Flanagan,et al.  pHluid: the design of a parallel functional language implementation on workstations , 1996, ICFP '96.