PPEALS '88 Proceedings of the ACM/SIGPLAN conference on Parallel programming: experience with applications, languages and systems
C3P Proceedings of the third conference on Hypercube concurrent computers and applications: Architecture, software, computer systems, and general issues - Volume 1
The XYZ abstraction levels of Poker-like languages
Selected papers of the second workshop on Languages and compilers for parallel computing
Supporting shared data structures on distributed memory architectures
PPOPP '90 Proceedings of the second ACM SIGPLAN symposium on Principles & practice of parallel programming
ParaGrap: Graph Editor Support for Parallel Programming Environments
ParaGrap: Graph Editor Support for Parallel Programming Environments
Parallel programming paradigms
Parallel programming paradigms
Synopsis of Orca, a simple language implementation of phase abstractions
ACM SIGPLAN Notices - Workshop on languages, compilers and run-time environments for distributed memory multiprocessors
The Ariadne debugger: scalable application of event-based abstraction
PADD '93 Proceedings of the 1993 ACM/ONR workshop on Parallel and distributed debugging
Abstractions for Portable, Scalable Parallel Programming
IEEE Transactions on Parallel and Distributed Systems
Hi-index | 0.00 |
Writing parallel numerical programs is difficult. One problem is that the regular code and communication structure of typical parallel algorithms often becomes obfuscated when special cases at the boundaries of the computation are handled. Another problem is that parallel architectures can have vastly different communication structures, which makes it hard to maintain efficiency when a program is ported. This problem arises in practice because communication information either is defined implicitly by the local process codes or else is statically embedded in the compiler for the language.In this paper, we show how a communication abstraction called the port ensemble can simplify the handling of boundary conditions and the efficient porting of programs. A port ensemble provides an explicit interface between computation and communication descriptions, thus separating the communication structure from the details of local computation and from the compiler. Port ensembles structure ports, symbolic names to and from which a process can write and read values. To simplify the expression of boundary conditions, ports can be bound not only to ports on other processors, but also to non-existent neighbors (along the edge of the computation) using special objects that represent and implement constants, variables, and arbitrary functions. Port ensembles also provide direct access to the communication structure, which simplifies changing the structure to one appropriate for a new target architecture.