\hypertarget{pml_8h}{\section{ompi/mca/pml/pml.h File Reference}
\label{pml_8h}\index{ompi/mca/pml/pml.\+h@{ompi/mca/pml/pml.\+h}}
}


P2\+P Management Layer (P\+M\+L)  


{\ttfamily \#include \char`\"{}ompi\+\_\+config.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}opal/mca/mca.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}mpi.\+h\char`\"{}}\\*
\subsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{structmca__pml__base__component__2__0__0__t}{mca\+\_\+pml\+\_\+base\+\_\+component\+\_\+2\+\_\+0\+\_\+0\+\_\+t}
\begin{DoxyCompactList}\small\item\em P\+M\+L component version and interface functions. \end{DoxyCompactList}\item 
struct \hyperlink{structmca__pml__base__module__1__0__0__t}{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+1\+\_\+0\+\_\+0\+\_\+t}
\begin{DoxyCompactList}\small\item\em P\+M\+L instance. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\hypertarget{pml_8h_a2cb69ae22ca8e85d7289710f96db59a4}{\#define {\bfseries O\+M\+P\+I\+\_\+\+A\+N\+Y\+\_\+\+T\+A\+G}~M\+P\+I\+\_\+\+A\+N\+Y\+\_\+\+T\+A\+G}\label{pml_8h_a2cb69ae22ca8e85d7289710f96db59a4}

\item 
\hypertarget{pml_8h_a62ec4e658cec0d53e466bd9841315461}{\#define {\bfseries O\+M\+P\+I\+\_\+\+A\+N\+Y\+\_\+\+S\+O\+U\+R\+C\+E}~M\+P\+I\+\_\+\+A\+N\+Y\+\_\+\+S\+O\+U\+R\+C\+E}\label{pml_8h_a62ec4e658cec0d53e466bd9841315461}

\item 
\hypertarget{pml_8h_acc3bc6a845d111e3e64cfa2fdbf185d2}{\#define {\bfseries O\+M\+P\+I\+\_\+\+P\+R\+O\+C\+\_\+\+N\+U\+L\+L}~M\+P\+I\+\_\+\+P\+R\+O\+C\+\_\+\+N\+U\+L\+L}\label{pml_8h_acc3bc6a845d111e3e64cfa2fdbf185d2}

\item 
\#define {\bfseries M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+A\+S\+E\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+2\+\_\+0\+\_\+0}
\item 
\hypertarget{pml_8h_aef4c240ab579020b48fffde5c0c9113d}{\#define {\bfseries M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+C\+A\+L\+L}(a)~mca\+\_\+pml.\+pml\+\_\+ \#\# a}\label{pml_8h_aef4c240ab579020b48fffde5c0c9113d}

\end{DoxyCompactItemize}
\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
typedef struct \\*
\hyperlink{structmca__pml__base__module__1__0__0__t}{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+1\+\_\+0\+\_\+0\+\_\+t} $\ast$($\ast$ \hyperlink{pml_8h_aef664619f2a6c8b247891a9c6f94a9f2}{mca\+\_\+pml\+\_\+base\+\_\+component\+\_\+init\+\_\+fn\+\_\+t} )(int $\ast$priority, bool enable\+\_\+progress\+\_\+threads, bool enable\+\_\+mpi\+\_\+threads)
\begin{DoxyCompactList}\small\item\em M\+C\+A-\/$>$P\+M\+L Called by M\+C\+A framework to initialize the component. \end{DoxyCompactList}\item 
\hypertarget{pml_8h_ae913fa66b0fcbb321949008a7b883228}{typedef int($\ast$ {\bfseries mca\+\_\+pml\+\_\+base\+\_\+component\+\_\+finalize\+\_\+fn\+\_\+t} )(void)}\label{pml_8h_ae913fa66b0fcbb321949008a7b883228}

\item 
\hypertarget{pml_8h_a851af873378cfbf440a0b8b4f05ba166}{typedef struct \\*
\hyperlink{structmca__pml__base__component__2__0__0__t}{mca\+\_\+pml\+\_\+base\+\_\+component\+\_\+2\+\_\+0\+\_\+0\+\_\+t} {\bfseries mca\+\_\+pml\+\_\+base\+\_\+component\+\_\+2\+\_\+0\+\_\+0\+\_\+t}}\label{pml_8h_a851af873378cfbf440a0b8b4f05ba166}

\item 
\hypertarget{pml_8h_a7a5bcac13ed19aab95105285f4fe5b88}{typedef \\*
\hyperlink{structmca__pml__base__component__2__0__0__t}{mca\+\_\+pml\+\_\+base\+\_\+component\+\_\+2\+\_\+0\+\_\+0\+\_\+t} {\bfseries mca\+\_\+pml\+\_\+base\+\_\+component\+\_\+t}}\label{pml_8h_a7a5bcac13ed19aab95105285f4fe5b88}

\item 
typedef int($\ast$ \hyperlink{pml_8h_a69e3edc73733db283448a357a3b8d560}{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+add\+\_\+procs\+\_\+fn\+\_\+t} )(struct \hyperlink{structompi__proc__t}{ompi\+\_\+proc\+\_\+t} $\ast$$\ast$procs, size\+\_\+t nprocs)
\begin{DoxyCompactList}\small\item\em M\+C\+A management functions. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{pml_8h_adf5e2be6058d2b494fd750bc962bf2ce}{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+del\+\_\+procs\+\_\+fn\+\_\+t} )(struct \hyperlink{structompi__proc__t}{ompi\+\_\+proc\+\_\+t} $\ast$$\ast$procs, size\+\_\+t nprocs)
\begin{DoxyCompactList}\small\item\em Downcall from M\+P\+I/\+R\+T\+E layer when processes are terminated. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{pml_8h_ac2e6394c72fc3fc15accb0ad0cf9eb38}{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+enable\+\_\+fn\+\_\+t} )(bool enable)
\begin{DoxyCompactList}\small\item\em Downcall from M\+C\+A layer to enable the P\+M\+L/\+B\+T\+Ls. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{pml_8h_ab98335246e59ff930cf074de91967f23}{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+progress\+\_\+fn\+\_\+t} )(void)
\begin{DoxyCompactList}\small\item\em For non-\/threaded case, provides M\+C\+A the opportunity to progress outstanding requests on all btls. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{pml_8h_a6b1d0b7d8ab0388c3ae16f046bf8d835}{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+add\+\_\+comm\+\_\+fn\+\_\+t} )(struct \hyperlink{structompi__communicator__t}{ompi\+\_\+communicator\+\_\+t} $\ast$comm)
\begin{DoxyCompactList}\small\item\em M\+P\+I Interface Functions. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{pml_8h_a13aee02b7a9adc505d6c5b92cda68264}{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+del\+\_\+comm\+\_\+fn\+\_\+t} )(struct \hyperlink{structompi__communicator__t}{ompi\+\_\+communicator\+\_\+t} $\ast$comm)
\begin{DoxyCompactList}\small\item\em Downcall from M\+P\+I layer when a communicator is destroyed. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{pml_8h_a8b3a9eac63f9d693d201dab528217d3c}{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+irecv\+\_\+init\+\_\+fn\+\_\+t} )(void $\ast$buf, size\+\_\+t count, struct \hyperlink{structompi__datatype__t}{ompi\+\_\+datatype\+\_\+t} $\ast$datatype, int src, int tag, struct \hyperlink{structompi__communicator__t}{ompi\+\_\+communicator\+\_\+t} $\ast$comm, struct \hyperlink{structompi__request__t}{ompi\+\_\+request\+\_\+t} $\ast$$\ast$\hyperlink{structrequest}{request})
\begin{DoxyCompactList}\small\item\em Initialize a persistent receive request. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{pml_8h_a59911c5bde342c786f90ba2fff10b181}{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+irecv\+\_\+fn\+\_\+t} )(void $\ast$buf, size\+\_\+t count, struct \hyperlink{structompi__datatype__t}{ompi\+\_\+datatype\+\_\+t} $\ast$datatype, int src, int tag, struct \hyperlink{structompi__communicator__t}{ompi\+\_\+communicator\+\_\+t} $\ast$comm, struct \hyperlink{structompi__request__t}{ompi\+\_\+request\+\_\+t} $\ast$$\ast$\hyperlink{structrequest}{request})
\begin{DoxyCompactList}\small\item\em Post a receive request. \end{DoxyCompactList}\item 
\hypertarget{pml_8h_ad03647c9ee069ffc34d04834bcc85ea4}{typedef int($\ast$ {\bfseries mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+imrecv\+\_\+fn\+\_\+t} )(void $\ast$buf, size\+\_\+t count, struct \hyperlink{structompi__datatype__t}{ompi\+\_\+datatype\+\_\+t} $\ast$datatype, struct \hyperlink{structompi__message__t}{ompi\+\_\+message\+\_\+t} $\ast$$\ast$message, struct \hyperlink{structompi__request__t}{ompi\+\_\+request\+\_\+t} $\ast$$\ast$\hyperlink{structrequest}{request})}\label{pml_8h_ad03647c9ee069ffc34d04834bcc85ea4}

