Support
for
several
features
of
Fortran
2003
was
added
(see
Section 1.7).
The
if
clause
was
extended
to
take
a
directive-name-modifier
that
allows
it
to
apply
to
combined
constructs
(see
Section 3.4).
The
implicit
data-sharing
attribute
for
scalar
variables
in
target
regions
was
changed
to
firstprivate
(see
Section 5.1.1).
Use
of
some
C++
reference
types
was
allowed
in
some
data
sharing
attribute
clauses
(see
Section 5.4).
The
ref,
val,
and
uval
modifiers
were
added
to
the
linear
clause
(see
Section 5.4.6).
Semantics
for
reductions
on
C/C++
array
sections
were
added
and
restrictions
on
the
use
of
arrays
and
pointers
in
reductions
were
removed
(see
Section 5.5.8).
Support
was
added
to
the
map
clauses
to
handle
structure
elements
(see
Section 5.8.3).
To
support
unstructured
data
mapping
for
devices,
the
map
clause
(see
Section 5.8.3)
was
updated
and
the
targetenterdata
(see
Section 13.6)
and
targetexitdata
(see
Section 13.7)
constructs
were
added.
The
declaretarget
directive
was
extended
to
allow
mapping
of
global
variables
to
be
deferred
to
specific
device
executions
and
to
allow
an
extended-list
to
be
specified
in
C/C++
(see
Section 7.8).
The
simdlen
clause
was
added
to
the
simd
construct
(see
Section 10.4)
to
support
specification
of
the
exact
number
of
iterations
desired
per
SIMD
chunk.
A
parameter
was
added
to
the
ordered
clause
of
the
worksharing-loop
construct
(see
Section 11.5)
and
clauses
were
added
to
the
ordered
construct
(see
Section 15.10)
to
support
doacross
loop
nests
and
use
of
the
simd
construct
on
loops
with
loop-carried
backward
dependences.
The
linear
clause
was
added
to
the
worksharing-loop
construct
(see
Section 11.5).
The
priority
clause
was
added
to
the
task
construct
(see
Section 12.5)
to
support
hints
that
specify
the
relative
execution
priority
of
explicit
tasks.
The
omp_get_max_task_priority
routine
was
added
to
return
the
maximum
supported
priority
value
(see
Section 18.5.1)
and
the
OMP_MAX_TASK_PRIORITY
environment
variable
was
added
to
control
the
maximum
priority
value
allowed
(see
Section 21.2.9).
The
taskloop
construct
(see
Section 12.6)
was
added
to
support
nestable
parallel
loops
that
create
OpenMP
tasks.
To
support
interaction
with
native
device
implementations,
the
use_device_ptr
clause
was
added
to
the
targetdata
construct
(see
Section 13.5)
and
the
is_device_ptr
clause
was
added
to
the
target
construct
(see
Section 13.8).
The
nowait
and
depend
clauses
were
added
to
the
target
construct
(see
Section 13.8)
to
improve
support
for
asynchronous
execution
of
target
regions.
The
private,
firstprivate
and
defaultmap
clauses
were
added
to
the
target
construct
(see
Section 13.8).
The
hint
clause
was
added
to
the
critical
construct
(see
Section 15.2).
The
source
and
sink
dependence
types
were
added
to
the
depend
clause
(see
Section 15.9.5)
to
support
doacross
loop
nests.
To
support
a
more
complete
set
of
device
construct
shortcuts,
the
targetparallel,
target
parallel
worksharing-loop,
target
parallel
worksharing-loop
SIMD,
and
targetsimd
(see
Section 17.3)
combined
constructs
were
added.
Device
memory
routines
were
added
to
allow
explicit
allocation,
deallocation,
memory
transfers,
and
memory
associations
(see
Section 18.8).
The
lock
API
was
extended
with
lock
routines
that
support
storing
a
hint
with
a
lock
to
select
a
desired
lock
implementation
for
a
lock’s
intended
usage
by
the
application
code
(see
Section 18.9.2).
C/C++
Grammar
(previously
Appendix
B)
was
moved
to
a
separate
document.