Results 1 -
7 of
7
Nested Algorithmic Skeletons from Higher Order Functions
, 2000
"... Algorithmic skeletons provide a promising basis for the automatic utilisation of parallelism at sites of higher-order function use through static program analysis. However, decisions about whether or not to realise particular higher-order function instances as skeletons must be based on informati ..."
Abstract
-
Cited by 25 (12 self)
- Add to MetaCart
Algorithmic skeletons provide a promising basis for the automatic utilisation of parallelism at sites of higher-order function use through static program analysis. However, decisions about whether or not to realise particular higher-order function instances as skeletons must be based on information about available processing resources, and such resources may change subsequent to program analysis. In principle, nested higher-order functions may be realised as nested skeletons. However, where higher-order function arguments result from partially applied functions, free-variable bindings must be identified and communicated through the corresponding skeleton hierarchy to where those arguments are actually applied. Here, a skeleton based parallelising compiler from Standard ML to native code is presented. Hybrid skeletons, which can change from parallel to serial evaluation at run-time, are considered and mechanisms for their nesting are discussed. Compilation stages are illustra...
Exploiting Parallelism In Functional Languages: A "Paradigm-Oriented" Approach
- BOOK CHAPTER
, 1995
"... Deriving parallelism automatically from functional programs is simple in theory but very few practical implementations have been realised. Programs may contain too little or too much parallelism causing a degradation in performance. Such parallelism could be more efficiently controlled if parallel a ..."
Abstract
-
Cited by 22 (6 self)
- Add to MetaCart
Deriving parallelism automatically from functional programs is simple in theory but very few practical implementations have been realised. Programs may contain too little or too much parallelism causing a degradation in performance. Such parallelism could be more efficiently controlled if parallel algorithmic structures (or skeletons) are used in the design of algorithms. A structure captures the behaviour of a parallel programming paradigm and acts as a template in the design of an algorithm. This paper presents some important parallel programming paradigms and defines a structure for each of these paradigms. The iterative transformation paradigm (or geometric parallelism) is discussed in detail and a framework under which programs can be developed and transformed into efficient and portable implementations is presented.
In recent years, there has been a st...
The Performance of Parallel Algorithmic Skeletons
, 1995
"... Several authors have proposed the use of algorithmic skeletons as a highlevel, machine-independent means of developing parallel programs. This paper addresses the question of modelling the performance of such skeletons. The execution time for a skeleton is presented as a generic higher order complex ..."
Abstract
-
Cited by 10 (4 self)
- Add to MetaCart
Several authors have proposed the use of algorithmic skeletons as a highlevel, machine-independent means of developing parallel programs. This paper addresses the question of modelling the performance of such skeletons. The execution time for a skeleton is presented as a generic higher order complexity function. Instantiation of the skeletion with a specific set of functional parameters enables the time complexity of the particular application to be derived. The approach is illustrated by examples based on existing special purpose languages for image processing, and is extended to analyse the scalability of skeleton-based applications, using isoefficiency functions. 1. Introduction Parallel programming is widely regarded as a complex, machine-dependent and timeconsuming task. This perceived difficulty has hindered the more widespread use of parallel computer systems. Several high-level parallel programming approaches have arisen to meet this challenge, such as [1, 2]. These abstract f...
A Parallel Programming Methodology Based on Paradigms
- In Transputer and Occam Developments
, 1995
"... Today's efforts are mainly concentrated on providing "standard" parallel languages to ensure the portability of programs across various architectures. It is now believed that the next level of abstraction that will be addressed is the application level. This paper argues that there is an intermediat ..."
Abstract
-
Cited by 9 (3 self)
- Add to MetaCart
Today's efforts are mainly concentrated on providing "standard" parallel languages to ensure the portability of programs across various architectures. It is now believed that the next level of abstraction that will be addressed is the application level. This paper argues that there is an intermediate level that consist of common parallel programming paradigms. It describes some of these paradigms and explains the basic principles behind a "paradigm-oriented" programming approach. Finally, it points to future directions which can make it feasible to build parallel CASE tools that achieve automatic parallel code generation. 1 Introduction This paper is concerned the process of developing portable applications that are suitable for general purpose parallel computers. Until very recently, the most efficient way to develop efficient code has been to program directly at the machine code level. Efforts have been made in order to provide a higher abstraction level without a significant loss i...
Transformational Derivation of (parallel) Programs Using Skeletons
- Katholieke Universiteit Nijmegen
"... We describe a framework for the derivation of programs for arbitrary (in particular, parallel) architectures, motivated by a generalization of the derivation process for sequential algorithms. The central concept in this approach is that of a skeleton: on the one hand, a higher-order function for ta ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
We describe a framework for the derivation of programs for arbitrary (in particular, parallel) architectures, motivated by a generalization of the derivation process for sequential algorithms. The central concept in this approach is that of a skeleton: on the one hand, a higher-order function for targeting transformational derivations at, on the other hand representing an elementary computation on the architecture aimed at. Skeletons thus form a basis for intermediate languages, that can be implemented once and for all, as a process separate from individual program developments. The available knowledge on the derivation of (higher-order) functional programs can be used for deriving parallel ones. This paper presents an overview of the method, illustrated with an example (trapezoidal rule on SIMD processor array), and ideas for future research. 1 Introduction and overview The introduction of various computer networks and parallel computers in recent years has led to a large increase in...
Engineering a Parallel Compiler for Standard ML
- In Proceedings of the 10th International Workshop on Implementations of Functional Language
, 1998
"... . We present the design and partial implementation of an automated parallelising compiler for Standard ML using algorithmic skeletons. Source programs are parsed and elaborated using the ML Kit compiler and a small set of higher order functions are automatically detected and replaced with parallel e ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
. We present the design and partial implementation of an automated parallelising compiler for Standard ML using algorithmic skeletons. Source programs are parsed and elaborated using the ML Kit compiler and a small set of higher order functions are automatically detected and replaced with parallel equivalents. Without the presence of performance predictions, the compiler simply instantiates all instances of the known HOFs with parallel equivalents. The resulting SML program is then output as Objective Caml and compiled with the parallel skeleton harnesses giving an executable which runs on networks of workstations. The parallel harnesses are implemented in C with MPI providing the communications subsystem. A substantial parallel exemplar is presented, an implementation of the Canny edge tracking algorithm from computer vision which is parallelised by implementing the map skeleton over a set of subimages. 1 Introduction We are investigating the development of a fully automatic parallel...
Constructive Communication in MP
- Dept. of Computing, Imperial College, Research
, 1992
"... MP is a programming environment for message passing parallel computers. The paper describes the basic set of communication primitives provided by MP and paper describes the basic set of communication primitives provided by MP and demonstrates how higher level communication operations such as symmetr ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
MP is a programming environment for message passing parallel computers. The paper describes the basic set of communication primitives provided by MP and paper describes the basic set of communication primitives provided by MP and demonstrates how higher level communication operations such as symmetric demonstrates how higher level communication operations such as symmetric exchange and remote rendezvous can be directly constructed from the basic set. exchange and remote rendezvous can be directly constructed from the basic set. The paper further shows how global parallel operations such as parallel sum, The paper further shows how global parallel operations such as parallel sum, barrier synchronisation and parallel prefix can be elegantly constructed by barrier synchronisation and parallel prefix can be elegantly constructed by combining the basic set of primitives with generic process structures described combining the basic set of primitives with generic process structures described ...

