\hypertarget{mpiruntime_8h}{\section{ompi/runtime/mpiruntime.h File Reference}
\label{mpiruntime_8h}\index{ompi/runtime/mpiruntime.\+h@{ompi/runtime/mpiruntime.\+h}}
}


Interface into the M\+P\+I portion of the Open M\+P\+I Run Time Environment.  


{\ttfamily \#include \char`\"{}ompi\+\_\+config.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}opal/class/opal\+\_\+list.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}opal/class/opal\+\_\+hash\+\_\+table.\+h\char`\"{}}\\*
\subsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \hyperlink{mpiruntime_8h_a3cf8dac0752747d7936bdc634b7a6ec9}{O\+M\+P\+I\+\_\+\+T\+H\+R\+E\+A\+D\+L\+E\+V\+E\+L\+\_\+\+S\+I\+N\+G\+L\+E\+\_\+\+B\+F}~0x00000001
\begin{DoxyCompactList}\small\item\em Bitflags to be used for the modex exchange for the various thread levels. \end{DoxyCompactList}\item 
\hypertarget{mpiruntime_8h_ab8b6ecdb9ff2197b6e127bbaf6b8cf47}{\#define {\bfseries O\+M\+P\+I\+\_\+\+T\+H\+R\+E\+A\+D\+L\+E\+V\+E\+L\+\_\+\+F\+U\+N\+N\+E\+L\+E\+D\+\_\+\+B\+F}~0x00000002}\label{mpiruntime_8h_ab8b6ecdb9ff2197b6e127bbaf6b8cf47}

\item 
\hypertarget{mpiruntime_8h_ae7ac01f1728c2168aac72ac5ba9637ef}{\#define {\bfseries O\+M\+P\+I\+\_\+\+T\+H\+R\+E\+A\+D\+L\+E\+V\+E\+L\+\_\+\+S\+E\+R\+I\+A\+L\+I\+Z\+E\+D\+\_\+\+B\+F}~0x00000004}\label{mpiruntime_8h_ae7ac01f1728c2168aac72ac5ba9637ef}

\item 
\hypertarget{mpiruntime_8h_a148f17e3cfc5e206fdea3473c8922303}{\#define {\bfseries O\+M\+P\+I\+\_\+\+T\+H\+R\+E\+A\+D\+L\+E\+V\+E\+L\+\_\+\+M\+U\+L\+T\+I\+P\+L\+E\+\_\+\+B\+F}~0x00000008}\label{mpiruntime_8h_a148f17e3cfc5e206fdea3473c8922303}

\item 
\#define {\bfseries O\+M\+P\+I\+\_\+\+T\+H\+R\+E\+A\+D\+L\+E\+V\+E\+L\+\_\+\+S\+E\+T\+\_\+\+B\+I\+T\+F\+L\+A\+G}(threadlevelin, threadlevelout)
\item 
\hypertarget{mpiruntime_8h_af78cbad7c8bec70082b0e4a1b6d26b6b}{\#define {\bfseries O\+M\+P\+I\+\_\+\+T\+H\+R\+E\+A\+D\+L\+E\+V\+E\+L\+\_\+\+I\+S\+\_\+\+M\+U\+L\+T\+I\+P\+L\+E}(threadlevel)~(threadlevel \& O\+M\+P\+I\+\_\+\+T\+H\+R\+E\+A\+D\+L\+E\+V\+E\+L\+\_\+\+M\+U\+L\+T\+I\+P\+L\+E\+\_\+\+B\+F)}\label{mpiruntime_8h_af78cbad7c8bec70082b0e4a1b6d26b6b}

\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{mpiruntime_8h_a1739f1b40075814d4a9a1f86d9ea672d}{O\+M\+P\+I\+\_\+\+D\+E\+C\+L\+S\+P\+E\+C void {\bfseries ompi\+\_\+warn\+\_\+fork} (void)}\label{mpiruntime_8h_a1739f1b40075814d4a9a1f86d9ea672d}

\item 
int \hyperlink{mpiruntime_8h_a6352a08abfa7bd8a402a866ecebec0f3}{ompi\+\_\+mpi\+\_\+init} (int argc, char $\ast$$\ast$argv, int requested, int $\ast$provided)
\begin{DoxyCompactList}\small\item\em Initialize the Open M\+P\+I M\+P\+I environment. \end{DoxyCompactList}\item 
int \hyperlink{mpiruntime_8h_a657cd1789f5cbe7dbb711f6c836398e6}{ompi\+\_\+mpi\+\_\+finalize} (void)
\begin{DoxyCompactList}\small\item\em Finalize the Open M\+P\+I M\+P\+I environment. \end{DoxyCompactList}\item 
\hypertarget{mpiruntime_8h_a504419217b07462f0961bcff8e7c1846}{O\+M\+P\+I\+\_\+\+D\+E\+C\+L\+S\+P\+E\+C int \hyperlink{mpiruntime_8h_a504419217b07462f0961bcff8e7c1846}{ompi\+\_\+mpi\+\_\+abort} (struct \hyperlink{structompi__communicator__t}{ompi\+\_\+communicator\+\_\+t} $\ast$comm, int errcode, bool kill\+\_\+remote\+\_\+of\+\_\+intercomm)}\label{mpiruntime_8h_a504419217b07462f0961bcff8e7c1846}

\begin{DoxyCompactList}\small\item\em Abort the processes of comm. \end{DoxyCompactList}\item 
\hypertarget{mpiruntime_8h_a95767a0792c618767815fe1d4e5ff010}{int \hyperlink{mpiruntime_8h_a95767a0792c618767815fe1d4e5ff010}{ompi\+\_\+init\+\_\+preconnect\+\_\+mpi} (void)}\label{mpiruntime_8h_a95767a0792c618767815fe1d4e5ff010}

\begin{DoxyCompactList}\small\item\em Do a preconnect of M\+P\+I connections (i.\+e., force connections to be made if they will be made). \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Variables}
\begin{DoxyCompactItemize}
\item 
\hypertarget{mpiruntime_8h_abae8c33b06c96507b595f8d8444f0a4a}{O\+M\+P\+I\+\_\+\+D\+E\+C\+L\+S\+P\+E\+C bool \hyperlink{mpiruntime_8h_abae8c33b06c96507b595f8d8444f0a4a}{ompi\+\_\+mpi\+\_\+init\+\_\+started}}\label{mpiruntime_8h_abae8c33b06c96507b595f8d8444f0a4a}

\begin{DoxyCompactList}\small\item\em Did mpi start to initialize? \end{DoxyCompactList}\item 
\hypertarget{mpiruntime_8h_a6ca176ecf437e1744c29eed5b0578ac2}{O\+M\+P\+I\+\_\+\+D\+E\+C\+L\+S\+P\+E\+C bool \hyperlink{mpiruntime_8h_a6ca176ecf437e1744c29eed5b0578ac2}{ompi\+\_\+mpi\+\_\+initialized}}\label{mpiruntime_8h_a6ca176ecf437e1744c29eed5b0578ac2}

\begin{DoxyCompactList}\small\item\em Is mpi initialized? \end{DoxyCompactList}\item 
\hypertarget{mpiruntime_8h_a3b0d39387cf48668c78f31eb125e23d9}{O\+M\+P\+I\+\_\+\+D\+E\+C\+L\+S\+P\+E\+C bool \hyperlink{mpiruntime_8h_a3b0d39387cf48668c78f31eb125e23d9}{ompi\+\_\+mpi\+\_\+finalized}}\label{mpiruntime_8h_a3b0d39387cf48668c78f31eb125e23d9}

\begin{DoxyCompactList}\small\item\em Has mpi been finalized? \end{DoxyCompactList}\item 
\hypertarget{mpiruntime_8h_a4fca43cfee874b64ace5109cbdf4d916}{O\+M\+P\+I\+\_\+\+D\+E\+C\+L\+S\+P\+E\+C bool \hyperlink{mpiruntime_8h_a4fca43cfee874b64ace5109cbdf4d916}{ompi\+\_\+mpi\+\_\+thread\+\_\+multiple}}\label{mpiruntime_8h_a4fca43cfee874b64ace5109cbdf4d916}

\begin{DoxyCompactList}\small\item\em Do we have multiple threads? \end{DoxyCompactList}\item 
\hypertarget{mpiruntime_8h_aaf3aa6f6093509d8c22aba0bb10e72ee}{O\+M\+P\+I\+\_\+\+D\+E\+C\+L\+S\+P\+E\+C int \hyperlink{mpiruntime_8h_aaf3aa6f6093509d8c22aba0bb10e72ee}{ompi\+\_\+mpi\+\_\+thread\+\_\+requested}}\label{mpiruntime_8h_aaf3aa6f6093509d8c22aba0bb10e72ee}

\begin{DoxyCompactList}\small\item\em Thread level requested to {\ttfamily M\+P\+I\+\_\+\+Init\+\_\+thread()} \end{DoxyCompactList}\item 
\hypertarget{mpiruntime_8h_a5c91262385fa5a41b4c167e4a2819991}{O\+M\+P\+I\+\_\+\+D\+E\+C\+L\+S\+P\+E\+C int \hyperlink{mpiruntime_8h_a5c91262385fa5a41b4c167e4a2819991}{ompi\+\_\+mpi\+\_\+thread\+\_\+provided}}\label{mpiruntime_8h_a5c91262385fa5a41b4c167e4a2819991}

\begin{DoxyCompactList}\small\item\em Thread level provided by Open M\+P\+I. \end{DoxyCompactList}\item 
\hypertarget{mpiruntime_8h_ab878bd9e05340ee2762bdd274800b009}{O\+M\+P\+I\+\_\+\+D\+E\+C\+L\+S\+P\+E\+C struct \\*
\hyperlink{structopal__thread__t}{opal\+\_\+thread\+\_\+t} $\ast$ \hyperlink{mpiruntime_8h_ab878bd9e05340ee2762bdd274800b009}{ompi\+\_\+mpi\+\_\+main\+\_\+thread}}\label{mpiruntime_8h_ab878bd9e05340ee2762bdd274800b009}

\begin{DoxyCompactList}\small\item\em Identifier of the main thread. \end{DoxyCompactList}\item 
\hypertarget{mpiruntime_8h_aa97bc4d621b0153e42282d74dfbbad56}{O\+M\+P\+I\+\_\+\+D\+E\+C\+L\+S\+P\+E\+C bool \hyperlink{mpiruntime_8h_aa97bc4d621b0153e42282d74dfbbad56}{ompi\+\_\+warn\+\_\+on\+\_\+fork}}\label{mpiruntime_8h_aa97bc4d621b0153e42282d74dfbbad56}

\begin{DoxyCompactList}\small\item\em Do we want to be warned on fork or not? \end{DoxyCompactList}\item 
O\+M\+P\+I\+\_\+\+D\+E\+C\+L\+S\+P\+E\+C \hyperlink{structopal__list__t}{opal\+\_\+list\+\_\+t} \hyperlink{mpiruntime_8h_aae5e5e2ca51bd5f9339384ea6b9d20cc}{ompi\+\_\+registered\+\_\+datareps}
\begin{DoxyCompactList}\small\item\em In ompi\+\_\+mpi\+\_\+init\+: a list of all memory associated with calling M\+P\+I\+\_\+\+R\+E\+G\+I\+S\+T\+E\+R\+\_\+\+D\+A\+T\+A\+R\+E\+P so that we can free it during M\+P\+I\+\_\+\+F\+I\+N\+A\+L\+I\+Z\+E. \end{DoxyCompactList}\item 
\hyperlink{structopal__hash__table__t}{opal\+\_\+hash\+\_\+table\+\_\+t} \hyperlink{mpiruntime_8h_ae5389125424dd8fe5fdbbc6b8248a09b}{ompi\+\_\+mpi\+\_\+f90\+\_\+integer\+\_\+hashtable}
\begin{DoxyCompactList}\small\item\em In ompi\+\_\+mpi\+\_\+init\+: the lists of Fortran 90 mathing datatypes. \end{DoxyCompactList}\item 
\hypertarget{mpiruntime_8h_a00b590cd632f435d230552f414710165}{\hyperlink{structopal__hash__table__t}{opal\+\_\+hash\+\_\+table\+\_\+t} {\bfseries ompi\+\_\+mpi\+\_\+f90\+\_\+real\+\_\+hashtable}}\label{mpiruntime_8h_a00b590cd632f435d230552f414710165}

\item 
\hypertarget{mpiruntime_8h_aacba10faa8a72fd93b64f5395ffa62c3}{\hyperlink{structopal__hash__table__t}{opal\+\_\+hash\+\_\+table\+\_\+t} {\bfseries ompi\+\_\+mpi\+\_\+f90\+\_\+complex\+\_\+hashtable}}\label{mpiruntime_8h_aacba10faa8a72fd93b64f5395ffa62c3}

\item 
\hypertarget{mpiruntime_8h_a534a8a0db380df123a70cf300c11f1a1}{O\+M\+P\+I\+\_\+\+D\+E\+C\+L\+S\+P\+E\+C const char \hyperlink{mpiruntime_8h_a534a8a0db380df123a70cf300c11f1a1}{ompi\+\_\+version\+\_\+string} \mbox{[}$\,$\mbox{]}}\label{mpiruntime_8h_a534a8a0db380df123a70cf300c11f1a1}

\begin{DoxyCompactList}\small\item\em version string of ompi \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
Interface into the M\+P\+I portion of the Open M\+P\+I Run Time Environment. 



\subsection{Macro Definition Documentation}
\hypertarget{mpiruntime_8h_afd5a61659a845a68c0f11cb1dbf557c9}{\index{mpiruntime.\+h@{mpiruntime.\+h}!O\+M\+P\+I\+\_\+\+T\+H\+R\+E\+A\+D\+L\+E\+V\+E\+L\+\_\+\+S\+E\+T\+\_\+\+B\+I\+T\+F\+L\+A\+G@{O\+M\+P\+I\+\_\+\+T\+H\+R\+E\+A\+D\+L\+E\+V\+E\+L\+\_\+\+S\+E\+T\+\_\+\+B\+I\+T\+F\+L\+A\+G}}
\index{O\+M\+P\+I\+\_\+\+T\+H\+R\+E\+A\+D\+L\+E\+V\+E\+L\+\_\+\+S\+E\+T\+\_\+\+B\+I\+T\+F\+L\+A\+G@{O\+M\+P\+I\+\_\+\+T\+H\+R\+E\+A\+D\+L\+E\+V\+E\+L\+\_\+\+S\+E\+T\+\_\+\+B\+I\+T\+F\+L\+A\+G}!mpiruntime.\+h@{mpiruntime.\+h}}
\subsubsection[{O\+M\+P\+I\+\_\+\+T\+H\+R\+E\+A\+D\+L\+E\+V\+E\+L\+\_\+\+S\+E\+T\+\_\+\+B\+I\+T\+F\+L\+A\+G}]{\setlength{\rightskip}{0pt plus 5cm}\#define O\+M\+P\+I\+\_\+\+T\+H\+R\+E\+A\+D\+L\+E\+V\+E\+L\+\_\+\+S\+E\+T\+\_\+\+B\+I\+T\+F\+L\+A\+G(
\begin{DoxyParamCaption}
\item[{}]{threadlevelin, }
\item[{}]{threadlevelout}
\end{DoxyParamCaption}
)}}\label{mpiruntime_8h_afd5a61659a845a68c0f11cb1dbf557c9}
{\bfseries Value\+:}
\begin{DoxyCode}
\{ \(\backslash\)
    if ( MPI\_THREAD\_SINGLE == threadlevelin ) \{                 \(\backslash\)
        threadlevelout |= \hyperlink{mpiruntime_8h_a3cf8dac0752747d7936bdc634b7a6ec9}{OMPI\_THREADLEVEL\_SINGLE\_BF};           \(\backslash\)
    \} \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} ( MPI\_THREAD\_FUNNELED == threadlevelin ) \{        \(\backslash\)
        threadlevelout |= OMPI\_THREADLEVEL\_FUNNELED\_BF;         \(\backslash\)
    \} \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} ( MPI\_THREAD\_SERIALIZED == threadlevelin ) \{      \(\backslash\)
        threadlevelout |= OMPI\_THREADLEVEL\_SERIALIZED\_BF;       \(\backslash\)
    \} \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} ( MPI\_THREAD\_MULTIPLE == threadlevelin ) \{       \(\backslash\)
        threadlevelout |= OMPI\_THREADLEVEL\_MULTIPLE\_BF;         \(\backslash\)
    \}\}
