Programming in Prolog (2nd ed.)
Programming in Prolog (2nd ed.)
Logic for problem-solving
Parallel logic programming in PARLOG: the language and its implementation
Parallel logic programming in PARLOG: the language and its implementation
Parlog86 and the dining logicians
Communications of the ACM
Concurrent prolog: collected papers
Concurrent prolog: collected papers
Communications of the ACM
Parallel logic programming techniques
Parallel logic programming techniques
A multicomputer garbage collector for a single-assignment language
International Journal of Parallel Programming
Functional programming: practice and theory
Functional programming: practice and theory
PVM: a framework for parallel distributed computing
Concurrency: Practice and Experience
Parallel programming with coordination structures
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Strand: new concepts in parallel programming
Strand: new concepts in parallel programming
Concurrency: simple concepts and powerful tools
The Computer Journal - On concurrent logic programming
Tools and techniques for performance measurement and performance improvement in parallel programs
Tools and techniques for performance measurement and performance improvement in parallel programs
Algorithmic skeletons: structured management of parallel computation
Algorithmic skeletons: structured management of parallel computation
An introduction to parallel programming
An introduction to parallel programming
The high performance Fortran handbook
The high performance Fortran handbook
CC++: a declarative concurrent object-oriented programming notation
Research directions in concurrent object-oriented programming
Monitors, messages, and clusters: the p4 parallel programming system
Parallel Computing - Special issue: message passing interfaces
Using MPI: portable parallel programming with the message-passing interface
Using MPI: portable parallel programming with the message-passing interface
Communicating sequential processes
Communications of the ACM
Guarded commands, nondeterminacy and formal derivation of programs
Communications of the ACM
Monitors: an operating system structuring concept
Communications of the ACM
Functional Programming for Loosely-Coupled Multiprocessors
Functional Programming for Loosely-Coupled Multiprocessors
A Notation for Deterministic Cooperating Processes
IEEE Transactions on Parallel and Distributed Systems
A relational language for parallel programming
FPCA '81 Proceedings of the 1981 conference on Functional programming languages and computer architecture
Coordinating functional processes with Haskell#
Proceedings of the 2002 ACM symposium on Applied computing
Modeling Particle Systems Animations for Heterogeneous Clusters
IPDPS '05 Proceedings of the 19th IEEE International Parallel and Distributed Processing Symposium (IPDPS'05) - Workshop 13 - Volume 14
Novel runtime systems support for adaptive compositional modeling in PSEs
Future Generation Computer Systems - Special section: Complex problem-solving environments for grid computing
Weaves: a framework for reconfigurable programming
International Journal of Parallel Programming - Special issue: The next generation software program
Multicore Scheduling for Lightweight Communicating Processes
COORDINATION '09 Proceedings of the 11th International Conference on Coordination Models and Languages
PFunc: modern task parallelism for modern high performance computing
Proceedings of the Conference on High Performance Computing Networking, Storage and Analysis
Novel runtime systems support for adaptive compositional modeling in PSEs
Future Generation Computer Systems - Special section: Complex problem-solving environments for grid computing
Scalable execution of legacy scientific codes
ICCS'06 Proceedings of the 6th international conference on Computational Science - Volume Part I
Multicore scheduling for lightweight communicating processes
Science of Computer Programming
Hi-index | 0.00 |
In task-parallel programs, diversee activities can take place concurrently, and communication and synchronization patterns are complex and not easily predictable. Previous work has identified compositionality as an important design principle for task-parallel programs. In this article, we discuss alternative approaches to the realization of this principle, which holds that properties of program components should be preserved when those co ponents are composed in parallel with other program components. We review two programming languages, Strand and Program Composition Notation, that support compositionality via a small number of simple concepts, namely, monotone operations on shared opbects, a uniform addressing mechanism, and parallel composition. Both languages have been used extensively for large-scale application development, allowing us to provide an informed assessment of both their strengths and their weaknesses. We observe that while compositionality simplifies development of complex applications, the use of specialized languages hinders reuse of existing code and tools and the specification of domain decomposition strategies. This suggests an alternative approach based on small extensions to existing sequential languages. We conclude the article with a discussion of two languages that realized this strategy.