Results 11  20
of
20
Polydimensional Array Programming
 Partial Evaluation and Automatic Program Generation. International Series in Computer Science
, 1998
"... . FISh is the first language to support a polydimensional, data polymorphic type constructor for regular arrays. Now a fullytyped program may take a vector, matrix or higherdimensional regular array as argument. Regularity is defined using shape theory, which was also used to guide the language d ..."
Abstract

Cited by 2 (2 self)
 Add to MetaCart
. FISh is the first language to support a polydimensional, data polymorphic type constructor for regular arrays. Now a fullytyped program may take a vector, matrix or higherdimensional regular array as argument. Regularity is defined using shape theory, which was also used to guide the language design, e.g. by justifying the exclusion of arrays of functions. Regularity is enforced by static shape analysis which determines the shape of all arrays during compilation. As well as supporting polydimensional programming, it detects all shape errors, a common source of array bound errors. Further, shape analysis supports an aggressive compilation strategy, that compiles FISh programs into simple, efficient C programs. Thus FISh combines the expressive power of higherorder polymorphic programming with the speed of simple imperative programming. Version 1 is available over the internet. Key words: polydimensional arrays, FISh, shape analysis 1 Introduction FISh is the first language to s...
Costing Nested Array Codes
"... We discuss a languagebased cost model for array programs build on the notions of work complexity and parallel depth. The programs operate over data structures comprising nested arrays and recursive productsum types. In a purely functional setting, such programs can be implemented by way of the fla ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
We discuss a languagebased cost model for array programs build on the notions of work complexity and parallel depth. The programs operate over data structures comprising nested arrays and recursive productsum types. In a purely functional setting, such programs can be implemented by way of the flattening transformation that converts codes over nested arrays into vectorised code over flat arrays.
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...
Partial Evaluation of Shaped Programs: Experience with FISh
, 1999
"... FISh is an arraybased programming language that combines imperative and functional programming styles. Static shape analysis uses partial evaluation to convert arbitrary programs into simple, efficient imperative programs. ..."
Abstract

Cited by 2 (1 self)
 Add to MetaCart
FISh is an arraybased programming language that combines imperative and functional programming styles. Static shape analysis uses partial evaluation to convert arbitrary programs into simple, efficient imperative programs.
Scheduling Deterministic Parallel Programs
, 2009
"... are those of the author and should not be interpreted as representing the official policies, either expressed or implied, Deterministic parallel programs yield the same results regardless of how parallel tasks are interleaved or assigned to processors. This drastically simplifies reasoning about the ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
are those of the author and should not be interpreted as representing the official policies, either expressed or implied, Deterministic parallel programs yield the same results regardless of how parallel tasks are interleaved or assigned to processors. This drastically simplifies reasoning about the correctness of these programs. However, the performance of parallel programs still depends upon this assignment of tasks, as determined by a part of the language implementation called the scheduling policy. In this thesis, I define a novel cost semantics for a parallel language that enables programmers to reason formally about different scheduling policies. This cost semantics forms a basis for a suite of prototype profiling tools. These tools allow programmers to simulate and visualize program execution under different scheduling policies and understand how the choice of policy affects application memory use. My cost semantics also provides a specification for implementations of the language. As an example of such an implementation, I have extended MLton, a compiler
Thesis Proposal: Scheduling Parallel Functional Programs
, 2007
"... Parallelism abounds! To continue to improve performance, programmers must use parallel algorithms to take advantage of multicore and other parallel architectures. Existing declarative languages allow programmers to express these parallel algorithms concisely. With a deterministic semantics, a decla ..."
Abstract
 Add to MetaCart
