The objectives of this research are to develop compiler and runtime optimization techniques for parallel programming on homogeneous and heterogeneous high-performance parallel computers. Specifically, this research addresses the following issues: (1) Scalable Parallel I/O-Scalable massively parallel computers must include scalable I/O systems to provide a balance between computing power and I/O. The thrust of this research is to investigate compiler transformation for parallelizing I/O operations, stripmining and prefetching data, overlapping computation and I/O, generate efficient I/O access schedules, develop runtime support that can recognize and use access patterns to perform efficient parallel I/O, and develop language primitives that allow users to specify parallel I/O operations; (2) Automatic Data Distribution for Homogeneous and Heterogeneous Systems-The goals are to develop algorithms to automatically generate data distributions that incorporate global analysis, use realistic cost models, and that allow dynamic alignments, distributions and data replication; and (3) Runtime Support for Dynamic Data Redistribution-Dynamic data redistribution may be necessary due to explicit program constructs, compiler generated distributions, across procedure boundaries, or adaptive nature of a problem. The goals are to develop parallel algorithms (including communication scheduling, index conversion, and space optimization) for runtime support for dynamic data redistribution.