Language support for data parallelism in pointer based dynamic data structures

  • Authors:
  • Pankaj Kumar

  • Affiliations:
  • Syracuse University, Syracuse, NY

  • Venue:
  • CASCON '93 Proceedings of the 1993 conference of the Centre for Advanced Studies on Collaborative research: distributed computing - Volume 2
  • Year:
  • 1993

Quantified Score

Hi-index 0.00

Visualization

Abstract

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.