next up previous
Next: What is OpenMP? Up: OpenMP: A Proposed Industry Previous: Introduction

Why a New Standard?

The closest approximation to a standard shared memory programming model is the now dormant ANSI X3H5 standards effort [2]. X3H5 was never formally adopted as a standard largely because interest waned as distributed memory MPP's came in vogue. Nonetheless it is supported to varying degrees by many hardware vendors. However, X3H5 has some important limitations that make it unsuitable for other than loop level parallelism. Consequently, applications adopting this model are often limited in their parallel scalability.

The message passing programming model has been very effectively standardized by MPI. MPI is a portable, widely available and accepted standard for writing message passing programs. Unfortunately message passing is generally a difficult way to program. It requires that the program's data structures be explicitly partitioned so the entire application must be parallelized in order to work with the partitioned data structures. There is no incremental path to parallelizing an application. Furthermore, modern multiprocessor architectures are increasingly providing hardware support for cache coherence, therefore message passing is becoming unnecessary and overly restrictive for these systems.

Pthreads is an accepted standard for shared memory in the low end. However it is not targeted at the Technical/HPC space. There is very little Fortran support for pthreads and it is not a scalable approach. Even for C applications the pthreads model is awkward because it is lower level than necessary for most scientific applications, and is targeted more at providing task parallelism with very little support for data parallelism. Also, portability to unsupported platforms requires a stub library or equivalent workaround.

There have been many new languages defined for parallel computing, but largely they have not been adopted in the mainstream. HPF is the most popular multiprocessing derivative of Fortran but it is mostly geared to distributed memory systems.

 
Table 1: Comparison of various standard parallel programming models.

Independent software developers of scientific applications as well as government laboratories have a large volume of Fortran77 code that needs to get parallelized in a portable fashion. The rapid and widespread acceptance of shared memory multiprocessor architectures, from the desktop to the ``glass houses'', has created a pressing demand for a portable way to program these systems. This is driven largely by the desire to begin parallelizing existing code without having to completely rewrite it. This is not possible with most existing parallel language standards, as is evident in Table 1. It's clear from this table that only OpenMP and X3H5 allow incremental parallelization of existing code, and of those two only OpenMP is scalable. OpenMP is targeted to developers who need to quickly parallelize existing scientific code, but it remains flexible enough to support a much broader application set than just scientific computing. OpenMP provides an incremental path for parallel conversion of any existing software, as well as scalability and performance for a complete rewrite or an entirely new development.



next up previous
Next: What is OpenMP? Up: OpenMP: A Proposed Industry Previous: Introduction



Leo Dagum
Wed Nov 5 17:43:05 PST 1997