Communications of the ACM - Special section on computer architecture
Adaptive load sharing in homogeneous distributed systems
IEEE Transactions on Software Engineering
Anomalies in parallel branch-and-bound algorithms
Communications of the ACM
Operating system principles
Fundamentals of Computer Alori
Fundamentals of Computer Alori
Tree machines and divide-and-conquer algorithms
CONPAR '81 Proceedings of the Conference on Analysing Problem Classes and Programming for Parallel Computing
Executing functional programs on a virtual tree of processors
FPCA '81 Proceedings of the 1981 conference on Functional programming languages and computer architecture
High level support for divide-and-conquer parallelism
Proceedings of the 1991 ACM/IEEE conference on Supercomputing
Provably efficient scheduling for languages with fine-grained parallelism
Proceedings of the seventh annual ACM symposium on Parallel algorithms and architectures
A provable time and space efficient implementation of NESL
Proceedings of the first ACM SIGPLAN international conference on Functional programming
Guaranteeing Good Memory Bounds for Parallel Programs
IEEE Transactions on Software Engineering
Space-efficient scheduling of parallelism with synchronization variables
Proceedings of the ninth annual ACM symposium on Parallel algorithms and architectures
Space-efficient implementation of nested parallelism
PPOPP '97 Proceedings of the sixth ACM SIGPLAN symposium on Principles and practice of parallel programming
Provably efficient scheduling for languages with fine-grained parallelism
Journal of the ACM (JACM)
Space-efficient scheduling of nested parallelism
ACM Transactions on Programming Languages and Systems (TOPLAS)
Scheduling multithreaded computations by work stealing
Journal of the ACM (JACM)
Space Efficient Execution of Deterministic Parallel Programs
IEEE Transactions on Software Engineering
ACM Transactions on Programming Languages and Systems (TOPLAS)
Pthreads for dynamic and irregular parallelism
SC '98 Proceedings of the 1998 ACM/IEEE conference on Supercomputing
A New Scheduling Algorithm for General Strict Multithreaded Computations
Proceedings of the 13th International Symposium on Distributed Computing
Hi-index | 14.98 |
Many parallel algorithms, particularly divide-and-conquer algorithms, may be structured as dynamic trees of tasks. In general, as parallelism increases, storage requirements also increase. A sequential program keeps storage requirements small by finishing one task (or procedure invocation) before going on to another, so that the entire task tree is never in existence at any one time. This corresponds to a depth-first expansion of a tree of tasks. On the other hand, a breadth-first expansion often produces a higher degree of parallelism, but also may produce an exponential growth in storage requirements. The resources (processors and memory) of a given system can be matched by alternating between depth-first and breadth-first expansion. The author's approach is to determine how much storage would have been available to a task in a sequential system, and to ensure that at least as much storage is available to the task when it is executed in a distributed system.