\item 
typedef int($\ast$ \hyperlink{pml_8h_a2707543cc704cb19ea5c157ed42eebf1}{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+recv\+\_\+fn\+\_\+t} )(void $\ast$buf, size\+\_\+t count, struct \hyperlink{structompi__datatype__t}{ompi\+\_\+datatype\+\_\+t} $\ast$datatype, int src, int tag, struct \hyperlink{structompi__communicator__t}{ompi\+\_\+communicator\+\_\+t} $\ast$comm, \hyperlink{structompi__status__public__t}{ompi\+\_\+status\+\_\+public\+\_\+t} $\ast$status)
\begin{DoxyCompactList}\small\item\em Post a receive and wait for completion. \end{DoxyCompactList}\item 
\hypertarget{pml_8h_a8fdc989a023828d99d4ab58abddefcc6}{typedef int($\ast$ {\bfseries mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+mrecv\+\_\+fn\+\_\+t} )(void $\ast$buf, size\+\_\+t count, struct \hyperlink{structompi__datatype__t}{ompi\+\_\+datatype\+\_\+t} $\ast$datatype, struct \hyperlink{structompi__message__t}{ompi\+\_\+message\+\_\+t} $\ast$$\ast$message, \hyperlink{structompi__status__public__t}{ompi\+\_\+status\+\_\+public\+\_\+t} $\ast$status)}\label{pml_8h_a8fdc989a023828d99d4ab58abddefcc6}

\item 
typedef int($\ast$ \hyperlink{pml_8h_ac97792adfc3bcd527ad5d123378e53b4}{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+isend\+\_\+init\+\_\+fn\+\_\+t} )(void $\ast$buf, size\+\_\+t count, struct \hyperlink{structompi__datatype__t}{ompi\+\_\+datatype\+\_\+t} $\ast$datatype, int dst, int tag, mca\+\_\+pml\+\_\+base\+\_\+send\+\_\+mode\+\_\+t mode, struct \hyperlink{structompi__communicator__t}{ompi\+\_\+communicator\+\_\+t} $\ast$comm, struct \hyperlink{structompi__request__t}{ompi\+\_\+request\+\_\+t} $\ast$$\ast$\hyperlink{structrequest}{request})
\begin{DoxyCompactList}\small\item\em Initialize a persistent send request. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{pml_8h_aba5a0e9852eef850a9eeaffdc625b657}{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+isend\+\_\+fn\+\_\+t} )(void $\ast$buf, size\+\_\+t count, struct \hyperlink{structompi__datatype__t}{ompi\+\_\+datatype\+\_\+t} $\ast$datatype, int dst, int tag, mca\+\_\+pml\+\_\+base\+\_\+send\+\_\+mode\+\_\+t mode, struct \hyperlink{structompi__communicator__t}{ompi\+\_\+communicator\+\_\+t} $\ast$comm, struct \hyperlink{structompi__request__t}{ompi\+\_\+request\+\_\+t} $\ast$$\ast$\hyperlink{structrequest}{request})
\begin{DoxyCompactList}\small\item\em Post a send request. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{pml_8h_a18c962c58332ac91e50e590301b6a323}{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+send\+\_\+fn\+\_\+t} )(void $\ast$buf, size\+\_\+t count, struct \hyperlink{structompi__datatype__t}{ompi\+\_\+datatype\+\_\+t} $\ast$datatype, int dst, int tag, mca\+\_\+pml\+\_\+base\+\_\+send\+\_\+mode\+\_\+t mode, struct \hyperlink{structompi__communicator__t}{ompi\+\_\+communicator\+\_\+t} $\ast$comm)
\begin{DoxyCompactList}\small\item\em Post a send request and wait for completion. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{pml_8h_affc1de8985ec68743e196fc23626b903}{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+start\+\_\+fn\+\_\+t} )(size\+\_\+t count, struct \hyperlink{structompi__request__t}{ompi\+\_\+request\+\_\+t} $\ast$$\ast$requests)
\begin{DoxyCompactList}\small\item\em Initiate one or more persistent requests. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{pml_8h_aa211b25bfa02ac295f04539453da07c9}{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+iprobe\+\_\+fn\+\_\+t} )(int src, int tag, struct \hyperlink{structompi__communicator__t}{ompi\+\_\+communicator\+\_\+t} $\ast$comm, int $\ast$matched, \hyperlink{structompi__status__public__t}{ompi\+\_\+status\+\_\+public\+\_\+t} $\ast$status)
\begin{DoxyCompactList}\small\item\em Probe to poll for pending recv. \end{DoxyCompactList}\item 
\hypertarget{pml_8h_a181250f4f0094cca836146a52008a47c}{typedef int($\ast$ {\bfseries mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+improbe\+\_\+fn\+\_\+t} )(int src, int tag, struct \hyperlink{structompi__communicator__t}{ompi\+\_\+communicator\+\_\+t} $\ast$comm, int $\ast$matched, struct \hyperlink{structompi__message__t}{ompi\+\_\+message\+\_\+t} $\ast$$\ast$message, \hyperlink{structompi__status__public__t}{ompi\+\_\+status\+\_\+public\+\_\+t} $\ast$status)}\label{pml_8h_a181250f4f0094cca836146a52008a47c}

