Browse Prior Art Database

PREFNEST - Implementing Nester Parallelism in FORTRAN

IP.com Disclosure Number: IPCOM000036512D
Original Publication Date: 1989-Oct-01
Included in the Prior Art Database: 2005-Jan-29
Document File: 2 page(s) / 14K

Publishing Venue

IBM

Related People

Bernstein, D: AUTHOR

Abstract

Disclosed is a programming system that allows specifying nested parallelism in Fortran programs which is essential for achieving a good load balancing in large-scale shared memory multiprocessors. Also, the programming environment makes the work of parallelizing a Fortran program by the user much easier compared to the previous tools.

This text was extracted from a PDF file.
This is the abbreviated version, containing approximately 53% of the total text.

Page 1 of 2

PREFNEST - Implementing Nester Parallelism in FORTRAN

Disclosed is a programming system that allows specifying nested parallelism in Fortran programs which is essential for achieving a good load balancing in large-scale shared memory multiprocessors. Also, the programming environment makes the work of parallelizing a Fortran program by the user much easier compared to the previous tools.

Shared memory multiprocessors provide a (relatively) cheap and efficient way to achieve a potentially high computational power. However, in order to get a peak performance running a single job on a multiprocessor system, the source program should be coded in (or converted from a sequential program into) a parallel form properly (e.g., see [1, 2, 3, 4]).

All of the known Fortran preprocessors allow specifying only one level of parallel sections, i.e. they do not support nested parallelism. It is a common opinion that for scientific programs (that constitute a major core of Fortran code) nested parallelism is not essential. However, this view is based on the assumption that a parallel system has only a few computing units. With the appearance of large-scale multiprocessors that can have as many as 256 CPUs, the vital role of nested parallelism is indispensable.

The current system provides a tool for supporting nested parallelism (nested parallel DO loops) in a Fortran extension similar to that of PREFACE [1]. Another feature of the new tool is that it makes the work of parallelizing an application much easier comparing to that of EPEX/Fortran and PREFACE. The computational model of PREFNEST allows the user to specify only the shared data structures and the parallel sections, while in previous tools the whole program has to be parallelized by the user.

PREFNEST consists of a run time Fortran library and the preprocessor. The PREFNEST preprocessor translates a Fortran program with parallel constructs into a usual sequential Fortran program with appropriate setup for parallel execution.

The computational model of PREFNEST is based on runtime self- scheduling of processes and is similar to that of EPEX/C. The processes are created only once at the beginning of the execution. One of the processes is identified as a parent process; it scans the program and for each piece of parallel work, it creates an entry in the shared queue. The rest of the processes find the work in the queue and join the parent process executing it; in their turn they also can create entries in the queue.

Nesting of parallel...