MULTILISP: a language for concurrent symbolic computation
ACM Transactions on Programming Languages and Systems (TOPLAS)
DIB—a distributed implementation of backtracking
ACM Transactions on Programming Languages and Systems (TOPLAS)
Solving problems on concurrent processors. Vol. 1: General techniques and regular problems
Solving problems on concurrent processors. Vol. 1: General techniques and regular problems
Best-first branch-and bound on a hypercube
C3P Proceedings of the third conference on Hypercube concurrent computers and applications - Volume 2
C3P Proceedings of the third conference on Hypercube concurrent computers and applications - Volume 2
SOSP '89 Proceedings of the twelfth ACM symposium on Operating systems principles
Memory coherence in shared virtual memory systems
ACM Transactions on Computer Systems (TOCS)
“Topologies”—distributed objects on multicomputers
ACM Transactions on Computer Systems (TOCS)
Concurrency: Practice and Experience
Munin: distributed shared memory based on type-specific memory coherence
PPOPP '90 Proceedings of the second ACM SIGPLAN symposium on Principles & practice of parallel programming
Algorithms for scalable synchronization on shared-memory multiprocessors
ACM Transactions on Computer Systems (TOCS)
PADD '91 Proceedings of the 1991 ACM/ONR workshop on Parallel and distributed debugging
Architectural adaptability in parallel programming
Architectural adaptability in parallel programming
Object-support operating systems
IEEE Computer Society Technical Committee Newsletter on Operating Systems and Application Environments
Orca: A Language for Parallel Programming of Distributed Systems
IEEE Transactions on Software Engineering
Chores: enhanced run-time support for shared-memory parallel computing
ACM Transactions on Computer Systems (TOCS)
ACM Transactions on Computer Systems (TOCS)
Proceedings of the 1993 ACM/IEEE conference on Supercomputing
Evaluating the locality benefits of active messages
PPOPP '95 Proceedings of the fifth ACM SIGPLAN symposium on Principles and practice of parallel programming
Optimistic active messages: a mechanism for scheduling communication with computation
PPOPP '95 Proceedings of the fifth ACM SIGPLAN symposium on Principles and practice of parallel programming
The ITC distributed file system: principles and design
Proceedings of the tenth ACM symposium on Operating systems principles
Memory consistency and event ordering in scalable shared-memory multiprocessors
ISCA '90 Proceedings of the 17th annual international symposium on Computer Architecture
Implementing remote procedure calls
ACM Transactions on Computer Systems (TOCS)
The Performance of Spin Lock Alternatives for Shared-Memory Multiprocessors
IEEE Transactions on Parallel and Distributed Systems
Program Structuring for Effective Parallel Portability
IEEE Transactions on Parallel and Distributed Systems
Experimentation with a Reconfigurable Microkernel
USENIX Microkernels and Other Kernel Architectures Symposium
TASK forces: Distributed software for solving problems of substantial size
ICSE '79 Proceedings of the 4th international conference on Software engineering
Indigo: user-level support for building distributed shared abstractions
HPDC '95 Proceedings of the 4th IEEE International Symposium on High Performance Distributed Computing
PRELUDE: A SYSTEM FOR PORTABLE PARALL
PRELUDE: A SYSTEM FOR PORTABLE PARALL
Interproceessor Invocation on a NUMA Multiprocessor
Interproceessor Invocation on a NUMA Multiprocessor
CTK: Configurable Object Abstractions for Multiprocessors
IEEE Transactions on Software Engineering
Experience distributing objects in an SMMP OS
ACM Transactions on Computer Systems (TOCS)
Hi-index | 0.00 |
Any parallel program has abstractions that are shared by the program's multiple processes, including data structures containing shared data, code implementing operations like global sums or minima, type instances used for process synchronization or communication. Such shared abstractions can considerably affect the performance of parallel programs, on both distributed and shared memory multiprocessors. As a result, their implementation must be efficient, and such efficiency should be achieved without unduly compromising program portability and maintainability. Unfortunately, efficiency and portability can be at cross-purposes, since high performance typically requires changes in the representation of shared abstractions across different parallel machines.The primary contribution of the DSA library presented and evaluated in this paper is its representation of shared abstractions as objects that may be internally distributed across different nodes of a parallel machine. Such distributed shared abstractions (DSA) are encapsulated so that their implementations are easily changed while maintaining program portability across parallel architectures ranging from small-scale multiprocessors, to medium-scale shared and distributed memory machines, and potentially, to networks of computer workstations. The principal results presented in this paper are 1) a demonstration that the fragmentation of object state across different nodes of a multiprocessor machine can significantly improve program performance, and 2) that such object fragmentation can be achieved without compromising portability by changing object interfaces. These results are demonstrated using implementations of the DSA library on several medium-scale multiprocessors, including the BBN Butterfly, Kendall Square Research, and SGI shared memory multiprocessors. The DSA library's evaluation uses synthetic workloads and a parallel implementation of a branch-and-bound algorithm for solving the Traveling Salesperson Problem (TSP).