\item 
typedef int($\ast$ \hyperlink{pml_8h_a27aa95f12f51bb0d387a35baeb3ee7a2}{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+probe\+\_\+fn\+\_\+t} )(int src, int tag, struct \hyperlink{structompi__communicator__t}{ompi\+\_\+communicator\+\_\+t} $\ast$comm, \hyperlink{structompi__status__public__t}{ompi\+\_\+status\+\_\+public\+\_\+t} $\ast$status)
\begin{DoxyCompactList}\small\item\em Blocking probe to wait for pending recv. \end{DoxyCompactList}\item 
\hypertarget{pml_8h_a392385f2e0f63cf77d0cac24c397982e}{typedef int($\ast$ {\bfseries mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+mprobe\+\_\+fn\+\_\+t} )(int src, int tag, struct \hyperlink{structompi__communicator__t}{ompi\+\_\+communicator\+\_\+t} $\ast$comm, struct \hyperlink{structompi__message__t}{ompi\+\_\+message\+\_\+t} $\ast$$\ast$message, \hyperlink{structompi__status__public__t}{ompi\+\_\+status\+\_\+public\+\_\+t} $\ast$status)}\label{pml_8h_a392385f2e0f63cf77d0cac24c397982e}

\item 
typedef int($\ast$ \hyperlink{pml_8h_a164579f96d087bf46b56512bbe2ad7b8}{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+cancel\+\_\+fn\+\_\+t} )(struct \hyperlink{structompi__request__t}{ompi\+\_\+request\+\_\+t} $\ast$\hyperlink{structrequest}{request})
\begin{DoxyCompactList}\small\item\em Cancel pending operation. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{pml_8h_ab3d7a1bdff12b4f3c8ceb336ab2a30e3}{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+cancelled\+\_\+fn\+\_\+t} )(struct \hyperlink{structompi__request__t}{ompi\+\_\+request\+\_\+t} $\ast$\hyperlink{structrequest}{request}, int $\ast$flag)
\begin{DoxyCompactList}\small\item\em Has a request been cancelled? \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{pml_8h_abdb1607439225949f25933c5cd4ea10b}{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+free\+\_\+fn\+\_\+t} )(struct \hyperlink{structompi__request__t}{ompi\+\_\+request\+\_\+t} $\ast$$\ast$\hyperlink{structrequest}{request})
\begin{DoxyCompactList}\small\item\em Release resources held by a persistent mode request. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{pml_8h_aff4c661c32c3674c1370b88d2455efec}{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+null\+\_\+fn\+\_\+t} )(struct \hyperlink{structompi__request__t}{ompi\+\_\+request\+\_\+t} $\ast$$\ast$\hyperlink{structrequest}{request})
\begin{DoxyCompactList}\small\item\em A special N\+U\+L\+L request handle. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{pml_8h_a21d665133f07f81abf62c8178481b6b5}{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+dump\+\_\+fn\+\_\+t} )(struct \hyperlink{structompi__communicator__t}{ompi\+\_\+communicator\+\_\+t} $\ast$comm, int verbose)
\begin{DoxyCompactList}\small\item\em Diagnostics function. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{pml_8h_ade460296b9f14da83a93ef2ea5c838f5}{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+ft\+\_\+event\+\_\+fn\+\_\+t} )(int status)
\begin{DoxyCompactList}\small\item\em Fault Tolerance Awareness function. \end{DoxyCompactList}\item 
\hypertarget{pml_8h_a7080ad94809d5fd9aad95a06ce8e0386}{typedef struct \\*
\hyperlink{structmca__pml__base__module__1__0__0__t}{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+1\+\_\+0\+\_\+0\+\_\+t} {\bfseries mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+1\+\_\+0\+\_\+0\+\_\+t}}\label{pml_8h_a7080ad94809d5fd9aad95a06ce8e0386}

\item 
\hypertarget{pml_8h_a7e9c831274d0729a42b709b875d2fd4f}{typedef \hyperlink{structmca__pml__base__module__1__0__0__t}{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+1\+\_\+0\+\_\+0\+\_\+t} {\bfseries mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+t}}\label{pml_8h_a7e9c831274d0729a42b709b875d2fd4f}

\end{DoxyCompactItemize}
\subsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
\hypertarget{pml_8h_ae8a074a4d2fd56daef71ab232969834b}{enum {\bfseries mca\+\_\+pml\+\_\+base\+\_\+send\+\_\+mode\+\_\+t} \{ \\*
{\bfseries M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+A\+S\+E\+\_\+\+S\+E\+N\+D\+\_\+\+S\+Y\+N\+C\+H\+R\+O\+N\+O\+U\+S}, 
{\bfseries M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+A\+S\+E\+\_\+\+S\+E\+N\+D\+\_\+\+C\+O\+M\+P\+L\+E\+T\+E}, 
{\bfseries M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+A\+S\+E\+\_\+\+S\+E\+N\+D\+\_\+\+B\+U\+F\+F\+E\+R\+E\+D}, 
{\bfseries M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+A\+S\+E\+\_\+\+S\+E\+N\+D\+\_\+\+R\+E\+A\+D\+Y}, 
\\*
{\bfseries M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+A\+S\+E\+\_\+\+S\+E\+N\+D\+\_\+\+S\+T\+A\+N\+D\+A\+R\+D}, 
{\bfseries M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+A\+S\+E\+\_\+\+S\+E\+N\+D\+\_\+\+S\+I\+Z\+E}
 \}}\label{pml_8h_ae8a074a4d2fd56daef71ab232969834b}

