Results 11 - 20
of
20
A Parallel Functional Language Compiler for Message-Passing Multicomputers
, 1998
"... The research presented in this thesis is about the design and implementation of Naira, a parallel, parallelising compiler for a rich, purely functional programming language. The source language of the compiler is a subset of Haskell 1.2. The front end of Naira is written entirely in the Haskell subs ..."
Abstract
-
Cited by 4 (2 self)
- Add to MetaCart
The research presented in this thesis is about the design and implementation of Naira, a parallel, parallelising compiler for a rich, purely functional programming language. The source language of the compiler is a subset of Haskell 1.2. The front end of Naira is written entirely in the Haskell subset being compiled. Naira has been successfully parallelised and it is the largest successfully parallelised Haskell program having achieved good absolute speedups on a network of SUN workstations. Having the same basic structure as other production compilers of functional languages, Naira's parallelisation technology should carry forward to other functional language compilers. The back end of Naira is written in C and generates parallel code in the C language which is envisioned to be run on distributed-memory machines. The code generator is based on a novel compilation scheme specified using a restricted form of Milner's ß-calculus which achieves asynchronous communication. We present the f...
Application of a Para-Functional Language to Problems in Computer Algebra
- In HPFC'95 | High Performance Functional Computing
, 1995
"... We describe how a para-functional programming language is applied to implementing parallel computer algebra algorithms on a shared memory multiprocessor. The language we use is pD, a small functional language that we have developed as a high-level programming interface for the parallel computer alge ..."
Abstract
-
Cited by 3 (2 self)
- Add to MetaCart
We describe how a para-functional programming language is applied to implementing parallel computer algebra algorithms on a shared memory multiprocessor. The language we use is pD, a small functional language that we have developed as a high-level programming interface for the parallel computer algebra package PACLIB. pD provides several facilities to express parallel algorithms in a flexible way on different levels of abstraction. The compiler translates a pD program into parallel C code with explicit task creation and synchronization constructs. The implemented para-functional programs perform as efficient as manually coded parallel C programs. 1 Introduction While most computer algebra algorithms [3] are based on the concept of pure functions, real-world computer algebra programs are for performance reasons usually written in a low-level imperative style (typically in C). Consequently, there is little resemblance between the notation in which the mathematical theory is formulated a...
Concurrency in Functional and Logic Programming
, 1995
"... This paper gives an overview of the main streams of research on concurrency in declarative languages and motivates the definition of the new concurrent functional language EDEN. Proceeding from the premise that parallelism should be expressed explicitly we have equipped the language with an explicit ..."
Abstract
-
Cited by 3 (0 self)
- Add to MetaCart
This paper gives an overview of the main streams of research on concurrency in declarative languages and motivates the definition of the new concurrent functional language EDEN. Proceeding from the premise that parallelism should be expressed explicitly we have equipped the language with an explicit representation of processes and process abstractions. It is based on a lazy functional language and offers dynamic creation of processes and communication channels and a safe treatment of nondeterminism. 1. Introduction and Terminology Today the majority of parallel programs is written in imperative languages. This programming paradigm forces the programmer to use low-level constructs for synchronization and interprocess communication and it offers no support for the verification of programs. In contrast to imperative languages, declarative languages have the advantage that programs are able to retain parallelism inherent in the problem specification. Functional and logic programs can be ...
Solving Systems of Linear Equations Functionally: a Case Study in Parallelisation
, 1995
"... 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 si ..."
Abstract
-
Cited by 2 (2 self)
- Add to MetaCart
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 differences 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...
Distributed Memory Implementation of Elliptic Partial Differential Equations in a Dataparallel Functional Language
- in Proceedings of MPPM '95, IEEE Computer
, 1995
"... We show that the numerical solution of partial differential equations can be elegantly and efficiently addressed in a functional language. 1 Two statistical numerical methods are considered. We discuss why current parallel imperative languages are difficult to use and why general (expression paral ..."
Abstract
-
Cited by 2 (2 self)
- Add to MetaCart
We show that the numerical solution of partial differential equations can be elegantly and efficiently addressed in a functional language. 1 Two statistical numerical methods are considered. We discuss why current parallel imperative languages are difficult to use and why general (expression parallel) functional languages are not efficient enough. The key point of our approach is to offer "unique" arrays and some operations on them which allow to handle their elements in parallel, including operations which exchange the partitions of an array between the processors. These operations constitute a deadlock-free high-level way of communication. 1 Introduction Numerical algorithms for distributed memory machines are nowadays usually implemented in some dialect of an imperative language like FORTRAN or C. Such programs consist of a collection of processes which are essentially sequential imperative programs that communicate via message passing. When programming machines with many proces...
Compiler Technology for Parallel Scientific Computation
, 1994
"... There is a need for compiler technology that, given the source program, will generate efficient parallel codes for different architectures with minimal user involvement. Parallel computation is becoming indispensable in solving large-scale problems in science and engineering. Yet, the use of paralle ..."
Abstract
-
Cited by 2 (1 self)
- Add to MetaCart
There is a need for compiler technology that, given the source program, will generate efficient parallel codes for different architectures with minimal user involvement. Parallel computation is becoming indispensable in solving large-scale problems in science and engineering. Yet, the use of parallel computation is limited by the high costs of developing the needed software. To overcome this difficulty we advocate a comprehensive approach to the development of scalable architecture-independent software for scientific computation based on our experience with Equational Programming Language, EPL.
Compiling a Para-Functional Language to Parallel PACLIB C
, 1994
"... We describe the design and implementation of pD, a parallel variant of the small functional language D. In particular, we show the compilation techniques that we apply to translate a pD program with para-functional annotations into statically typed parallel C code that corresponds (with restrictions ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
We describe the design and implementation of pD, a parallel variant of the small functional language D. In particular, we show the compilation techniques that we apply to translate a pD program with para-functional annotations into statically typed parallel C code that corresponds (with restrictions) in structure and quality to a program written by a human programmer. The generated code can be linked with the PACLIB kernel, the multi-processor runtime system for the computer algebra library SACLIB. This allows to develop parallel computer algebra applications in an elegant and efficient manner. Supported by the FWF grant S5302-PHY "Parallel Symbolic Computation". Contents 1 Introduction 4 2 The Pseudo-Functional Core Language 6 2.1 Abstract Syntax : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 6 2.2 Examples : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 7 2.3 Semantic Algebras : : : : : : : : : : : : : : : : : : : : : : : : : : : : :...
Automatic Result Verification by Complete Run-Time Checking of Computations
, 2000
"... Two-Stage Programming (2sp) is an experimental programming language, the first implementation of the Specification-Consistent Coordination Model (SCCM). The SCCM proposes a new, mixed-paradigm (functional/imperative) approach to developing reliable programs based on complete run-time checking of ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
Two-Stage Programming (2sp) is an experimental programming language, the first implementation of the Specification-Consistent Coordination Model (SCCM). The SCCM proposes a new, mixed-paradigm (functional/imperative) approach to developing reliable programs based on complete run-time checking of computations with respect to a given specification. A 2sp program consists of a functional specification and an imperative coordination tightly connected to the specification. The coordination maps the specification to an imperative and possibly parallel/distributed program. Normal termination of a 2sp program execution implies the correctness of the computed results with respect to the specification, for that execution. We present the basic features of the SCCM/2sp, a new message-passing system of 2sp with integrated run-time checking, and a larger case study. We show that 2sp provides: functional specifications, specification-consistent imperative coordinations, automatic run-time ...
Concurrent Programming in Haskell
, 1996
"... In this paper, an extension of the non-strict functional language Haskell [3] is presented. It performs the evaluation of expressions by using multiple threads. The synchronous model and the event interface used are similar to Reppy's CML [11], but in this case we must deal with new factors like non ..."
Abstract
- Add to MetaCart
In this paper, an extension of the non-strict functional language Haskell [3] is presented. It performs the evaluation of expressions by using multiple threads. The synchronous model and the event interface used are similar to Reppy's CML [11], but in this case we must deal with new factors like non-strictness, embedding the synchronous operations into the IO monad. Lazy structures are useful to model the behaviour of processes, in the same way as Hoare's traces in CSP [5]. A great attention is paid to higher-order concurrent abstractions which simplify programmer's work. A prototype implementation has been developed in Yale Haskell. Keywords: Functional Programming, Concurrency, Higher-Order Functions, Synchronous Communication. 1 Introduction Conventional languages are oriented towards an execution model typically sequential, motivated by the Von Neumann architecture. In this model, a program is viewed as a stream of instructions which must be executed one after another affecting a...
Locality Abstractions for Parallel and Distributed Computing
, 1994
"... Temporal and spatial locality are significant concerns in the design and implementation of any realistic parallel or distributed computing system. Temporal locality is concerned with relations among objects that share similar lifetimes and birth dates; spatial locality is concerned with relati ..."
Abstract
- Add to MetaCart
Temporal and spatial locality are significant concerns in the design and implementation of any realistic parallel or distributed computing system. Temporal locality is concerned with relations among objects that share similar lifetimes and birth dates; spatial locality is concerned with relations among objects that share information. Exploiting temporal locality can lead to improved memory behavior; exploiting spatial locality can lead to improved communication behavior. Linguistic, compiler, and runtime support for locality issues is especially important for unstructured symbolic computations in which lifetimes and sharing properties of objects are not readily apparent. Language abstractions for spatial and temporal locality include mechanisms for grouping related threads of contr...