Parallelism abounds! To continue to improve performance, programmers must use parallel algorithms to take advantage of multicore and other parallel architectures. Existing declarative languages allow programmers to express these parallel algorithms concisely. With a deterministic semantics, a declarative language also allows programmers to reason about the correctness of programs independently of the language implementation. Despite this, the performance of these programs still relies heavily on the language implementation and especially on the choice of scheduling policy. In this thesis, I propose to use a cost semantics to allow programmers to reason about the performance of parallel programs and in particular about their use of space. This cost semantics also provides a specification for the language implementation. In my previous work, I have formalized several implementations, including different scheduling policies, as smallstep transition semantics. Incorporating these policies into the language semantics establishes a tight link between programs, scheduling policies, and performance. Using these semantics, I have shown that in some cases, the choice of scheduling policy has an asymptotic effect on memory use. In my continuing work, I will consider extensions to my language and develop a fullscale implementation. With these, I hope to demonstrate that a declarative language is a practical way to program parallel algorithms and that my cost semantics offers an effective means to reason about their performance. 1
Compilation of a SkeletonBased Parallel Language Through Symbolic Cost Analysis and Automatic Data Distribution
"... We present a skeletonbased language which leads to portable and costpredictable implementations on MIMD computers. The compilation process is described as a series of program transformations. We focus in this paper on the step concerning the distribution choice. The problem of automatic mapping of ..."
Abstract
 Add to MetaCart
We present a skeletonbased language which leads to portable and costpredictable implementations on MIMD computers. The compilation process is described as a series of program transformations. We focus in this paper on the step concerning the distribution choice. The problem of automatic mapping of input vectors onto processors is addressed using symbolic cost evaluation. Source language restrictions are crucial since they permit to use powerful techniques on polytope volume computations to evaluate costs precisely. The approach can be seen as a crossfertilization between techniques developed within the FORTRAN parallelization and skeleton communities.
Functorial ML
, 1998
"... We present an extension of the HindleyMilner type system that supports a generous class of type constructors called functors, and provide a parametrically polymorphic algorithm for their mapping, i.e. for applying a function to each datum appearing in a value of constructed type. The algorithm come ..."
Abstract
 Add to MetaCart
We present an extension of the HindleyMilner type system that supports a generous class of type constructors called functors, and provide a parametrically polymorphic algorithm for their mapping, i.e. for applying a function to each datum appearing in a value of constructed type. The algorithm comes from shape theory, which provides a uniform method for locating data within a shape. The resulting system is ChurchRosser and strongly normalizing, and supports type inference. Several dierent semantics are possible, which aects the choice of constants in the language, and are used to illustrate the relationship to polytypic programming. Capsule Review A wide class of type constructors (functions producing types from types) used in functional programming are functorial, in the sense that they can be extended to mappings from functions to functions satisfying a few simple laws. The `map' functional for lists is the prototypic example. Moreover, this additional structure for type constru...
Characterising Effective Resource Analyses for Parallel and Distributed Coordination
"... Abstract. An important application of resource analysis is to improve the performance of parallel and distributed programs. In this context key resources are time, space and communication. Given the spectrum of cost models and associated analysis techniques available, what combination should be sele ..."
Abstract
 Add to MetaCart
Abstract. An important application of resource analysis is to improve the performance of parallel and distributed programs. In this context key resources are time, space and communication. Given the spectrum of cost models and associated analysis techniques available, what combination should be selected for a specific parallel or distributed context? We address the question as follows. We outline a continuum of coordination cost models and a range of analysis techniques. We consider six representative parallel/distributed applications of resource analysis techniques, and aim to extract general principles governing why the combination of techniques is effective in its context. 1
Functional Query Languages with Categorical Types A dissertation
, 2013
"... We study three categorytheoretic types in the context of functional query languages – typed λcalculi extended with additional operations for bulk data processing. The types we study are • The type of propositions. By adding this type to the simply typed λcalculus, we obtain higherorder logic. We ..."
Abstract
 Add to MetaCart
We study three categorytheoretic types in the context of functional query languages – typed λcalculi extended with additional operations for bulk data processing. The types we study are • The type of propositions. By adding this type to the simply typed λcalculus, we obtain higherorder logic. We prove that every hereditarily domainindependent higherorder logic program can be translated into the nested relational algebra, thereby giving a higherorder generalization of Codd’s theorem. • The dependent identity type. By adding identity types to the nested relational calculus we obtain a language where embedded dependencies are firstclass objects that can be manipulated by the programmer and used for optimization. We prove that the chase rewriting procedure is sound for this language. • The type of finitely presented categories. In the functorial data model, database schemas are finitely presented categories, and every database instance over a schema C is a functor from C to the category of sets. We define FQL, the first query