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