Papers by Andrew Partridge

This paper describes the development of a parallel, functional algorithm for a real-world compute... more This paper describes the development of a parallel, functional algorithm for a real-world computer algebra problem: solving a system of linear equations. The program was developed using our GranSim simulator for parallel Haskell, which is based on the Glasgow Haskell Compiler. We provide concrete simulation results for a variety of machine architectures characterised by diierences in communications latency. These demonstrate absolute speedups over the sequential algorithm of 20.12 for 32 processors on a tightly-coupled distributed-memory machine, similar to our GRIP multiprocessor. Comparisons are also given with the same program executed on the physical GRIP machine, and with a previously produced imperative version. While the functional program exploits parallelism better (and so is more scalable), absolute performance is (sadly) still better for the imperative program. 1 Introduction In the imperative world, novel algorithms are often embedded into special purpose solutions for s...

The usual technique for extracting parallelism from lazy functional languages is to use strictnes... more The usual technique for extracting parallelism from lazy functional languages is to use strictness analysis to annotate function applications that can safely be performed as call-by-value. However, practical strictness analyses can only find partial strictness information about some programs. Speculative evaluation can gain parallelism in the presence of incomplete strictness information by creating a task to evaluate the argument of some applications in parallel with evaluation of the function, before it is known whether the value of the argument is eventually going to be needed. This thesis presents a scheme for adding speculative evaluation to the parallel implementation of lazy functional languages. Speculative tasks are assigned scheduling priorities to prevent them from hogging processing and memory resources. Simulation results demonstrate the effectiveness of the scheme in a shared-memory system. Implementation of speculative evaluation on distributed systems is also described, including a load distribution algorithm that deals with tasks according to their scheduling priorities. The performance of speculative evaluation on distributed systems remains an open research topic.
To take advantage of distributed-memory parallel machines it is essential to have good control of... more To take advantage of distributed-memory parallel machines it is essential to have good control of task granularity. This paper describes a fairly accurate parallel simulator for Haskell, based on the Glasgow compiler, and complementary tools for visualising task granularities. ...
Workshops in Computing, 1995
To take advantage of distributed-memory parallel machines it is essential to have good control of... more To take advantage of distributed-memory parallel machines it is essential to have good control of task granularity. This paper describes a fairly accurate parallel simulator for Haskell, based on the Glasgow compiler, and complementary tools for visualising task granularities. Together these tools allow us to study the effects of various annotations on task granularity on a variety of simulated parallel architectures. They also provide a more precise tool for the study of parallel execution than has previously been available for Haskell programs.
System Sciences, 1989. Vol. II: …, 1989
A scheme for adding speculative evaluation to the distributed implementation of a lazy functional... more A scheme for adding speculative evaluation to the distributed implementation of a lazy functional language is presented. The scheme assigns reduced scheduling priorities to speculative computations to prevent them from overwhelming processing resources or altering the program's semantics. Scheduling priorities are dynamically adjusted during execution as speculative computations are found to be needed. By terminating computations associated with reclaimed pieces of graph, a distributed reference counting algorithm can ...
Proc. 6th. Intl. Workshop on Implementation of Functional Languages, Glauert JRW (ed.), University of East Anglia,(September 1994), 1994
At Glasgow our research into parallel functional programming has been moving away from our novel ... more At Glasgow our research into parallel functional programming has been moving away from our novel architecture, GRIP towards the provision of a general parallel runtime environment. We call this GRAPH (Graph Reduction for an Assortment of Parallel Hardware).
This paper describes the development of a parallel, functional algorithm for a real-world compute... more This paper describes the development of a parallel, functional algorithm for a real-world computer algebra problem: solving a system of linear equations. The program was developed using our GranSim simulator for parallel Haskell, which is based on the Glasgow Haskell Compiler. We provide concrete simulation results for a variety of machine architectures characterised by di erences in communications latency. These demonstrate absolute speedups over the sequential algorithm of 20.12 for 32 processors on a tightly- ...
Proceedings of the …, May 1, 1996
GUM is a portable, parallel implementation of the Haskell functional language. Despite sustained ... more GUM is a portable, parallel implementation of the Haskell functional language. Despite sustained research interest in parallel functional programming, GUM is one of the first such systems to be made publicly available. GUM is message-based, and portability is facilitated by using the PVM communications harness that is available on many multi-processors. As a result, GUM is available for both shared-memory (Sun SPARCserver multiprocessors) and distributed-memory (networks of workstations) architectures. The ...
HPFC, Apr 1, 1995
To take advantage of distributed-memory parallel machines it is essential to have good control of... more To take advantage of distributed-memory parallel machines it is essential to have good control of task granularity. This paper describes a fairly accurate parallel simulator for Haskell, based on the Glasgow compiler, and complementary tools for visualising task granularities. ...
Journal of Functional Programming, 1996
Abstract A combinator-based parser is a parser constructed directly from a BNF grammar, using hig... more Abstract A combinator-based parser is a parser constructed directly from a BNF grammar, using higher-order functions (combinators) to model the alternative and sequencing operations of BNF. This paper describes a method for constructing parser combinators that can be used ...
Uploads
Papers by Andrew Partridge