# NAG Library Function Document

## 2Specification

 #include #include

## 3Description

nag_omp_get_thread_num (x06adc), for multi-threaded implementations, returns the calling OpenMP thread's unique thread number within the current team. The master thread will always return $0$. The remaining threads will return a value between $1$ and the value returned by nag_omp_get_num_threads (x06abc) less $1$.
If this function is called from a sequential part of a multi-threaded program then it will return the value $0$.
In serial implementations of the NAG C Library this function will always return $0$. See the x06 Chapter Introduction for a discussion of the behaviour of these functions when called in serial.

## 4References

OpenMP Specifications http://openmp.org/
Chapman B, Jost G and van der Pas R (2008) Using OpenMP Portable Shared Memory Parallel Programming The MIT Press

None.

None.

Not applicable.

None.

## 10Example

In this example we presume a multi-threaded implementation of the NAG C Library. We call nag_omp_get_thread_num (x06adc) both outside and inside an OpenMP active parallel region. Outside we expect a single thread to display the value $0$. Inside the region we use the value to have only the master thread display the result.
We also call nag_omp_in_parallel (x06afc) inside and outside of the region. Outside we expect it to return $0$, as we are not in an active parallel region, and inside we expect to see the value $1$, indicating that the parallel region is an active one.
If you use a serial implementation of the NAG library, regardless of whether the code is compiled with OpenMP or not, nag_omp_get_num_threads (x06abc) will always return $1$ and nag_omp_get_thread_num (x06adc) and nag_omp_in_parallel (x06afc) will always return $0$. The appropriate results file will be included with the distribution material for your implementation.