Compiling shared-memory applications for distributed-memory systems

Ayon Basumallik, Purdue University

Abstract

OpenMP has established itself as the de facto standard for parallel programming on shared-memory platforms. OpenMP provides a simpler approach to parallel programming, allowing programs to be parallelized incrementally by the insertion of directives. In contrast, parallel programming on distributed-memory systems using message-passing is effort intensive. It requires the programmer to parallelize programs as a whole and to explicitly manage data transfers. This dissertation aims to extend the ease of parallel programming in OpenMP to distributed-memory systems as well. To that end, we propose two approaches. In the first approach, we use an underlying layer of Software Distributed Shared Memory (SDSM). However, SDSM systems have some inherent performance limitations. Therefore, this dissertation explores a second approach - direct translation of OpenMP applications to MPI. We present the basic translation scheme and optimizations for both regular and irregular OpenMP applications. Experiments with seven OpenMP benchmarks indicate that OpenMP applications translated directly to MPI using our techniques achieve average scalability within 12% of their hand-coded MPI counterparts, a 30% higher average scalability than corresponding SDSM applications and between 12% to 89% higher scalability than corresponding applications written in High Performance Fortran (HPF). A combined compile-time/runtime scheme, evaluated using three representative irregular OpenMP applications, achieves performance to within 10% of its MPI counterpart in one case and outperforms its hand-coded MPI counterparts in the other two cases.

Degree

Ph.D.

Advisors

Eigenmann, Purdue University.

Subject Area

Computer science

Off-Campus Purdue Users:
To access this dissertation, please log in to our
proxy server
.

Share

COinS