\end{DoxyCompactItemize}
\subsection*{Variables}
\begin{DoxyCompactItemize}
\item 
\hypertarget{pml_8h_a625491877426e9677e8a498776e0f9da}{B\+E\+G\+I\+N\+\_\+\+C\+\_\+\+D\+E\+C\+L\+S typedef uint64\+\_\+t {\bfseries mca\+\_\+pml\+\_\+sequence\+\_\+t}}\label{pml_8h_a625491877426e9677e8a498776e0f9da}

\item 
\hypertarget{pml_8h_a7c4bb7b477672e7f17289f4151e28807}{O\+M\+P\+I\+\_\+\+D\+E\+C\+L\+S\+P\+E\+C \hyperlink{structmca__pml__base__module__1__0__0__t}{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+t} {\bfseries mca\+\_\+pml}}\label{pml_8h_a7c4bb7b477672e7f17289f4151e28807}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
P2\+P Management Layer (P\+M\+L) 

An M\+C\+A component type that provides the P2\+P interface functionality required by the M\+P\+I layer. The P\+M\+L is a relatively thin layer that primarily provides for the fragmentation and scheduling of messages over multiple transports (instances of the Byte Transfer Layer (B\+T\+L) M\+C\+A component type) as depicted below\+: 

 \subsubsection*{$\vert$ M\+P\+I $\vert$ }

\subsubsection*{$\vert$ P\+M\+L $\vert$ }

\subsubsection*{$\vert$ B\+T\+L (T\+C\+P) $\vert$ B\+T\+L (S\+M) $\vert$ B\+T\+L (...) $\vert$ }

A single P\+M\+L component is selected by the M\+C\+A framework during library initialization. Initially, all available P\+M\+Ls are loaded (potentially as shared libraries) and their component open and init functions called. The M\+C\+A framework selects the component returning the highest priority and closes/unloads any other P\+M\+L components that may have been opened.

After all of the M\+C\+A components are initialized, the M\+P\+I/\+R\+T\+E will make downcalls into the P\+M\+L to provide the initial list of processes (\hyperlink{structompi__proc__t}{ompi\+\_\+proc\+\_\+t} instances), and notification of changes (add/delete).

The P\+M\+L module must select the set of B\+T\+L components that are to be used to reach a given destination. These should be cached on a P\+M\+L specific data structure that is hung off the \hyperlink{structompi__proc__t}{ompi\+\_\+proc\+\_\+t}.

The P\+M\+L should then apply a scheduling algorithm (round-\/robin, weighted distribution, etc), to schedule the delivery of messages over the available B\+T\+Ls. 

\subsection{Macro Definition Documentation}
\hypertarget{pml_8h_adafb91a61755925453adc2d74f7fb839}{\index{pml.\+h@{pml.\+h}!M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+A\+S\+E\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+2\+\_\+0\+\_\+0@{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+A\+S\+E\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+2\+\_\+0\+\_\+0}}
\index{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+A\+S\+E\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+2\+\_\+0\+\_\+0@{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+A\+S\+E\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+2\+\_\+0\+\_\+0}!pml.\+h@{pml.\+h}}
\subsubsection[{M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+A\+S\+E\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+2\+\_\+0\+\_\+0}]{\setlength{\rightskip}{0pt plus 5cm}\#define M\+C\+A\+\_\+\+P\+M\+L\+\_\+\+B\+A\+S\+E\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+2\+\_\+0\+\_\+0}}\label{pml_8h_adafb91a61755925453adc2d74f7fb839}
{\bfseries Value\+:}
\begin{DoxyCode}
MCA\_BASE\_VERSION\_2\_0\_0, \(\backslash\)
  \textcolor{stringliteral}{"pml"}, 2, 0, 0
\end{DoxyCode}


\subsection{Typedef Documentation}
\hypertarget{pml_8h_aef664619f2a6c8b247891a9c6f94a9f2}{\index{pml.\+h@{pml.\+h}!mca\+\_\+pml\+\_\+base\+\_\+component\+\_\+init\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+component\+\_\+init\+\_\+fn\+\_\+t}}
\index{mca\+\_\+pml\+\_\+base\+\_\+component\+\_\+init\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+component\+\_\+init\+\_\+fn\+\_\+t}!pml.\+h@{pml.\+h}}
\subsubsection[{mca\+\_\+pml\+\_\+base\+\_\+component\+\_\+init\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef struct {\bf mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+1\+\_\+0\+\_\+0\+\_\+t}$\ast$($\ast$ mca\+\_\+pml\+\_\+base\+\_\+component\+\_\+init\+\_\+fn\+\_\+t)(int $\ast$priority, bool enable\+\_\+progress\+\_\+threads, bool enable\+\_\+mpi\+\_\+threads)}}\label{pml_8h_aef664619f2a6c8b247891a9c6f94a9f2}


M\+C\+A-\/$>$P\+M\+L Called by M\+C\+A framework to initialize the component. 


\begin{DoxyParams}{Parameters}
{\em priority} & (O\+U\+T) Relative priority or ranking used by M\+C\+A to selected a component.\\
\hline
{\em enable\+\_\+progress\+\_\+threads} & (I\+N) Whether this component is allowed to run a hidden/progress thread or not.\\
\hline
{\em enable\+\_\+mpi\+\_\+threads} & (I\+N) Whether support for multiple M\+P\+I threads is enabled or not (i.\+e., M\+P\+I\+\_\+\+T\+H\+R\+E\+A\+D\+\_\+\+M\+U\+L\+T\+I\+P\+L\+E), which indicates whether multiple threads may invoke this component simultaneously or not. \\
\hline
\end{DoxyParams}
\hypertarget{pml_8h_a6b1d0b7d8ab0388c3ae16f046bf8d835}{\index{pml.\+h@{pml.\+h}!mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+add\+\_\+comm\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+add\+\_\+comm\+\_\+fn\+\_\+t}}
\index{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+add\+\_\+comm\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+add\+\_\+comm\+\_\+fn\+\_\+t}!pml.\+h@{pml.\+h}}
\subsubsection[{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+add\+\_\+comm\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+add\+\_\+comm\+\_\+fn\+\_\+t)(struct {\bf ompi\+\_\+communicator\+\_\+t} $\ast$comm)}}\label{pml_8h_a6b1d0b7d8ab0388c3ae16f046bf8d835}


