Communicating sequential processes
Communicating sequential processes
MULTILISP: a language for concurrent symbolic computation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Computer
Pomset interpretations of parallel function programs
Proc. of a conference on Functional programming languages and computer architecture
Projections for strictness analysis
Proc. of a conference on Functional programming languages and computer architecture
Communication and concurrency
I-structures: data structures for parallel computing
ACM Transactions on Programming Languages and Systems (TOPLAS)
Mul-T: a high-performance parallel Lisp
PLDI '89 Proceedings of the ACM SIGPLAN 1989 Conference on Programming language design and implementation
Implementation of non-strict functional programming languages
Implementation of non-strict functional programming languages
PARLE '91 Proceedings on Parallel architectures and languages Europe : volume II: parallel languages: volume II: parallel languages
Para-functional programming in Haskell
Parallel functional languages and compilers
Coordination languages and their significance
Communications of the ACM
T: a multithreaded massively parallel architecture
ISCA '92 Proceedings of the 19th annual international symposium on Computer architecture
Global analysis for partitioning non-strict programs into sequential threads
LFP '92 Proceedings of the 1992 ACM conference on LISP and functional programming
Exploiting task and data parallelism on a multicomputer
PPOPP '93 Proceedings of the fourth ACM SIGPLAN symposium on Principles and practice of parallel programming
Implementation of a portable nested data-parallel language
PPOPP '93 Proceedings of the fourth ACM SIGPLAN symposium on Principles and practice of parallel programming
Assessing the evaluation transformer model of reduction on the spineless G-machine
FPCA '93 Proceedings of the conference on Functional programming languages and computer architecture
Parallel programming with control abstraction
ACM Transactions on Programming Languages and Systems (TOPLAS)
A compiler approach to scalable concurrent-program design
ACM Transactions on Programming Languages and Systems (TOPLAS)
Time and space profiling for non-strict, higher-order functional languages
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Supporting dynamic data structures on distributed-memory machines
ACM Transactions on Programming Languages and Systems (TOPLAS)
Parallel skeletons for structured composition
PPOPP '95 Proceedings of the fifth ACM SIGPLAN symposium on Principles and practice of parallel programming
First-class schedules and virtual maps
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
Programming parallel algorithms
Communications of the ACM
GUM: a portable parallel implementation of Haskell
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
pHluid: the design of a parallel functional language implementation on workstations
Proceedings of the first ACM SIGPLAN international conference on Functional programming
Exploiting parallelism in functional languages: a “paradigm-oriented” approach
Abstract machine models for highly parallel computers
Applications of functional programming
Applications of functional programming
Scalability, portability and predictability: the BSP approach to parallel programming
Future Generation Computer Systems - Special issue: parallel computing applications
Monsoon: an explicit token-store architecture
ISCA '90 Proceedings of the 17th annual international symposium on Computer Architecture
ACM Transactions on Programming Languages and Systems (TOPLAS)
Functional Programming for Loosely-Coupled Multiprocessors
Functional Programming for Loosely-Coupled Multiprocessors
Lazy Task Creation: A Technique for Increasing the Granularity of Parallel Programs
IEEE Transactions on Parallel and Distributed Systems
Modeling speedup of SPMD applications on the Intel Paragon: a case study
HPCN Europe '95 Proceedings of the International Conference and Exhibition on High-Performance Computing and Networking
Evaluation Annotations for Hope+
Proceedings of the 1989 Glasgow Workshop on Functional Programming
Skil: An Imperative Language with Algorithmic Skeletons for Efficient Distributed Programming
HPDC '96 Proceedings of the 5th IEEE International Symposium on High Performance Distributed Computing
An introduction to database systems (The Systems programming series)
An introduction to database systems (The Systems programming series)
A Transformation Approach to Derive Efficient Parallel Implementations
IEEE Transactions on Software Engineering - Special issue on architecture-independent languages and software tools parallel processing
An operational semantics for parallel lazy evaluation
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
Load balancing in a parallel graph reducer
Trends in functional programming
Overview of Hydra: A Concurrent Language for Synchronous Digital Circuit Design
IPDPS '02 Proceedings of the 16th International Parallel and Distributed Processing Symposium
Executable Specification Language for Parallel Symbolic Computation (Research Note)
Euro-Par '00 Proceedings from the 6th International Euro-Par Conference on Parallel Processing
Nepal - Nested Data Parallelism in Haskell
Euro-Par '01 Proceedings of the 7th International Euro-Par Conference Manchester on Parallel Processing
The Multi-architecture Performance of the Parallel Functional Language GP H (Research Note)
Euro-Par '00 Proceedings from the 6th International Euro-Par Conference on Parallel Processing
Distributed Execution of Functional Programs Using the JVM
Computer Aided Systems Theory - EUROCAST 2001-Revised Papers
Functional Vs Object-Oriented Distributed Languages
Computer Aided Systems Theory - EUROCAST 2001-Revised Papers
Performance Results for an Implementation of the Process Coordination Language K2
IFL '98 Selected Papers from the 10th International Workshop on 10th International Workshop
Towards an Operational Semantics for a Parallel Non-Strict Functional Language
IFL '98 Selected Papers from the 10th International Workshop on 10th International Workshop
A Strategic Profiler for Glasgow Parallel Haskell
IFL '98 Selected Papers from the 10th International Workshop on 10th International Workshop
An Interactive Approach to Profiling Parallel Functional Programs
IFL '98 Selected Papers from the 10th International Workshop on 10th International Workshop
Implementing Eden - or: Dreams Become Reality
IFL '98 Selected Papers from the 10th International Workshop on 10th International Workshop
Shared Memory Multiprocessor Support for SAC
IFL '98 Selected Papers from the 10th International Workshop on 10th International Workshop
The Design and Implementation of Glasgow Distributed Haskell
IFL '00 Selected Papers from the 12th International Workshop on Implementation of Functional Languages
Implementation Skeletons in Eden: Low-Effort Parallel Programming
IFL '00 Selected Papers from the 12th International Workshop on Implementation of Functional Languages
Comparative Cross-Platform Performance Results from a Parallelizing SML Compiler
IFL '02 Selected Papers from the 13th International Workshop on Implementation of Functional Languages
Higher Order Demand Propagation
IFL '98 Selected Papers from the 10th International Workshop on 10th International Workshop
Optimizations on Array Skeletons in a Shared Memory Environment
IFL '02 Selected Papers from the 13th International Workshop on Implementation of Functional Languages
Parallel functional programming at two levels of abstraction
Proceedings of the 3rd ACM SIGPLAN international conference on Principles and practice of declarative programming
Transforming rapid prototypes to efficient parallel programs
Patterns and skeletons for parallel and distributed computing
Parallelism abstractions in eden
Patterns and skeletons for parallel and distributed computing
Comparing Parallel Functional Languages: Programming and Performance
Higher-Order and Symbolic Computation
Evaluating distributed functional languages for telecommunications software
Proceedings of the 2003 ACM SIGPLAN workshop on Erlang
Free theorems in the presence of seq
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Parallel and Distributed Haskells
Journal of Functional Programming
Pipelined functional tree accesses and updates: scheduling, synchronization, caching and coherence
Journal of Functional Programming
Parallelizing functional programs by generalization
Journal of Functional Programming
ACM Transactions on Programming Languages and Systems (TOPLAS)
Loci: a rule-based framework for parallel multi-disciplinary simulation synthesis
Journal of Functional Programming
Parallel functional programming in Eden
Journal of Functional Programming
Shared memory multiprocessor support for functional array processing in SAC
Journal of Functional Programming
A parallel SML compiler based on algorithmic skeletons
Journal of Functional Programming
Haskell on a shared-memory multiprocessor
Proceedings of the 2005 ACM SIGPLAN workshop on Haskell
The Impact of seq on Free Theorems-Based Program Transformations
Fundamenta Informaticae - Program Transformation: Theoretical Foundations and Basic Techniques. Part 2
Analyzing the influence of mixed evaluation on the performance of Eden skeletons
Parallel Computing - Algorithmic skeletons
Data parallel Haskell: a status report
Proceedings of the 2007 workshop on Declarative aspects of multicore programming
SAC: off-the-shelf support for data-parallelism on multicores
Proceedings of the 2007 workshop on Declarative aspects of multicore programming
Observing intermediate structures in a parallel lazy functional language
Proceedings of the 9th ACM SIGPLAN international conference on Principles and practice of declarative programming
Evaluating high-level distributed language constructs
ICFP '07 Proceedings of the 12th ACM SIGPLAN international conference on Functional programming
Feedback directed implicit parallelism
ICFP '07 Proceedings of the 12th ACM SIGPLAN international conference on Functional programming
Selective strictness and parametricity in structural operational semantics, inequationally
Theoretical Computer Science
Mathematical Structures in Computer Science
Implicitly-threaded parallelism in Manticore
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
ICCS '07 Proceedings of the 7th international conference on Computational Science, Part II
Proving Properties of Lazy Functional Programs with Sparkle
Central European Functional Programming School
Proceedings of the 4th workshop on Declarative aspects of multicore programming
Runtime support for multicore Haskell
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Parallel performance tuning for Haskell
Proceedings of the 2nd ACM SIGPLAN symposium on Haskell
To be or not to be ...lazy (In a Parallel Context)
Electronic Notes in Theoretical Computer Science (ENTCS)
Algon: From Interchangeable Distributed Algorithms to Interchangeable Middleware
Electronic Notes in Theoretical Computer Science (ENTCS)
Thread migration in a parallel graph reducer
IFL'02 Proceedings of the 14th international conference on Implementation of functional languages
Parallel coordination made explicit in a functional setting
IFL'06 Proceedings of the 18th international conference on Implementation and application of functional languages
Aspect oriented pluggable support for parallel computing
VECPAR'06 Proceedings of the 7th international conference on High performance computing for computational science
Agent-oriented programming: from prolog to guarded definite clauses
Agent-oriented programming: from prolog to guarded definite clauses
Seq no more: better strategies for parallel Haskell
Proceedings of the third ACM Haskell symposium on Haskell
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Incrementally developing parallel applications with AspectJ
IPDPS'06 Proceedings of the 20th international conference on Parallel and distributed processing
Proceedings of the sixth workshop on Declarative aspects of multicore programming
SymGrid-Par: parallel orchestration of symbolic computation systems
ACM Communications in Computer Algebra
Space profiling for parallel functional programs
Journal of Functional Programming
Implicitly threaded parallelism in manticore
Journal of Functional Programming
A contextual semantics for concurrent Haskell with futures
Proceedings of the 13th international ACM SIGPLAN symposium on Principles and practices of declarative programming
Why parallel functional programming matters: panel statement
Ada-Europe'11 Proceedings of the 16th Ada-Europe international conference on Reliable software technologies
A parallel skeleton for genetic algorithms
IWANN'11 Proceedings of the 11th international conference on Artificial neural networks conference on Advances in computational intelligence - Volume Part II
Extending monads with pattern matching
Proceedings of the 4th ACM symposium on Haskell
A monad for deterministic parallelism
Proceedings of the 4th ACM symposium on Haskell
Prettier concurrency: purely functional concurrent revisions
Proceedings of the 4th ACM symposium on Haskell
Proceedings of the fifth international workshop on High-level parallel programming and applications
Hume box calculus: robust system development through software transformation
Higher-Order and Symbolic Computation
Testing speculative work in a lazy/eager parallel functional language
LCPC'05 Proceedings of the 18th international conference on Languages and Compilers for Parallel Computing
Managing heterogeneity in a grid parallel haskell
ICCS'05 Proceedings of the 5th international conference on Computational Science - Volume Part II
IFL'03 Proceedings of the 15th international conference on Implementation of Functional Languages
Building an interface between eden and maple: a way of parallelizing computer algebra algorithms
IFL'03 Proceedings of the 15th international conference on Implementation of Functional Languages
Proof tool support for explicit strictness
IFL'05 Proceedings of the 17th international conference on Implementation and Application of Functional Languages
Orchestrating computational algebra components into a high-performance parallel system
International Journal of High Performance Computing and Networking
Parallel elementwise processable functions in concurrent clean
Mathematical and Computer Modelling: An International Journal
Trends in Trends in Functional Programming 1999/2000 versus 2007/2008
Higher-Order and Symbolic Computation
ParaForming: forming parallel haskell programs using novel refactoring techniques
TFP'11 Proceedings of the 12th international conference on Trends in Functional Programming
Functional high performance financial IT: the hiperfit research center in copenhagen
TFP'11 Proceedings of the 12th international conference on Trends in Functional Programming
Eden --- parallel functional programming with haskell
CEFP'11 Proceedings of the 4th Summer School conference on Central European Functional Programming School
Parallel and concurrent programming in Haskell
CEFP'11 Proceedings of the 4th Summer School conference on Central European Functional Programming School
Haskell vs. f# vs. scala: a high-level language features and parallelism support comparison
Proceedings of the 1st ACM SIGPLAN workshop on Functional high-performance computing
The Impact of seq on Free Theorems-Based Program Transformations
Fundamenta Informaticae - Program Transformation: Theoretical Foundations and Basic Techniques. Part 2
Journal of Symbolic Computation
Implementing a high-level distributed-memory parallel haskell in haskell
IFL'11 Proceedings of the 23rd international conference on Implementation and Application of Functional Languages
Unifying refinement and hoare-style reasoning in a logic for higher-order concurrency
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Hi-index | 0.00 |
The process of writing large parallel programs is complicated by the need to specify both the parallel behaviour of the program and the algorithm that is to be used to compute its result. This paper introduces evaluation strategies: lazy higher-order functions that control the parallel evaluation of non-strict functional languages. Using evaluation strategies, it is possible to achieve a clean separation between algorithmic and behavioural code. The result is enhanced clarity and shorter parallel programs. Evaluation strategies are a very general concept: this paper shows how they can be used to model a wide range of commonly used programming paradigms, including divide-and-conquer parallelism, pipeline parallelism, producer/consumer parallelism, and data-oriented parallelism. Because they are based on unrestricted higher-order functions, they can also capture irregular parallel structures. Evaluation strategies are not just of theoretical interest: they have evolved out of our experience in parallelising several large-scale parallel applications, where they have proved invaluable in helping to manage the complexities of parallel behaviour. Some of these applications are described in detail here. The largest application we have studied to date, Lolita, is a 40,000 line natural language engineering system. Initial results show that for these programs we can achieve acceptable parallel performance, for relatively little programming effort.