\pagebreak
\chapter{Device Routines}
\label{chap:device}

\section{\code{omp\_is\_initial\_device} Routine}

The following example shows how the \code{omp\_is\_initial\_device} runtime library routine 
can be used to query if a code is executing on the initial host device or on a 
target device. The example then sets the number of threads in the \code{parallel} 
region based on where the code is executing.

\cexample{device}{1c}

\fexample{device}{1f}

\section{\code{omp\_get\_num\_devices} Routine}

The following example shows how the \code{omp\_get\_num\_devices} runtime library routine 
can be used to determine the number of devices.

\cexample{device}{2c}

\fexample{device}{2f}

\section{\code{omp\_set\_default\_device} and \\
\code{omp\_get\_default\_device} Routines}

The following example shows how the \code{omp\_set\_default\_device} and \code{omp\_get\_default\_device} 
runtime library routines can be used to set the default device and determine the 
default device respectively.

\cexample{device}{3c}

\fexample{device}{3f}

