Abstract
In this thesis, we first describe a technique to integrate "Lattice Parallelism" into a collection-oriented paralled C++ language. Collection-oriented languages employ aggregate data structures called " collections" and express parallelism as methods performed over the elements of a collection. The distribution of elements of a collection can be described by HPF style data distribution mechanisms to utilize memory locality. The collection-oriented language works well with fine-grained data parallel programs. However, when the elements of a collection is again a compound aggregate data structure, said a grid, conventional collection-oriented language provides little help to specify the correlations between different grids. "Lattice Parallelism" solves this shortcomings by providing a domain calculus to align grids with each other in the index domains. In this thesis, we report our experiences in supporting "Lattice Parallelism" in a collection-oriented parallel C++ language, and the experimental results done on a 16-node nCUBE2 machine. Second, we provide a strategy to automatically inference the distribution structures of pointer-based aggregate objects from application programs. This research tries to allow parallel C++ programmers to build application level distributed objects by themselves in addition to using limited built-in distributed objects. The limited dynamic control programs allow simple if and for loop constructs. From the retrieving information, we can understand build-in parallel C++ objects and do the automatic generation of communication codes. Furthermore, some optimization of communication codes, such as message combination and software caching, will wpeed up the communication.