Detecting global variables in denotational specifications
ACM Transactions on Programming Languages and Systems (TOPLAS) - Lecture notes in computer science Vol. 174
Lambda lifting: transforming programs to recursive equations
Proc. of a conference on Functional programming languages and computer architecture
Numerical recipes: the art of scientific computing
Numerical recipes: the art of scientific computing
Solving problems on concurrent processors
Solving problems on concurrent processors
A “skeletal” approach to the exploitation of parallelism
Proceedings of the conference on CONPAR 88
Replacing function parameters by global variables
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
Crystal: theory and pragmatics of generating efficient parallel code
Parallel functional languages and compilers
Report on the programming language Haskell: a non-strict, purely functional language version 1.2
ACM SIGPLAN Notices - Haskell special issue
Scientific computing: an introduction with parallel computing
Scientific computing: an introduction with parallel computing
Automatic array alignment in data-parallel programs
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Counting solutions to Presburger formulas: how and why
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
Implementation of a portable nested data-parallel language
Journal of Parallel and Distributed Computing - Special issue on data parallel algorithms and programming
Parallel skeletons for structured composition
PPOPP '95 Proceedings of the fifth ACM SIGPLAN symposium on Principles and practice of parallel programming
ICS '96 Proceedings of the 10th international conference on Supercomputing
A systematic study of functional language implementations
ACM Transactions on Programming Languages and Systems (TOPLAS)
Costing parallel programs as a function of shapes
Science of Computer Programming - Special issue on mathematics of program construction
Shapeliness analysis of functional programs with algebraic data types
Science of Computer Programming - Special issue on mathematics of program construction
IEEE Transactions on Parallel and Distributed Systems
The Functional Imperative: Shape!
ESOP '98 Proceedings of the 7th European Symposium on Programming: Programming Languages and Systems
Lifetime Analysis for Procedure Parameters
ESOP '86 Proceedings of the European Symposium on Programming
On deriving data parallel code from a functional program
IPPS '95 Proceedings of the 9th International Symposium on Parallel Processing
Optimization Rules for Programming with Collective Operations
IPPS '99/SPDP '99 Proceedings of the 13th International Symposium on Parallel Processing and the 10th Symposium on Parallel and Distributed Processing
Estimation of Nested Loops Execution Time by Integer Arithmetic in Convex Polyhedra
Proceedings of the 8th International Symposium on Parallel Processing
Parallel Programming Using Skeleton Functions
PARLE '93 Proceedings of the 5th International PARLE Conference on Parallel Architectures and Languages Europe
Symbolic Cost Analysis and Automatic Data Distribution for a Skeleton-Based Language
Euro-Par '98 Proceedings of the 4th International Euro-Par Conference on Parallel Processing
Scalable linear algebra software libraries for distributed memory concurrent computers
FTDCS '95 Proceedings of the 5th IEEE Workshop on Future Trends of Distributed Computing Systems
Parallelization of divide-and-conquer by translation to nested loops
Journal of Functional Programming
Skeleton-based parallel programming: Functional and parallel semantics in a single shot
Computer Languages, Systems and Structures
Costing stepwise refinements of parallel programs
Computer Languages, Systems and Structures
Hi-index | 0.01 |
We propose a parallel specialized language that ensures portable and cost-predictable implementations on parallel computers. The language is basically a first-order, recursion-less, strict functional language equipped with a collection of higher-order functions or skeletons. These skeletons apply on (nested) vectors and can be grouped into four classes: computation, reorganization, communication and mask skeletons. The compilation process is described as a series of transformations and analyses leading to SPMD-like functional programs which can be directly translated into real parallel code. The language restrictions enforce a programming discipline whose benefit is to allow a static, symbolic and accurate cost analysis. The parallel cost takes into account both load balancing and communications, and can be statically evaluated even when the actual size of vectors or the number of processors are unknown. It is used to automatically select the best data distribution among a set of standard distributions. Interestingly, this work can be seen as a cross-fertilization between techniques developed within the FORTRAN parallelization, skeleton and functional programming communities.