M\+P\+I Interface Functions. 

Downcall from M\+P\+I layer when a new communicator is created.


\begin{DoxyParams}{Parameters}
{\em comm} & Communicator \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
O\+M\+P\+I\+\_\+\+S\+U\+C\+C\+E\+S\+S or failure status.
\end{DoxyReturn}
Provides the P\+M\+L the opportunity to initialize/cache a data structure on the communicator. \hypertarget{pml_8h_a69e3edc73733db283448a357a3b8d560}{\index{pml.\+h@{pml.\+h}!mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+add\+\_\+procs\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+add\+\_\+procs\+\_\+fn\+\_\+t}}
\index{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+add\+\_\+procs\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+add\+\_\+procs\+\_\+fn\+\_\+t}!pml.\+h@{pml.\+h}}
\subsubsection[{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+add\+\_\+procs\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+add\+\_\+procs\+\_\+fn\+\_\+t)(struct {\bf ompi\+\_\+proc\+\_\+t} $\ast$$\ast$procs, size\+\_\+t nprocs)}}\label{pml_8h_a69e3edc73733db283448a357a3b8d560}


M\+C\+A management functions. 

Downcall from M\+P\+I/\+R\+T\+E layer when new processes are created.


\begin{DoxyParams}{Parameters}
{\em procs} & Array of new processes \\
\hline
{\em nprocs} & Size of process array \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
O\+M\+P\+I\+\_\+\+S\+U\+C\+C\+E\+S\+S or failure status.
\end{DoxyReturn}
Provides a notification to the P\+M\+L that new processes have been created, and provides the P\+M\+L the opportunity to cache data (e.\+g. list of B\+T\+Ls to use) on the \hyperlink{structompi__proc__t}{ompi\+\_\+proc\+\_\+t} data structure. \hypertarget{pml_8h_a164579f96d087bf46b56512bbe2ad7b8}{\index{pml.\+h@{pml.\+h}!mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+cancel\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+cancel\+\_\+fn\+\_\+t}}
\index{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+cancel\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+cancel\+\_\+fn\+\_\+t}!pml.\+h@{pml.\+h}}
\subsubsection[{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+cancel\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+cancel\+\_\+fn\+\_\+t)(struct {\bf ompi\+\_\+request\+\_\+t} $\ast${\bf request})}}\label{pml_8h_a164579f96d087bf46b56512bbe2ad7b8}


Cancel pending operation. 


\begin{DoxyParams}{Parameters}
{\em request} & (I\+N) \hyperlink{classRequest}{Request} \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
O\+M\+P\+I\+\_\+\+S\+U\+C\+C\+E\+S\+S or failure status. 
\end{DoxyReturn}
\hypertarget{pml_8h_ab3d7a1bdff12b4f3c8ceb336ab2a30e3}{\index{pml.\+h@{pml.\+h}!mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+cancelled\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+cancelled\+\_\+fn\+\_\+t}}
\index{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+cancelled\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+cancelled\+\_\+fn\+\_\+t}!pml.\+h@{pml.\+h}}
\subsubsection[{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+cancelled\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+cancelled\+\_\+fn\+\_\+t)(struct {\bf ompi\+\_\+request\+\_\+t} $\ast${\bf request}, int $\ast$flag)}}\label{pml_8h_ab3d7a1bdff12b4f3c8ceb336ab2a30e3}


Has a request been cancelled? 


\begin{DoxyParams}{Parameters}
{\em request} & (I\+N) \hyperlink{classRequest}{Request} \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
O\+M\+P\+I\+\_\+\+S\+U\+C\+C\+E\+S\+S or failure status. 
\end{DoxyReturn}
\hypertarget{pml_8h_a13aee02b7a9adc505d6c5b92cda68264}{\index{pml.\+h@{pml.\+h}!mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+del\+\_\+comm\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+del\+\_\+comm\+\_\+fn\+\_\+t}}
\index{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+del\+\_\+comm\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+del\+\_\+comm\+\_\+fn\+\_\+t}!pml.\+h@{pml.\+h}}
\subsubsection[{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+del\+\_\+comm\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+del\+\_\+comm\+\_\+fn\+\_\+t)(struct {\bf ompi\+\_\+communicator\+\_\+t} $\ast$comm)}}\label{pml_8h_a13aee02b7a9adc505d6c5b92cda68264}


Downcall from M\+P\+I layer when a communicator is destroyed. 


\begin{DoxyParams}{Parameters}
{\em comm} & Communicator \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
O\+M\+P\+I\+\_\+\+S\+U\+C\+C\+E\+S\+S or failure status.
\end{DoxyReturn}
Provides the P\+M\+L the opportunity to cleanup any datastructures associated with the communicator. \hypertarget{pml_8h_adf5e2be6058d2b494fd750bc962bf2ce}{\index{pml.\+h@{pml.\+h}!mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+del\+\_\+procs\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+del\+\_\+procs\+\_\+fn\+\_\+t}}
\index{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+del\+\_\+procs\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+del\+\_\+procs\+\_\+fn\+\_\+t}!pml.\+h@{pml.\+h}}
\subsubsection[{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+del\+\_\+procs\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+del\+\_\+procs\+\_\+fn\+\_\+t)(struct {\bf ompi\+\_\+proc\+\_\+t} $\ast$$\ast$procs, size\+\_\+t nprocs)}}\label{pml_8h_adf5e2be6058d2b494fd750bc962bf2ce}


Downcall from M\+P\+I/\+R\+T\+E layer when processes are terminated. 


