OpenMP Glossary

 

 

atomic - this mutual exclusion directive can be used with a single assignment statement that updates a scalar variable

 

barrier - this synchronization directive defines a point where each thread waits for all other threads to arrive

 

cache miss - required data is not present in the primary cache

 

chunk - this schedule clause option is a set of contiguous loop iterations

 

coarse-grained parallelism - parallelism at the highest possible level in the program and associated with message-passing paradigms

 

conditional compilation - compilation prefix indicates that the statement should be compiled when the -mp option is specified

 

copyin - this parallel directive clause allows slave threads to access the master thread's copy of threadprivate data

 

critical - this mutual exclusion directive makes a thread wait until no other thread is executing within a critical section

 

data independence - no loop iterations can write a value into a memory location that is read or written by any other iteration of that loop

 

deadlock - a situation where two processes are each waiting on a resource being held by the other process

 

default - this parallel directive clause specifies the default data scoping rules to be either shared or private

 

directive - these compiler commands can be applied or ignored depending on compiler options

 

dynamic - this schedule clause option allows the assignment of threads at runtime to vary from one execution to another using chunks

 

dynamic extent - extension of a parallel region to include all the code in subprograms that are invoked either directly or indirectly from within the parallel region

 

dynamic threads - the number of parallel threads executing within the application may be adjusted to match the number of available processors

 

false sharing - a cache line is being shared among multiple processors even thought the different processors are accessing distinct data

 

fine-grained parallelism - usually loop-level parallelism but sometimes instruction level parallelism

 

firstprivate - this parallel directive clause initializes each thread's copy of a private variable to the value of the master's copy

 

fissioning - splitting a loop into a serial and a parallel portion on account of nonremovable data dependence

 

flush - this directive causes the present value of a named shared variable to be immediately written back to memory

 

guided - this schedule clause option uses decreasing sizes of chunks to assigned to threads determined by the implementation

 

if - this do directive clause controls whether the loop should be executed in parallel or serially based on a user-defined runtime test

 

incremental parallelism - the ability to parallelize and application a little at a time at a rate where the developer feels additional effort is worthwhile

 

lastprivate - this parallel directive clause writes back to the master's copy of a private variable the value contained in the private copy belonging to the thread that executed the sequentially last iteration of the loop

 

lexical scope - determines the availability of storage locations at any point of the program

 

loop interchange - the practice of swapping and outer loop and an inner loop statement, usually to make memory references more efficient

 

loop nest – an outer loop and all of the inner loops with it

 

master - this directive identifies a block of code within the parallel region that must be executed by the master thread of the executing parallel team of threads

 

master thread - the single thread of control that begins an OpenMP program which is present for the duration of the program

 

memory fence - a synchronization point inhibits the movement of memory operations across that point

 

nested parallelism - a parallel region is contained within another parallel region

 

nowait - this clause used with the do, sections and single directives, causes the implied end barrier to be ignored by each thread as it completes

 

ordered - this directive identifies a portion of code within each loop iteration that must be executed in the original, sequential order of the loop iterations

 

orphaned - work-sharing constructs that are no longer enclosed within the lexical scope of the parallel region

 

oversubscription - when all of the applications running together request more processors than are currently available

 

parallel region - a block of code defined by a parallel directive that is to be executed concurrently by a team of threads

 

private - this parallel directive clause designates each thread gets a private copy of the named variable for the duration of the parallel construct

 

race condition - when multiple processes read and write a storage location in an unpredictable order which can result in different values with each invocation

 

reduction - a binary operator is applied to a variable and some other value and the result is stored back in the variable

 

runtime - this schedule clause option checks an environment variable at runtime

 

schedule - this do directive clause controls how iterations of the parallel loop are distributed across the team of parallel threads

 

scheduling - the way iterations are assigned to processes

 

scope - whether a variable is shared between OpenMP threads

 

sections - this work-sharing directive defines tasks to be executed in parallel

 

sentinel - a prefix keyword that begins a compiler directive

 

serialized parallel region - a parallel region that executes serially with a team of one thread

 

shared - this parallel directive clause specifies that the named variable should be shared by all the threads in the team for the duration of the parallel construct

 

single – this directive identifies a block of code within the parallel region that must be executed by just one thread of the executing parallel team of threads

 

speedup - the factor by which the time to solution can be improved compared to using only a single processor

 

static - this schedule clause option assigns the same chunk size to all threads

 

static extent - the code that is lexically between the parallel and end parallel directives and also called lexical extent

 

structured block - single-entry/single-exit block

 

synchronization - the mechanisms by which a parallel program can coordinate the execution of multiple threads

 

team - collective name for the master thread and the additional threads created within a parallel region

 

thread - a process executing on its own processor

 

threadprivate  - this directive is used to identify a Fortran common block or C global variable as being private to each thread

 

thread-safe - routines that can be safely executed in parallel

 

trip-count - the number of times a loop body is executed

 

versioning - splitting a loop into a serial and a parallel portion to avoid slowdowns on low trip-counts

 

work-sharing - partitioning of work among a team of threads

 

 

 


References

 

 

 

Books

            Parallel Programming in OpenMP, Rohit Chandra, Ramesh Menon, Leo

                        Dagum, David Kohr, Dror Maydan, Jeff McDonald

                        October 2000, 300 pages, Paper, $39.95, ISBN 1-55860-671-8

            MIPSpro Fortran 77 Programmer's Guide

            MIPSpro 7 Fortran 90 Commands and Directives Reference Manual

            MIPSpro C and C++ Pragmas

 

Web Sites

            http://www.openmp.org/ - OpenMP Architecture Review Board

            http://www.cs.uh.edu/~cOMPunity/ - The Community of OpenMP Users, Researchers,                                    Tool Developers and Providers

 

Workshops

            WOMPAT 2001: Workshop on OpenMP Applications and Tools

                        (http://www.ece.purdue.edu/~eigenman/wompat2001/)

 

 

 

APO

 

Books

            MIPSpro Auto-Parallelizing Option Programmer's Guide

            MIPSpro Fortran 77 Programmer's Guide

            MIPSpro 7 Fortran 90 Commands and Directives Reference Manual

            MIPSpro C and C++ Pragmas

            C Language Reference Manual

            C++ Programmer's Guide