Results 1 
4 of
4
Vectorizing a nonstrict functional language for a dataparallel "Spineless (not so) Tagless Gmachine":
"... The essence of dataparallelism is a O(1) map function. A dataparallel interpretation of map is the application of a function to every element of a parallel data structure at the same time. This model is at odds with a version of map over lists. Although list map can be interpreted as applying a f ..."
Abstract

Cited by 3 (3 self)
 Add to MetaCart
The essence of dataparallelism is a O(1) map function. A dataparallel interpretation of map is the application of a function to every element of a parallel data structure at the same time. This model is at odds with a version of map over lists. Although list map can be interpreted as applying a function to every element of a list, in a nonstrict functional language the function applications only occur to those elements of the list required by a subsequent computation. We reconcile these opposing views of map using a three tiered model: (1) a nonstrict dataparallel evaluation mechanism based upon `aims' [5] is used that combines the "only evaluate what is required" philosophy of nonstrict evaluation, with the "evaluate everything synchronously, and in parallel" mechanism of a dataparallel paradigm; (2) program transformations inspired by the map distributivity law are used to vectorize functional programs that contain map; (3) the resulting vectorized programs are compiled into ...
The Vectorisation Monad
 PASCO'94: First International Symposium on Parallel Symbolic Computation
, 1994
"... : Traditionally a vectorising compiler matches the iterative constructs of a program against a set of predefined templates. If a loop contains no dependency cycles then a map template can be used; other simple dependencies can often be expressed in terms of fold or scan templates. This paper addre ..."
Abstract

Cited by 3 (2 self)
 Add to MetaCart
(Show Context)
: Traditionally a vectorising compiler matches the iterative constructs of a program against a set of predefined templates. If a loop contains no dependency cycles then a map template can be used; other simple dependencies can often be expressed in terms of fold or scan templates. This paper addresses the template matching problem within the context of functional programming. A small collection of program identities are used to specify vectorisable forloops. By incorporating these program identities within a monad, all welltyped forloops in which the body of the loop is expressed using the vectorisation monad can be vectorised. This technique enables the elimination of template matching from a vectorising compiler, and the proof of the safety of vectorisation can be performed by a type inference mechanism. Keywords: Data parallelism; monads; vectorisation; BirdMeertens formalism; program transformation; category theory; imperative functional programming; nonstrict semantics; Has...
An Introduction to Category Theory, Category Theory Monads, and Their Relationship to Functional Programming
"... Incorporating imperative features into a purely functional language has become an active area of research within the functional programming community [10, 7, 12]. One of the techniques gaining widespread acceptance as a model for imperative functional programming is monads [13, 9]. The purpose of th ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
Incorporating imperative features into a purely functional language has become an active area of research within the functional programming community [10, 7, 12]. One of the techniques gaining widespread acceptance as a model for imperative functional programming is monads [13, 9]. The purpose of this technical report is to give a category theoretic introduction to monads, and to explore the relationship to what functional programmers term a monad. Keywords: Monads; Category theory; Kleisli triple; Imperative functional programming. 1 Motivation This paper stems from the desire for an understanding of Moggi's work on the computational calculus and Monads [9, 8]. The presentation here owes much to the papers of Wadler [13, 14], and the basic texts on category theory [11, 1, 4, 6, 2]. 2 Basic category theory and monads Category theory is concerned with the observation that many of the properties from algebra can be simplified by a presentation in terms of diagrams containing arrows....
Parallel Haskell: The vectorisation monad
, 1993
"... It has long been known that some of the most common uses of for and whileloops in imperative programs can easily be expressed using the standard higherorder functions fold and map. With this correspondence as a starting point, we derive parallel implementations of various iterative constructs, ea ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
(Show Context)
It has long been known that some of the most common uses of for and whileloops in imperative programs can easily be expressed using the standard higherorder functions fold and map. With this correspondence as a starting point, we derive parallel implementations of various iterative constructs, each having a better complexity than their sequential counterparts, and explore the use of monads to guarantee the soundness of the parallel implementation. As an aid to the presentation of the material, we use the proposed syntax for parallel Haskell [27] (figure 1) as a vehicle in which imperative functional programs will be expressed. Surprisingly, incorporating imperative features into a purely functional language has become an active area of research within the functional programming community [30, 24, 36, 20]. One of the techniques gaining widespread acceptance as a model for imperative functional programming is monads [38, 37, 26]. Typically monads are used to guarantee single threadedn...