\begin{DoxyParams}{Parameters}
{\em procs} & Array of processes \\
\hline
{\em nprocs} & Size of process array \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
O\+M\+P\+I\+\_\+\+S\+U\+C\+C\+E\+S\+S or failure status.
\end{DoxyReturn}
Provides a notification to the P\+M\+L that processes have gone away, and provides the P\+M\+L the opportunity to cleanup any data cached on the \hyperlink{structompi__proc__t}{ompi\+\_\+proc\+\_\+t} data structure. \hypertarget{pml_8h_a21d665133f07f81abf62c8178481b6b5}{\index{pml.\+h@{pml.\+h}!mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+dump\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+dump\+\_\+fn\+\_\+t}}
\index{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+dump\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+dump\+\_\+fn\+\_\+t}!pml.\+h@{pml.\+h}}
\subsubsection[{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+dump\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+dump\+\_\+fn\+\_\+t)(struct {\bf ompi\+\_\+communicator\+\_\+t} $\ast$comm, int verbose)}}\label{pml_8h_a21d665133f07f81abf62c8178481b6b5}


Diagnostics function. 


\begin{DoxyParams}{Parameters}
{\em request} & (I\+N) Communicator \\
\hline
{\em verbose} & (I\+N) Verbosity level (passed to B\+T\+L) \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
O\+M\+P\+I\+\_\+\+S\+U\+C\+C\+E\+S\+S or failure status. 
\end{DoxyReturn}
\hypertarget{pml_8h_ac2e6394c72fc3fc15accb0ad0cf9eb38}{\index{pml.\+h@{pml.\+h}!mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+enable\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+enable\+\_\+fn\+\_\+t}}
\index{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+enable\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+enable\+\_\+fn\+\_\+t}!pml.\+h@{pml.\+h}}
\subsubsection[{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+enable\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+enable\+\_\+fn\+\_\+t)(bool enable)}}\label{pml_8h_ac2e6394c72fc3fc15accb0ad0cf9eb38}


Downcall from M\+C\+A layer to enable the P\+M\+L/\+B\+T\+Ls. 


\begin{DoxyParams}{Parameters}
{\em enable} & Enable/\+Disable P\+M\+L forwarding \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
O\+M\+P\+I\+\_\+\+S\+U\+C\+C\+E\+S\+S or failure status. 
\end{DoxyReturn}
\hypertarget{pml_8h_abdb1607439225949f25933c5cd4ea10b}{\index{pml.\+h@{pml.\+h}!mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+free\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+free\+\_\+fn\+\_\+t}}
\index{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+free\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+free\+\_\+fn\+\_\+t}!pml.\+h@{pml.\+h}}
\subsubsection[{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+free\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+free\+\_\+fn\+\_\+t)(struct {\bf ompi\+\_\+request\+\_\+t} $\ast$$\ast${\bf request})}}\label{pml_8h_abdb1607439225949f25933c5cd4ea10b}


Release resources held by a persistent mode request. 


\begin{DoxyParams}{Parameters}
{\em request} & (I\+N) \hyperlink{classRequest}{Request} \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
O\+M\+P\+I\+\_\+\+S\+U\+C\+C\+E\+S\+S or failure status. 
\end{DoxyReturn}
\hypertarget{pml_8h_ade460296b9f14da83a93ef2ea5c838f5}{\index{pml.\+h@{pml.\+h}!mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+ft\+\_\+event\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+ft\+\_\+event\+\_\+fn\+\_\+t}}
\index{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+ft\+\_\+event\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+ft\+\_\+event\+\_\+fn\+\_\+t}!pml.\+h@{pml.\+h}}
\subsubsection[{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+ft\+\_\+event\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+ft\+\_\+event\+\_\+fn\+\_\+t)(int status)}}\label{pml_8h_ade460296b9f14da83a93ef2ea5c838f5}


Fault Tolerance Awareness function. 


\begin{DoxyParams}{Parameters}
{\em status} & Checkpoint status \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
O\+M\+P\+I\+\_\+\+S\+U\+C\+C\+E\+S\+S or failure status 
\end{DoxyReturn}
\hypertarget{pml_8h_aa211b25bfa02ac295f04539453da07c9}{\index{pml.\+h@{pml.\+h}!mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+iprobe\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+iprobe\+\_\+fn\+\_\+t}}
\index{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+iprobe\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+iprobe\+\_\+fn\+\_\+t}!pml.\+h@{pml.\+h}}
\subsubsection[{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+iprobe\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+iprobe\+\_\+fn\+\_\+t)(int src, int tag, struct {\bf ompi\+\_\+communicator\+\_\+t} $\ast$comm, int $\ast$matched, {\bf ompi\+\_\+status\+\_\+public\+\_\+t} $\ast$status)}}\label{pml_8h_aa211b25bfa02ac295f04539453da07c9}


Probe to poll for pending recv. 


\begin{DoxyParams}{Parameters}
{\em src} & (I\+N) Source rank w/in communicator. \\
\hline
{\em tag} & (I\+N) User defined tag. \\
\hline
{\em comm} & (I\+N) Communicator. \\
\hline
{\em matched} & (O\+U\+T) Flag indicating if matching recv exists. \\
\hline
{\em status} & (O\+U\+T) Completion statuses. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
O\+M\+P\+I\+\_\+\+S\+U\+C\+C\+E\+S\+S or failure status. 
\end{DoxyReturn}
\hypertarget{pml_8h_a59911c5bde342c786f90ba2fff10b181}{\index{pml.\+h@{pml.\+h}!mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+irecv\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+irecv\+\_\+fn\+\_\+t}}
\index{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+irecv\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+irecv\+\_\+fn\+\_\+t}!pml.\+h@{pml.\+h}}
\subsubsection[{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+irecv\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+irecv\+\_\+fn\+\_\+t)(void $\ast$buf, size\+\_\+t count, struct {\bf ompi\+\_\+datatype\+\_\+t} $\ast$datatype, int src, int tag, struct {\bf ompi\+\_\+communicator\+\_\+t} $\ast$comm, struct {\bf ompi\+\_\+request\+\_\+t} $\ast$$\ast${\bf request})}}\label{pml_8h_a59911c5bde342c786f90ba2fff10b181}


Post a receive request. 


