Design and data structure of fully adaptive, multigrid, finite-element software
ACM Transactions on Mathematical Software (TOMS)
Communications of the ACM - Special issue on parallelism
Mentat: An object-oriented macro data flow system
OOPSLA '87 Conference proceedings on Object-oriented programming systems, languages and applications
Compiling C* programs for a hypercube multicomputer
PPEALS '88 Proceedings of the ACM/SIGPLAN conference on Parallel programming: experience with applications, languages and systems
Characterizing the parallel performance of a large-scale, particle-in-cell plasma simulation code
Concurrency: Practice and Experience
Making asynchronous parallelism safe for the world
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Object oriented parallel programming: experiments and results
Proceedings of the 1991 ACM/IEEE conference on Supercomputing
Coarse-grain parallel programming in Jade
PPOPP '91 Proceedings of the third ACM SIGPLAN symposium on Principles and practice of parallel programming
Algorithms + Data Structures = Programs
Algorithms + Data Structures = Programs
Hi-index | 0.00 |
To date, most of the work on language support for data parallelism has been largely limited to static data structures such as arrays. In 'C' or C++, the use of pointers and dynamic memory allocators provide the ability to handle more complex data structures whose size and shape may vary over the course of the computation. There are two main issues with regards to supporting data parallelism on pointerbased dynamic data structures without having the programmer worry about synchronization, data distribution and load balancing.Firstly, how do we write programs that traverse the data structure in parallel.Secondly, since the pointer based dynamic data structures are incrementally built by the use of dynamic memory allocators, the implementation on distributed memory multiprocessors must support on-the-fly data distribution and load balancing.We have extended the 'C' language with a new data type called "Troupe" and a corresponding "for each" statement. These constructs provide support for (nested) data parallel operations on data elements which unlike arrays may be of different types and have no known storage pattern. This paper discusses the proposed extensions to 'C ' and presents examples to show how these constructs can be used for managing and expressing data parallelism on pointer based dynamic data structures.