Browse Prior Art Database

SYNCHRONIZATION CONSTRUCTS for PARALLEL FORTRAN

IP.com Disclosure Number: IPCOM000038644D
Original Publication Date: 1987-Feb-01
Included in the Prior Art Database: 2005-Jan-31
Document File: 6 page(s) / 23K

Publishing Venue

IBM

Related People

Darema-Rogers, F: AUTHOR [+6]

Abstract

A collection of techniques are described herein that provide a means for multiple processes to cooperate in the execution of DO-loops and to limit execution of serial sections to only one process. The unusual features of these techniques are as follows: 1. Repeated execution of loops and serial sections can be performed without any blocking or explicit serialization. In this respect, the methods described here provide a significant improvement over other methods. 2. Computations involving multiple loops that are mutually independent can be pipelined, by allowing computation to be initiated for some loops while others have not yet been completed. 3.

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

Page 1 of 6

SYNCHRONIZATION CONSTRUCTS for PARALLEL FORTRAN

A collection of techniques are described herein that provide a means for multiple processes to cooperate in the execution of DO-loops and to limit execution of serial sections to only one process. The unusual features of these techniques are as follows: 1. Repeated execution of loops and serial sections can be performed without any blocking or

explicit serialization. In this respect, the

methods described here provide a significant

improvement over other methods. 2. Computations involving multiple loops that are mutually independent can be pipelined, by

allowing computation to be initiated for some

loops while others have not yet been completed. 3. In a time-sharing environment, one slow process will not delay execution of the program by

other processes. The techniques described also exhibit the following beneficial properties: 1. Correct execution of a program using these techniques is independent of the number of

processes (or processors) assigned to the program. 2. These methods can be implemented as an extension of the FORTRAN language. 3. If only one process is assigned to the program, the result is consistent with the usual

serial FORTRAN execution. 4. Because minimal modification of code is

required, the transition from uniprocessing to

parallel processing is facilitated. 5. Parallel execution of a program can be simulated in the uniprocessing environment by

assigning multiple processes to the program. 6. If many processes are assigned to a program and it is run on a multiprocessor system, a

speedup of the job execution time can be

obtained. THE MODEL OF PARALLEL PROCESSING The computation model used for this algorithm was presented in the paper by F. Darema-Rogers, et al., entitled "Using a Single-Program- Multiple-Data Model for Parallel Execution of Scientific Applications" at the SIAM Conference on Parallel Processing for Scientific Computing, November, 1985. It is based on a shared-memory organization, and is termed "Single Program Multiple Data", or SPMD.

Each one of a collection of processes executes the same program, although not necessarily following the same control path, as all the others. This differs from the fork-and-join model of computation, in which a single process executes a program until, at the beginning of some parallel activity, a set of child processes is created to perform the task in parallel and be destroyed at its completion. In the SPMD model, on the contrary, all the processes are created at the start of a job and persist to the end of the job. Each process, upon

1

Page 2 of 6

creation, starts to execute the program. Parallelization is achieved by distributing tasks among the participating processes, either by diverting the flow of control around tasks that are omitted, or by assigning different values for control variables to the various processes. The latter form of parallelization is used for parallel loops, in which the control variable is the...