\begin{DoxyParams}{Parameters}
{\em buf} & (I\+N) User buffer. \\
\hline
{\em count} & (I\+N) Number of elements of the specified datatype. \\
\hline
{\em datatype} & (I\+N) User defined datatype. \\
\hline
{\em src} & (I\+N) Source rank w/in communicator. \\
\hline
{\em tag} & (I\+N) User defined tag. \\
\hline
{\em comm} & (I\+N) Communicator. \\
\hline
{\em request} & (O\+U\+T) \hyperlink{classRequest}{Request} handle. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
O\+M\+P\+I\+\_\+\+S\+U\+C\+C\+E\+S\+S or failure status. 
\end{DoxyReturn}
\hypertarget{pml_8h_a8b3a9eac63f9d693d201dab528217d3c}{\index{pml.\+h@{pml.\+h}!mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+irecv\+\_\+init\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+irecv\+\_\+init\+\_\+fn\+\_\+t}}
\index{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+irecv\+\_\+init\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+irecv\+\_\+init\+\_\+fn\+\_\+t}!pml.\+h@{pml.\+h}}
\subsubsection[{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+irecv\+\_\+init\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+irecv\+\_\+init\+\_\+fn\+\_\+t)(void $\ast$buf, size\+\_\+t count, struct {\bf ompi\+\_\+datatype\+\_\+t} $\ast$datatype, int src, int tag, struct {\bf ompi\+\_\+communicator\+\_\+t} $\ast$comm, struct {\bf ompi\+\_\+request\+\_\+t} $\ast$$\ast${\bf request})}}\label{pml_8h_a8b3a9eac63f9d693d201dab528217d3c}


Initialize a persistent receive request. 


\begin{DoxyParams}{Parameters}
{\em buf} & (I\+N) User buffer. \\
\hline
{\em count} & (I\+N) Number of elements of the specified datatype. \\
\hline
{\em datatype} & (I\+N) User defined datatype. \\
\hline
{\em src} & (I\+N) Source rank w/in communicator. \\
\hline
{\em tag} & (I\+N) User defined tag. \\
\hline
{\em comm} & (I\+N) Communicator. \\
\hline
{\em request} & (O\+U\+T) \hyperlink{classRequest}{Request} handle. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
O\+M\+P\+I\+\_\+\+S\+U\+C\+C\+E\+S\+S or failure status. 
\end{DoxyReturn}
\hypertarget{pml_8h_aba5a0e9852eef850a9eeaffdc625b657}{\index{pml.\+h@{pml.\+h}!mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+isend\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+isend\+\_\+fn\+\_\+t}}
\index{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+isend\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+isend\+\_\+fn\+\_\+t}!pml.\+h@{pml.\+h}}
\subsubsection[{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+isend\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+isend\+\_\+fn\+\_\+t)(void $\ast$buf, size\+\_\+t count, struct {\bf ompi\+\_\+datatype\+\_\+t} $\ast$datatype, int dst, int tag, mca\+\_\+pml\+\_\+base\+\_\+send\+\_\+mode\+\_\+t mode, struct {\bf ompi\+\_\+communicator\+\_\+t} $\ast$comm, struct {\bf ompi\+\_\+request\+\_\+t} $\ast$$\ast${\bf request})}}\label{pml_8h_aba5a0e9852eef850a9eeaffdc625b657}


Post a send request. 


\begin{DoxyParams}{Parameters}
{\em buf} & (I\+N) User buffer. \\
\hline
{\em count} & (I\+N) Number of elements of the specified datatype. \\
\hline
{\em datatype} & (I\+N) User defined datatype. \\
\hline
{\em dst} & (I\+N) Peer rank w/in communicator. \\
\hline
{\em tag} & (I\+N) User defined tag. \\
\hline
{\em mode} & (I\+N) \hyperlink{structSend}{Send} mode (S\+T\+A\+N\+D\+A\+R\+D,B\+U\+F\+F\+E\+R\+E\+D,S\+Y\+N\+C\+H\+R\+O\+N\+O\+U\+S,R\+E\+A\+D\+Y) \\
\hline
{\em comm} & (I\+N) Communicator. \\
\hline
{\em request} & (O\+U\+T) \hyperlink{classRequest}{Request} handle. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
O\+M\+P\+I\+\_\+\+S\+U\+C\+C\+E\+S\+S or failure status. 
\end{DoxyReturn}
\hypertarget{pml_8h_ac97792adfc3bcd527ad5d123378e53b4}{\index{pml.\+h@{pml.\+h}!mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+isend\+\_\+init\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+isend\+\_\+init\+\_\+fn\+\_\+t}}
\index{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+isend\+\_\+init\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+isend\+\_\+init\+\_\+fn\+\_\+t}!pml.\+h@{pml.\+h}}
\subsubsection[{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+isend\+\_\+init\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+isend\+\_\+init\+\_\+fn\+\_\+t)(void $\ast$buf, size\+\_\+t count, struct {\bf ompi\+\_\+datatype\+\_\+t} $\ast$datatype, int dst, int tag, mca\+\_\+pml\+\_\+base\+\_\+send\+\_\+mode\+\_\+t mode, struct {\bf ompi\+\_\+communicator\+\_\+t} $\ast$comm, struct {\bf ompi\+\_\+request\+\_\+t} $\ast$$\ast${\bf request})}}\label{pml_8h_ac97792adfc3bcd527ad5d123378e53b4}


Initialize a persistent send request. 


\begin{DoxyParams}{Parameters}
{\em buf} & (I\+N) User buffer. \\
\hline
{\em count} & (I\+N) Number of elements of the specified datatype. \\
\hline
{\em datatype} & (I\+N) User defined datatype. \\
\hline
{\em dst} & (I\+N) Peer rank w/in communicator. \\
\hline
{\em tag} & (I\+N) User defined tag. \\
\hline
{\em mode} & (I\+N) \hyperlink{structSend}{Send} mode (S\+T\+A\+N\+D\+A\+R\+D,B\+U\+F\+F\+E\+R\+E\+D,S\+Y\+N\+C\+H\+R\+O\+N\+O\+U\+S,R\+E\+A\+D\+Y) \\
\hline
{\em comm} & (I\+N) Communicator. \\
\hline
{\em request} & (O\+U\+T) \hyperlink{classRequest}{Request} handle. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
O\+M\+P\+I\+\_\+\+S\+U\+C\+C\+E\+S\+S or failure status. 
\end{DoxyReturn}
\hypertarget{pml_8h_aff4c661c32c3674c1370b88d2455efec}{\index{pml.\+h@{pml.\+h}!mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+null\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+null\+\_\+fn\+\_\+t}}
\index{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+null\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+null\+\_\+fn\+\_\+t}!pml.\+h@{pml.\+h}}
\subsubsection[{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+null\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+null\+\_\+fn\+\_\+t)(struct {\bf ompi\+\_\+request\+\_\+t} $\ast$$\ast${\bf request})}}\label{pml_8h_aff4c661c32c3674c1370b88d2455efec}


A special N\+U\+L\+L request handle. 


