NAG Library Routine Document
x06agf enables or disables nested OpenMP parallelism.
|Integer, Intent (In)||:: ||nesting|C Header Interface
x06agf_ (const Integer *nesting)|
, for multi-threaded implementations, enables or disables the nesting of OpenMP parallel regions by setting an OpenMP Internal Control Variable (ICV) and any vendor library specific options where that is possible. See the Users' Note
for your implementation for details of the scope of x06agf
Nesting is disabled by default in OpenMP.
In serial implementations of the NAG Library x06agf
has no effect. See the Chapter X06
for a discussion of the behaviour of these routines when called in serial.
Chapman B, Jost G and van der Pas R (2008) Using OpenMP Portable Shared Memory Parallel Programming The MIT Press
- 1: – IntegerInput
On entry: if , nesting of OpenMP parallel regions is disabled, otherwise it is enabled.
Error Indicators and Warnings
Parallelism and Performance
x06agf is not threaded in any implementation.
In this example we presume a multi-threaded implementation of the NAG Library. We call x06agf
to enable the nesting of OpenMP parallel regions by setting an ICV. Inside a first, or ‘outer’, parallel region we call x06ahf
to display the status of nesting, and expect to see it return the value
Each thread then spawns a second ‘inner’ parallel region. Within this region we have each thread increment the value total. As there are threads in the outer region and threads in each inner region we expect the final value of this variable to be .
If you use a serial implementation of the NAG library, regardless of whether the code is compiled with OpenMP or not, x06agf
will have no effect and x06ahf
will always return
. The total number of threads will be
. The appropriate results file will be included with the distribution material for your implementation.
Program Text (x06agfe.f90)
Program Results (x06agfe.r)