Results 1 
3 of
3
Solving Systems of Linear Equations Functionally: a Case Study in Parallelisation
, 1995
"... This paper describes the development of a parallel, functional algorithm for a realworld 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 si ..."
Abstract

Cited by 2 (2 self)
 Add to MetaCart
This paper describes the development of a parallel, functional algorithm for a realworld 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 differences in communications latency. These demonstrate absolute speedups over the sequential algorithm of 20.12 for 32 processors on a tightlycoupled distributedmemory 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...
Mechanized Reasoning about Concurrent Functional Programs
"... . Various mechanisms have been used for adapting functional languages to parallel machines, ranging from semanticspreserving annotations to concurrent language extensions. Concurrent extensions are applicable to both lazy and strict languages, and give the programmer full control over parallel eva ..."
Abstract
 Add to MetaCart
. Various mechanisms have been used for adapting functional languages to parallel machines, ranging from semanticspreserving annotations to concurrent language extensions. Concurrent extensions are applicable to both lazy and strict languages, and give the programmer full control over parallel evaluation; however, they complicate the proofs of program correctness. This paper pursues the concurrent extension approach to parallel functional programming, and addresses the question of proving parallel programs correct with respect to sequential specifications. The paper presents an extension of a lazy functional language with concurrency primitives, allowing the dynamic creation of processes and pointtopoint interprocess communication. The primitives are given an operational semantics, and an observational equivalence between processes is defined. The equivalence has been implemented in a theorem prover for concurrent functional programs. As an illustration, the derivation of a para...
A Preliminary Case Study in a Methodology for Deriving Parallel Programs Using APMs
"... We present a methodology based on Abstract Parallel Machines (APMs) for deriving an executable parallel program from a highlevel specification. The specification is given initially in mathematical notation and then transformed into a functional specification which is not explicitly parallel. This i ..."
Abstract
 Add to MetaCart
We present a methodology based on Abstract Parallel Machines (APMs) for deriving an executable parallel program from a highlevel specification. The specification is given initially in mathematical notation and then transformed into a functional specification which is not explicitly parallel. This is refined through a sequence of intermediate executable programs in the functional language using equational reasoning. At many of the steps in this process there are decisions which need to be made producing a variety of possible derivation paths, leading to a range of possible implementations. Hence the final implementation can be in a variety of languages and for a variety of programming models and architectures. We illustrate the method with a simple case study: the summation of the columns of a triangular matrix using load balancing to improve performance. We use Haskell in the derivation and C+MPI as the target language, and show the intermediate steps in the derivation and the transfo...