\begin{DoxyParams}{Parameters}
{\em request} & (O\+U\+T) \hyperlink{classRequest}{Request} \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
O\+M\+P\+I\+\_\+\+S\+U\+C\+C\+E\+S\+S or failure status. 
\end{DoxyReturn}
\hypertarget{pml_8h_a27aa95f12f51bb0d387a35baeb3ee7a2}{\index{pml.\+h@{pml.\+h}!mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+probe\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+probe\+\_\+fn\+\_\+t}}
\index{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+probe\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+probe\+\_\+fn\+\_\+t}!pml.\+h@{pml.\+h}}
\subsubsection[{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+probe\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+probe\+\_\+fn\+\_\+t)(int src, int tag, struct {\bf ompi\+\_\+communicator\+\_\+t} $\ast$comm, {\bf ompi\+\_\+status\+\_\+public\+\_\+t} $\ast$status)}}\label{pml_8h_a27aa95f12f51bb0d387a35baeb3ee7a2}


Blocking probe to wait for pending recv. 


\begin{DoxyParams}{Parameters}
{\em src} & (I\+N) Source rank w/in communicator. \\
\hline
{\em tag} & (I\+N) User defined tag. \\
\hline
{\em comm} & (I\+N) Communicator. \\
\hline
{\em status} & (O\+U\+T) Completion statuses. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
O\+M\+P\+I\+\_\+\+S\+U\+C\+C\+E\+S\+S or failure status. 
\end{DoxyReturn}
\hypertarget{pml_8h_ab98335246e59ff930cf074de91967f23}{\index{pml.\+h@{pml.\+h}!mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+progress\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+progress\+\_\+fn\+\_\+t}}
\index{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+progress\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+progress\+\_\+fn\+\_\+t}!pml.\+h@{pml.\+h}}
\subsubsection[{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+progress\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+progress\+\_\+fn\+\_\+t)(void)}}\label{pml_8h_ab98335246e59ff930cf074de91967f23}


For non-\/threaded case, provides M\+C\+A the opportunity to progress outstanding requests on all btls. 


\begin{DoxyItemize}
\item \begin{DoxyReturn}{Returns}
Count of \char`\"{}completions\char`\"{}, a metric of how many items where completed in the call to progress. 
\end{DoxyReturn}

\end{DoxyItemize}\hypertarget{pml_8h_a2707543cc704cb19ea5c157ed42eebf1}{\index{pml.\+h@{pml.\+h}!mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+recv\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+recv\+\_\+fn\+\_\+t}}
\index{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+recv\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+recv\+\_\+fn\+\_\+t}!pml.\+h@{pml.\+h}}
\subsubsection[{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+recv\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+recv\+\_\+fn\+\_\+t)(void $\ast$buf, size\+\_\+t count, struct {\bf ompi\+\_\+datatype\+\_\+t} $\ast$datatype, int src, int tag, struct {\bf ompi\+\_\+communicator\+\_\+t} $\ast$comm, {\bf ompi\+\_\+status\+\_\+public\+\_\+t} $\ast$status)}}\label{pml_8h_a2707543cc704cb19ea5c157ed42eebf1}


Post a receive and wait for completion. 


\begin{DoxyParams}{Parameters}
{\em buf} & (I\+N) User buffer \\
\hline
{\em count} & (I\+N) Number of elements of the specified datatype \\
\hline
{\em datatype} & (I\+N) User defined datatype \\
\hline
{\em src} & (I\+N) Source rank w/in communicator \\
\hline
{\em tag} & (I\+N) User defined tag \\
\hline
{\em comm} & (I\+N) Communicator \\
\hline
{\em status} & (O\+U\+T) Completion status \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
O\+M\+P\+I\+\_\+\+S\+U\+C\+C\+E\+S\+S or failure status. 
\end{DoxyReturn}
\hypertarget{pml_8h_a18c962c58332ac91e50e590301b6a323}{\index{pml.\+h@{pml.\+h}!mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+send\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+send\+\_\+fn\+\_\+t}}
\index{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+send\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+send\+\_\+fn\+\_\+t}!pml.\+h@{pml.\+h}}
\subsubsection[{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+send\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+send\+\_\+fn\+\_\+t)(void $\ast$buf, size\+\_\+t count, struct {\bf ompi\+\_\+datatype\+\_\+t} $\ast$datatype, int dst, int tag, mca\+\_\+pml\+\_\+base\+\_\+send\+\_\+mode\+\_\+t mode, struct {\bf ompi\+\_\+communicator\+\_\+t} $\ast$comm)}}\label{pml_8h_a18c962c58332ac91e50e590301b6a323}


Post a send request and wait for completion. 


\begin{DoxyParams}{Parameters}
{\em buf} & (I\+N) User buffer. \\
\hline
{\em count} & (I\+N) Number of elements of the specified datatype. \\
\hline
{\em datatype} & (I\+N) User defined datatype. \\
\hline
{\em dst} & (I\+N) Peer rank w/in communicator. \\
\hline
{\em tag} & (I\+N) User defined tag. \\
\hline
{\em mode} & (I\+N) \hyperlink{structSend}{Send} mode (S\+T\+A\+N\+D\+A\+R\+D,B\+U\+F\+F\+E\+R\+E\+D,S\+Y\+N\+C\+H\+R\+O\+N\+O\+U\+S,R\+E\+A\+D\+Y) \\
\hline
{\em comm} & (I\+N) Communicator. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
O\+M\+P\+I\+\_\+\+S\+U\+C\+C\+E\+S\+S or failure status. 
\end{DoxyReturn}
\hypertarget{pml_8h_affc1de8985ec68743e196fc23626b903}{\index{pml.\+h@{pml.\+h}!mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+start\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+start\+\_\+fn\+\_\+t}}
\index{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+start\+\_\+fn\+\_\+t@{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+start\+\_\+fn\+\_\+t}!pml.\+h@{pml.\+h}}
\subsubsection[{mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+start\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ mca\+\_\+pml\+\_\+base\+\_\+module\+\_\+start\+\_\+fn\+\_\+t)(size\+\_\+t count, struct {\bf ompi\+\_\+request\+\_\+t} $\ast$$\ast$requests)}}\label{pml_8h_affc1de8985ec68743e196fc23626b903}


Initiate one or more persistent requests. 


\begin{DoxyParams}{Parameters}
{\em count} & Number of requests \\
\hline
{\em request} & Array of persistent requests \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
O\+M\+P\+I\+\_\+\+S\+U\+C\+C\+E\+S\+S or failure status. 
\end{DoxyReturn}