\end{DoxyCode}
\hypertarget{mpiruntime_8h_a3cf8dac0752747d7936bdc634b7a6ec9}{\index{mpiruntime.\+h@{mpiruntime.\+h}!O\+M\+P\+I\+\_\+\+T\+H\+R\+E\+A\+D\+L\+E\+V\+E\+L\+\_\+\+S\+I\+N\+G\+L\+E\+\_\+\+B\+F@{O\+M\+P\+I\+\_\+\+T\+H\+R\+E\+A\+D\+L\+E\+V\+E\+L\+\_\+\+S\+I\+N\+G\+L\+E\+\_\+\+B\+F}}
\index{O\+M\+P\+I\+\_\+\+T\+H\+R\+E\+A\+D\+L\+E\+V\+E\+L\+\_\+\+S\+I\+N\+G\+L\+E\+\_\+\+B\+F@{O\+M\+P\+I\+\_\+\+T\+H\+R\+E\+A\+D\+L\+E\+V\+E\+L\+\_\+\+S\+I\+N\+G\+L\+E\+\_\+\+B\+F}!mpiruntime.\+h@{mpiruntime.\+h}}
\subsubsection[{O\+M\+P\+I\+\_\+\+T\+H\+R\+E\+A\+D\+L\+E\+V\+E\+L\+\_\+\+S\+I\+N\+G\+L\+E\+\_\+\+B\+F}]{\setlength{\rightskip}{0pt plus 5cm}\#define O\+M\+P\+I\+\_\+\+T\+H\+R\+E\+A\+D\+L\+E\+V\+E\+L\+\_\+\+S\+I\+N\+G\+L\+E\+\_\+\+B\+F~0x00000001}}\label{mpiruntime_8h_a3cf8dac0752747d7936bdc634b7a6ec9}


Bitflags to be used for the modex exchange for the various thread levels. 

Required to support heterogeneous environments 

\subsection{Function Documentation}
\hypertarget{mpiruntime_8h_a657cd1789f5cbe7dbb711f6c836398e6}{\index{mpiruntime.\+h@{mpiruntime.\+h}!ompi\+\_\+mpi\+\_\+finalize@{ompi\+\_\+mpi\+\_\+finalize}}
\index{ompi\+\_\+mpi\+\_\+finalize@{ompi\+\_\+mpi\+\_\+finalize}!mpiruntime.\+h@{mpiruntime.\+h}}
\subsubsection[{ompi\+\_\+mpi\+\_\+finalize}]{\setlength{\rightskip}{0pt plus 5cm}int ompi\+\_\+mpi\+\_\+finalize (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}}\label{mpiruntime_8h_a657cd1789f5cbe7dbb711f6c836398e6}


Finalize the Open M\+P\+I M\+P\+I environment. 

\begin{DoxyReturn}{Returns}
M\+P\+I\+\_\+\+S\+U\+C\+C\+E\+S\+S if successful 

Error code if unsuccessful
\end{DoxyReturn}
Should be called after all M\+P\+I functionality is complete (usually during M\+P\+I\+\_\+\+F\+I\+N\+A\+L\+I\+Z\+E). 

References ompi\+\_\+communicator\+\_\+t\+::c\+\_\+keyhash, C\+O\+M\+M\+\_\+\+A\+T\+T\+R, mca\+\_\+base\+\_\+param\+\_\+reg\+\_\+int\+\_\+name(), mca\+\_\+coll\+\_\+base\+\_\+close(), mca\+\_\+io\+\_\+base\+\_\+close(), mca\+\_\+io\+\_\+base\+\_\+components\+\_\+available\+\_\+valid, mca\+\_\+io\+\_\+base\+\_\+components\+\_\+opened\+\_\+valid, orte\+\_\+proc\+\_\+info\+\_\+t\+::nodename, O\+B\+J\+\_\+\+D\+E\+S\+T\+R\+U\+C\+T, O\+B\+J\+\_\+\+R\+E\+L\+E\+A\+S\+E, ompi\+\_\+attr\+\_\+delete\+\_\+all(), ompi\+\_\+attr\+\_\+finalize(), ompi\+\_\+errcode\+\_\+intern\+\_\+finalize(), ompi\+\_\+errhandler\+\_\+finalize(), ompi\+\_\+group\+\_\+finalize(), ompi\+\_\+mpi\+\_\+errcode\+\_\+finalize(), ompi\+\_\+mpi\+\_\+f90\+\_\+integer\+\_\+hashtable, ompi\+\_\+mpi\+\_\+finalized, ompi\+\_\+op\+\_\+finalize(), ompi\+\_\+proc\+\_\+finalize(), ompi\+\_\+registered\+\_\+datareps, ompi\+\_\+request\+\_\+finalize(), opal\+\_\+finalize\+\_\+util(), opal\+\_\+list\+\_\+remove\+\_\+first(), opal\+\_\+output(), opal\+\_\+progress\+\_\+event\+\_\+users\+\_\+increment(), opal\+\_\+progress\+\_\+set\+\_\+event\+\_\+flag(), orte\+\_\+finalize(), O\+R\+T\+E\+\_\+\+P\+R\+O\+C\+\_\+\+M\+Y\+\_\+\+N\+A\+M\+E, orte\+\_\+process\+\_\+info, orte\+\_\+show\+\_\+help(), and orte\+\_\+proc\+\_\+info\+\_\+t\+::pid.

\hypertarget{mpiruntime_8h_a6352a08abfa7bd8a402a866ecebec0f3}{\index{mpiruntime.\+h@{mpiruntime.\+h}!ompi\+\_\+mpi\+\_\+init@{ompi\+\_\+mpi\+\_\+init}}
\index{ompi\+\_\+mpi\+\_\+init@{ompi\+\_\+mpi\+\_\+init}!mpiruntime.\+h@{mpiruntime.\+h}}
\subsubsection[{ompi\+\_\+mpi\+\_\+init}]{\setlength{\rightskip}{0pt plus 5cm}int ompi\+\_\+mpi\+\_\+init (
\begin{DoxyParamCaption}
\item[{int}]{argc, }
\item[{char $\ast$$\ast$}]{argv, }
\item[{int}]{requested, }
\item[{int $\ast$}]{provided}
\end{DoxyParamCaption}
)}}\label{mpiruntime_8h_a6352a08abfa7bd8a402a866ecebec0f3}


Initialize the Open M\+P\+I M\+P\+I environment. 


\begin{DoxyParams}{Parameters}
{\em argc} & argc, typically from main() (I\+N) \\
\hline
{\em argv} & argv, typically from main() (I\+N) \\
\hline
{\em requested} & Thread support that is requested (I\+N) \\
\hline
{\em provided} & Thread support that is provided (O\+U\+T)\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
M\+P\+I\+\_\+\+S\+U\+C\+C\+E\+S\+S if successful 

Error code if unsuccessful
\end{DoxyReturn}
Intialize all support code needed for M\+P\+I applications. This function should only be called by M\+P\+I applications (including singletons). If this function is called, ompi\+\_\+init() and ompi\+\_\+rte\+\_\+init() should {\itshape not} be called.

It is permissable to pass in (0, N\+U\+L\+L) for (argc, argv). These values are monotonic; M\+P\+I\+\_\+\+T\+H\+R\+E\+A\+D\+\_\+\+S\+I\+N\+G\+L\+E $<$ M\+P\+I\+\_\+\+T\+H\+R\+E\+A\+D\+\_\+\+F\+U\+N\+N\+E\+L\+E\+D $<$ M\+P\+I\+\_\+\+T\+H\+R\+E\+A\+D\+\_\+\+S\+E\+R\+I\+A\+L\+I\+Z\+E\+D $<$ M\+P\+I\+\_\+\+T\+H\+R\+E\+A\+D\+\_\+\+M\+U\+L\+T\+I\+P\+L\+E. If possible, the call will return provided = required. Failing this, the call will return the least supported level such that provided $>$ required. Finally, if the user requirement cannot be satisfied, then the call will return in provided the highest supported level.

References hwloc\+\_\+obj\+::attr, hwloc\+\_\+obj\+\_\+attr\+\_\+u\+::hwloc\+\_\+cache\+\_\+attr\+\_\+s\+::depth, hwloc\+\_\+bitmap\+\_\+alloc(), hwloc\+\_\+bitmap\+\_\+compare(), hwloc\+\_\+bitmap\+\_\+free(), hwloc\+\_\+bitmap\+\_\+list\+\_\+snprintf(), hwloc\+\_\+bitmap\+\_\+zero(), H\+W\+L\+O\+C\+\_\+\+C\+P\+U\+B\+I\+N\+D\+\_\+\+P\+R\+O\+C\+E\+S\+S, hwloc\+\_\+get\+\_\+cpubind(), hwloc\+\_\+get\+\_\+root\+\_\+obj(), H\+W\+L\+O\+C\+\_\+\+O\+B\+J\+\_\+\+C\+A\+C\+H\+E, H\+W\+L\+O\+C\+\_\+\+O\+B\+J\+\_\+\+C\+O\+R\+E, H\+W\+L\+O\+C\+\_\+\+O\+B\+J\+\_\+\+N\+O\+D\+E, H\+W\+L\+O\+C\+\_\+\+O\+B\+J\+\_\+\+P\+U, H\+W\+L\+O\+C\+\_\+\+O\+B\+J\+\_\+\+S\+O\+C\+K\+E\+T, hwloc\+\_\+set\+\_\+cpubind(), hwloc\+\_\+topology\+\_\+get\+\_\+support(), mca\+\_\+allocator\+\_\+base\+\_\+open(), mca\+\_\+base\+\_\+param\+\_\+find(), mca\+\_\+base\+\_\+param\+\_\+lookup\+\_\+int(), mca\+\_\+base\+\_\+param\+\_\+reg\+\_\+int\+\_\+name(), mca\+\_\+base\+\_\+param\+\_\+reg\+\_\+string\+\_\+name(), mca\+\_\+base\+\_\+param\+\_\+set\+\_\+string(), mca\+\_\+coll\+\_\+base\+\_\+comm\+\_\+select(), mca\+\_\+coll\+\_\+base\+\_\+find\+\_\+available(), mca\+\_\+coll\+\_\+base\+\_\+open(), mca\+\_\+mpool\+\_\+base\+\_\+init(), mca\+\_\+mpool\+\_\+base\+\_\+open(), mca\+\_\+rcache\+\_\+base\+\_\+open(), orte\+\_\+proc\+\_\+info\+\_\+t\+::nodename, O\+B\+J\+\_\+\+C\+O\+N\+S\+T\+R\+U\+C\+T, ompi\+\_\+attr\+\_\+init(), ompi\+\_\+errcode\+\_\+intern\+\_\+init(), ompi\+\_\+errhandler\+\_\+init(), ompi\+\_\+errhandler\+\_\+runtime\+\_\+callback(), ompi\+\_\+group\+\_\+init(), ompi\+\_\+init\+\_\+preconnect\+\_\+mpi(), ompi\+\_\+modex\+\_\+send\+\_\+string(), ompi\+\_\+mpi\+\_\+errcode\+\_\+init(), ompi\+\_\+mpi\+\_\+init\+\_\+started, ompi\+\_\+mpi\+\_\+initialized, ompi\+\_\+mpi\+\_\+thread\+\_\+multiple, ompi\+\_\+mpi\+\_\+thread\+\_\+provided, ompi\+\_\+mpi\+\_\+thread\+\_\+requested, ompi\+\_\+op\+\_\+base\+\_\+find\+\_\+available(), ompi\+\_\+op\+\_\+base\+\_\+open(), ompi\+\_\+op\+\_\+init(), ompi\+\_\+osc\+\_\+base\+\_\+open(), ompi\+\_\+proc\+\_\+complete\+\_\+init(), ompi\+\_\+proc\+\_\+init(), ompi\+\_\+proc\+\_\+world(), ompi\+\_\+request\+\_\+init(), ompi\+\_\+wait\+\_\+for\+\_\+debugger(), opal\+\_\+hash\+\_\+table\+\_\+init(), opal\+\_\+init\+\_\+util(), opal\+\_\+output(), opal\+\_\+progress\+\_\+event\+\_\+users\+\_\+decrement(), opal\+\_\+progress\+\_\+set\+\_\+event\+\_\+flag(), opal\+\_\+progress\+\_\+set\+\_\+event\+\_\+poll\+\_\+rate(), opal\+\_\+progress\+\_\+set\+\_\+yield\+\_\+when\+\_\+idle(), opal\+\_\+set\+\_\+using\+\_\+threads(), orte\+\_\+init(), O\+R\+T\+E\+\_\+\+P\+R\+O\+C\+\_\+\+M\+Y\+\_\+\+N\+A\+M\+E, orte\+\_\+process\+\_\+info, orte\+\_\+show\+\_\+help(), hwloc\+\_\+obj\+::parent, orte\+\_\+proc\+\_\+info\+\_\+t\+::pid, hwloc\+\_\+topology\+\_\+cpubind\+\_\+support\+::set\+\_\+thisproc\+\_\+cpubind, and hwloc\+\_\+obj\+::type.



\subsection{Variable Documentation}
\hypertarget{mpiruntime_8h_ae5389125424dd8fe5fdbbc6b8248a09b}{\index{mpiruntime.\+h@{mpiruntime.\+h}!ompi\+\_\+mpi\+\_\+f90\+\_\+integer\+\_\+hashtable@{ompi\+\_\+mpi\+\_\+f90\+\_\+integer\+\_\+hashtable}}
\index{ompi\+\_\+mpi\+\_\+f90\+\_\+integer\+\_\+hashtable@{ompi\+\_\+mpi\+\_\+f90\+\_\+integer\+\_\+hashtable}!mpiruntime.\+h@{mpiruntime.\+h}}
\subsubsection[{ompi\+\_\+mpi\+\_\+f90\+\_\+integer\+\_\+hashtable}]{\setlength{\rightskip}{0pt plus 5cm}{\bf opal\+\_\+hash\+\_\+table\+\_\+t} ompi\+\_\+mpi\+\_\+f90\+\_\+integer\+\_\+hashtable}}\label{mpiruntime_8h_ae5389125424dd8fe5fdbbc6b8248a09b}


In ompi\+\_\+mpi\+\_\+init\+: the lists of Fortran 90 mathing datatypes. 

We need these lists and hashtables in order to satisfy the new requirements introduced in M\+P\+I 2-\/1 Sect. 10.\+2.\+5, M\+P\+I\+\_\+\+T\+Y\+P\+E\+\_\+\+C\+R\+E\+A\+T\+E\+\_\+\+F90\+\_\+xxxx, page 295, line 47. 

Referenced by ompi\+\_\+mpi\+\_\+finalize().

\hypertarget{mpiruntime_8h_aae5e5e2ca51bd5f9339384ea6b9d20cc}{\index{mpiruntime.\+h@{mpiruntime.\+h}!ompi\+\_\+registered\+\_\+datareps@{ompi\+\_\+registered\+\_\+datareps}}
\index{ompi\+\_\+registered\+\_\+datareps@{ompi\+\_\+registered\+\_\+datareps}!mpiruntime.\+h@{mpiruntime.\+h}}
\subsubsection[{ompi\+\_\+registered\+\_\+datareps}]{\setlength{\rightskip}{0pt plus 5cm}O\+M\+P\+I\+\_\+\+D\+E\+C\+L\+S\+P\+E\+C {\bf opal\+\_\+list\+\_\+t} ompi\+\_\+registered\+\_\+datareps}}\label{mpiruntime_8h_aae5e5e2ca51bd5f9339384ea6b9d20cc}


In ompi\+\_\+mpi\+\_\+init\+: a list of all memory associated with calling M\+P\+I\+\_\+\+R\+E\+G\+I\+S\+T\+E\+R\+\_\+\+D\+A\+T\+A\+R\+E\+P so that we can free it during M\+P\+I\+\_\+\+F\+I\+N\+A\+L\+I\+Z\+E. 



Referenced by ompi\+\_\+mpi\+\_\+finalize().

