\hypertarget{mpi_8c}{}\doxysection{mpi.\+c File Reference}
\label{mpi_8c}\index{mpi.c@{mpi.c}}
{\ttfamily \#include $<$limits.\+h$>$}\newline
{\ttfamily \#include \char`\"{}form3.\+h\char`\"{}}\newline
\doxysubsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \mbox{\hyperlink{structlongMultiStruct}{long\+Multi\+Struct}}
\end{DoxyCompactItemize}
\doxysubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{mpi_8c_a8af917792a0a861b929d73df37372d4a}\label{mpi_8c_a8af917792a0a861b929d73df37372d4a}} 
\#define {\bfseries PF\+\_\+\+PACKSIZE}~1600
\item 
\#define \mbox{\hyperlink{mpi_8c_acdb13052a366a44acb01526df06fa622}{MPI\+\_\+\+ERRCODE\+\_\+\+CHECK}}(err)
\end{DoxyCompactItemize}
\doxysubsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{mpi_8c_a53ce9ee1a5f9808b822b6894287d1ab3}\label{mpi_8c_a53ce9ee1a5f9808b822b6894287d1ab3}} 
typedef struct \mbox{\hyperlink{structlongMultiStruct}{long\+Multi\+Struct}} {\bfseries PF\+\_\+\+LONGMULTI}
\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
LONG \mbox{\hyperlink{mpi_8c_a61be89287368cdafe13360326d8e2d63}{PF\+\_\+\+Real\+Time}} (int i)
\item 
int \mbox{\hyperlink{mpi_8c_a1df5990c91403b55b25e97a83f8f8815}{PF\+\_\+\+Lib\+Init}} (int $\ast$argcp, char $\ast$$\ast$$\ast$argvp)
\item 
int \mbox{\hyperlink{mpi_8c_aec0effd2d2a61b47d2561907299c78b4}{PF\+\_\+\+Lib\+Terminate}} (int error)
\item 
int \mbox{\hyperlink{mpi_8c_adc3e52d1a69ed7df90a46f21c41db9c6}{PF\+\_\+\+Probe}} (int $\ast$src)
\item 
int \mbox{\hyperlink{mpi_8c_ad98e922db7e56af48cd8e15b76966a87}{PF\+\_\+\+ISend\+Sbuf}} (int to, int tag)
\item 
int \mbox{\hyperlink{mpi_8c_a04f39502d41d6129721da4ee1ded3f35}{PF\+\_\+\+Recv\+Wbuf}} (WORD $\ast$b, LONG $\ast$s, int $\ast$src)
\item 
int \mbox{\hyperlink{mpi_8c_a465cdd4ca4225a9392114fe2a18ea5e0}{PF\+\_\+\+IRecv\+Rbuf}} (\mbox{\hyperlink{structPF__BUFFER}{PF\+\_\+\+BUFFER}} $\ast$r, int bn, int from)
\item 
int \mbox{\hyperlink{mpi_8c_adf8c1a254fcf7e01118ab5e9a6b6d24a}{PF\+\_\+\+Wait\+Rbuf}} (\mbox{\hyperlink{structPF__BUFFER}{PF\+\_\+\+BUFFER}} $\ast$r, int bn, LONG $\ast$size)
\item 
int \mbox{\hyperlink{mpi_8c_ad01fcdd6248040453a990e8a8fd21a15}{PF\+\_\+\+Bcast}} (void $\ast$buffer, int count)
\item 
int \mbox{\hyperlink{mpi_8c_aabbfc0cdb02aa09612dfc99650adee24}{PF\+\_\+\+Raw\+Send}} (int dest, void $\ast$buf, LONG l, int tag)
\item 
LONG \mbox{\hyperlink{mpi_8c_a754c5c9e131d45040b31e541e1908b8e}{PF\+\_\+\+Raw\+Recv}} (int $\ast$src, void $\ast$buf, LONG thesize, int $\ast$tag)
\item 
int \mbox{\hyperlink{mpi_8c_a8b2e58bede303502d5c8db7f52604336}{PF\+\_\+\+Raw\+Probe}} (int $\ast$src, int $\ast$tag, int $\ast$bytesize)
\item 
int \mbox{\hyperlink{mpi_8c_aa089edd39af1232d976aad82096f4976}{PF\+\_\+\+Print\+Pack\+Buf}} (char $\ast$s, int size)
\item 
int \mbox{\hyperlink{mpi_8c_a62e43295488ff786e126b87aaf4ed26b}{PF\+\_\+\+Prepare\+Pack}} (void)
\item 
int \mbox{\hyperlink{mpi_8c_a7619a182c005b27cfe949e4ebbeaa6d2}{PF\+\_\+\+Pack}} (const void $\ast$buffer, size\+\_\+t count, MPI\+\_\+\+Datatype type)
\item 
int \mbox{\hyperlink{mpi_8c_a34605b9383c62068bbbcc99316c41b62}{PF\+\_\+\+Unpack}} (void $\ast$buffer, size\+\_\+t count, MPI\+\_\+\+Datatype type)
\item 
int \mbox{\hyperlink{mpi_8c_a09df0aab01cd342b5c8ca3a65b1a081d}{PF\+\_\+\+Pack\+String}} (const UBYTE $\ast$str)
\item 
int \mbox{\hyperlink{mpi_8c_a9f23d69486afc2fa06b33ee8169842b1}{PF\+\_\+\+Unpack\+String}} (UBYTE $\ast$str)
\item 
int \mbox{\hyperlink{mpi_8c_a5d09f4ef20ba9e56d2b0c0c80f4080e7}{PF\+\_\+\+Send}} (int to, int tag)
\item 
int \mbox{\hyperlink{mpi_8c_a4a592eba09170cf9927f52c753d43449}{PF\+\_\+\+Receive}} (int src, int tag, int $\ast$psrc, int $\ast$ptag)
\item 
int \mbox{\hyperlink{mpi_8c_a8c5fa9d6247c3759294cfde8beed2a79}{PF\+\_\+\+Broadcast}} (void)
\item 
int \mbox{\hyperlink{mpi_8c_a32c244c9bd896e618696ad0d8af00b77}{PF\+\_\+\+Prepare\+Long\+Single\+Pack}} (void)
\item 
int \mbox{\hyperlink{mpi_8c_acfd012f95caa0919c94f5146de803851}{PF\+\_\+\+Long\+Single\+Pack}} (const void $\ast$buffer, size\+\_\+t count, MPI\+\_\+\+Datatype type)
\item 
int \mbox{\hyperlink{mpi_8c_a74be2fd9c9585f01338bee40938a14d6}{PF\+\_\+\+Long\+Single\+Unpack}} (void $\ast$buffer, size\+\_\+t count, MPI\+\_\+\+Datatype type)
\item 
int \mbox{\hyperlink{mpi_8c_a24e76d4fe06bb15261926c81d4848819}{PF\+\_\+\+Long\+Single\+Send}} (int to, int tag)
\item 
int \mbox{\hyperlink{mpi_8c_a08e9722074691c45c8f228674e672c87}{PF\+\_\+\+Long\+Single\+Receive}} (int src, int tag, int $\ast$psrc, int $\ast$ptag)
\item 
int \mbox{\hyperlink{mpi_8c_a76f621497e4fb642ac140fce31a11662}{PF\+\_\+\+Prepare\+Long\+Multi\+Pack}} (void)
\item 
int \mbox{\hyperlink{mpi_8c_a89a6ccb9f441cf57eaefd8b4e5f69786}{PF\+\_\+\+Long\+Multi\+Pack\+Impl}} (const void $\ast$buffer, size\+\_\+t count, size\+\_\+t e\+Size, MPI\+\_\+\+Datatype type)
\item 
int \mbox{\hyperlink{mpi_8c_ab69157e9edff8d3285d5c23115af7a52}{PF\+\_\+\+Long\+Multi\+Unpack\+Impl}} (void $\ast$buffer, size\+\_\+t count, size\+\_\+t e\+Size, MPI\+\_\+\+Datatype type)
\item 
int \mbox{\hyperlink{mpi_8c_a9b9cf07c7f8d8e4c954bcac06b716398}{PF\+\_\+\+Long\+Multi\+Broadcast}} (void)
\end{DoxyCompactItemize}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{mpi_8c_af3c2184ac593030bf5f35d1f2f8702d1}\label{mpi_8c_af3c2184ac593030bf5f35d1f2f8702d1}} 
LONG {\bfseries PF\+\_\+max\+Dollar\+Chunk\+Size} = 0
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
MPI dependent functions of parform

This file contains all the functions for the parallel version of form3 that explicitly need to call mpi routines. This is the only file that really needs to be linked to the mpi-\/library! 

\doxysubsection{Macro Definition Documentation}
\mbox{\Hypertarget{mpi_8c_acdb13052a366a44acb01526df06fa622}\label{mpi_8c_acdb13052a366a44acb01526df06fa622}} 
\index{mpi.c@{mpi.c}!MPI\_ERRCODE\_CHECK@{MPI\_ERRCODE\_CHECK}}
\index{MPI\_ERRCODE\_CHECK@{MPI\_ERRCODE\_CHECK}!mpi.c@{mpi.c}}
\doxysubsubsection{\texorpdfstring{MPI\_ERRCODE\_CHECK}{MPI\_ERRCODE\_CHECK}}
{\footnotesize\ttfamily \#define MPI\+\_\+\+ERRCODE\+\_\+\+CHECK(\begin{DoxyParamCaption}\item[{}]{err }\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{    \textcolor{keywordflow}{do} \{ \(\backslash\)}
\DoxyCodeLine{        int \_tmp\_err = (err); \(\backslash\)}
\DoxyCodeLine{        if ( \_tmp\_err != MPI\_SUCCESS ) \textcolor{keywordflow}{return} \_tmp\_err != 0 ? \_tmp\_err : -\/1; \(\backslash\)}
\DoxyCodeLine{    \} \textcolor{keywordflow}{while} (0)}

\end{DoxyCode}
A macro which exits the caller with a non-\/zero return value if {\itshape err} is not MPI\+\_\+\+SUCCESS.


\begin{DoxyParams}{Parameters}
{\em err} & The return value of a MPI function to be checked.\\
\hline
\end{DoxyParams}
\begin{DoxyRemark}{Remarks}
The MPI standard defines MPI\+\_\+\+SUCCESS == 0. Then (\+\_\+tmp\+\_\+err == 0) appears twice and we can expect the second evaluation will be eliminated by the compiler optimization. 
\end{DoxyRemark}


Definition at line 84 of file mpi.\+c.



\doxysubsection{Function Documentation}
\mbox{\Hypertarget{mpi_8c_a61be89287368cdafe13360326d8e2d63}\label{mpi_8c_a61be89287368cdafe13360326d8e2d63}} 
\index{mpi.c@{mpi.c}!PF\_RealTime@{PF\_RealTime}}
\index{PF\_RealTime@{PF\_RealTime}!mpi.c@{mpi.c}}
\doxysubsubsection{\texorpdfstring{PF\_RealTime()}{PF\_RealTime()}}
{\footnotesize\ttfamily LONG PF\+\_\+\+Real\+Time (\begin{DoxyParamCaption}\item[{int}]{i }\end{DoxyParamCaption})}

Returns the realtime in 1/100 sec. as a LONG.


\begin{DoxyParams}{Parameters}
{\em i} & the timer will be reset if i == 0. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
the real elapsed time in 1/100 second. 
\end{DoxyReturn}


Definition at line 101 of file mpi.\+c.

\mbox{\Hypertarget{mpi_8c_a1df5990c91403b55b25e97a83f8f8815}\label{mpi_8c_a1df5990c91403b55b25e97a83f8f8815}} 
\index{mpi.c@{mpi.c}!PF\_LibInit@{PF\_LibInit}}
\index{PF\_LibInit@{PF\_LibInit}!mpi.c@{mpi.c}}
\doxysubsubsection{\texorpdfstring{PF\_LibInit()}{PF\_LibInit()}}
{\footnotesize\ttfamily int PF\+\_\+\+Lib\+Init (\begin{DoxyParamCaption}\item[{int $\ast$}]{argcp,  }\item[{char $\ast$$\ast$$\ast$}]{argvp }\end{DoxyParamCaption})}

Performs all library dependent initializations.


\begin{DoxyParams}{Parameters}
{\em argcp} & pointer to the number of arguments. \\
\hline
{\em argvp} & pointer to the arguments. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 if OK, nonzero on error. 
\end{DoxyReturn}


Definition at line 123 of file mpi.\+c.

\mbox{\Hypertarget{mpi_8c_aec0effd2d2a61b47d2561907299c78b4}\label{mpi_8c_aec0effd2d2a61b47d2561907299c78b4}} 
\index{mpi.c@{mpi.c}!PF\_LibTerminate@{PF\_LibTerminate}}
\index{PF\_LibTerminate@{PF\_LibTerminate}!mpi.c@{mpi.c}}
\doxysubsubsection{\texorpdfstring{PF\_LibTerminate()}{PF\_LibTerminate()}}
{\footnotesize\ttfamily int PF\+\_\+\+Lib\+Terminate (\begin{DoxyParamCaption}\item[{int}]{error }\end{DoxyParamCaption})}

Exits mpi, when there is an error either indicated or happening, returnvalue is 1, else returnvalue is 0.


\begin{DoxyParams}{Parameters}
{\em error} & an error code. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 if OK, nonzero on error. 
\end{DoxyReturn}


Definition at line 209 of file mpi.\+c.



Referenced by PF\+\_\+\+Terminate().

\mbox{\Hypertarget{mpi_8c_adc3e52d1a69ed7df90a46f21c41db9c6}\label{mpi_8c_adc3e52d1a69ed7df90a46f21c41db9c6}} 
\index{mpi.c@{mpi.c}!PF\_Probe@{PF\_Probe}}
\index{PF\_Probe@{PF\_Probe}!mpi.c@{mpi.c}}
\doxysubsubsection{\texorpdfstring{PF\_Probe()}{PF\_Probe()}}
{\footnotesize\ttfamily int PF\+\_\+\+Probe (\begin{DoxyParamCaption}\item[{int $\ast$}]{src }\end{DoxyParamCaption})}

Probes the next incoming message. If src == PF\+\_\+\+ANY\+\_\+\+SOURCE this operation is blocking, otherwise nonbloking.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em src} & the source process number. In output, the process number of actual found source. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
the tag value of the next incoming message if found, 0 if a nonbloking probe (input src != PF\+\_\+\+ANY\+\_\+\+SOURCE) did not find any messages. A negative returned value indicates an error. 
\end{DoxyReturn}


Definition at line 230 of file mpi.\+c.

\mbox{\Hypertarget{mpi_8c_ad98e922db7e56af48cd8e15b76966a87}\label{mpi_8c_ad98e922db7e56af48cd8e15b76966a87}} 
\index{mpi.c@{mpi.c}!PF\_ISendSbuf@{PF\_ISendSbuf}}
\index{PF\_ISendSbuf@{PF\_ISendSbuf}!mpi.c@{mpi.c}}
\doxysubsubsection{\texorpdfstring{PF\_ISendSbuf()}{PF\_ISendSbuf()}}
{\footnotesize\ttfamily int PF\+\_\+\+ISend\+Sbuf (\begin{DoxyParamCaption}\item[{int}]{to,  }\item[{int}]{tag }\end{DoxyParamCaption})}

Nonblocking send operation. It sends everything from {\ttfamily buff} to {\ttfamily fill} of the active buffer. Depending on {\itshape tag} it also can do waiting for other sends to finish or set the active buffer to the next one.


\begin{DoxyParams}{Parameters}
{\em to} & the destination process number. \\
\hline
{\em tag} & the message tag. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 if OK, nonzero on error. 
\end{DoxyReturn}


Definition at line 261 of file mpi.\+c.

\mbox{\Hypertarget{mpi_8c_a04f39502d41d6129721da4ee1ded3f35}\label{mpi_8c_a04f39502d41d6129721da4ee1ded3f35}} 
\index{mpi.c@{mpi.c}!PF\_RecvWbuf@{PF\_RecvWbuf}}
\index{PF\_RecvWbuf@{PF\_RecvWbuf}!mpi.c@{mpi.c}}
\doxysubsubsection{\texorpdfstring{PF\_RecvWbuf()}{PF\_RecvWbuf()}}
{\footnotesize\ttfamily int PF\+\_\+\+Recv\+Wbuf (\begin{DoxyParamCaption}\item[{WORD $\ast$}]{b,  }\item[{LONG $\ast$}]{s,  }\item[{int $\ast$}]{src }\end{DoxyParamCaption})}

Blocking receive of a {\ttfamily WORD} buffer.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em b} & the buffer to store the received data. \\
\hline
\mbox{\texttt{ in,out}}  & {\em s} & the size of the buffer. The output value is the actual size of the received data. \\
\hline
\mbox{\texttt{ in,out}}  & {\em src} & the source process number. The output value is the process number of actual source. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
the received message tag. A negative value indicates an error. 
\end{DoxyReturn}


Definition at line 337 of file mpi.\+c.

\mbox{\Hypertarget{mpi_8c_a465cdd4ca4225a9392114fe2a18ea5e0}\label{mpi_8c_a465cdd4ca4225a9392114fe2a18ea5e0}} 
\index{mpi.c@{mpi.c}!PF\_IRecvRbuf@{PF\_IRecvRbuf}}
\index{PF\_IRecvRbuf@{PF\_IRecvRbuf}!mpi.c@{mpi.c}}
\doxysubsubsection{\texorpdfstring{PF\_IRecvRbuf()}{PF\_IRecvRbuf()}}
{\footnotesize\ttfamily int PF\+\_\+\+IRecv\+Rbuf (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structPF__BUFFER}{PF\+\_\+\+BUFFER}} $\ast$}]{r,  }\item[{int}]{bn,  }\item[{int}]{from }\end{DoxyParamCaption})}

Posts nonblocking receive for the active receive buffer. The buffer is filled from {\ttfamily full} to {\ttfamily stop}.


\begin{DoxyParams}{Parameters}
{\em r} & the {\ttfamily \mbox{\hyperlink{structPF__BUFFER}{PF\+\_\+\+BUFFER}}} struct for the nonblocking receive. \\
\hline
{\em bn} & the index of the cyclic buffer. \\
\hline
{\em from} & the source process number. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 if OK, nonzero on error. 
\end{DoxyReturn}


Definition at line 366 of file mpi.\+c.

\mbox{\Hypertarget{mpi_8c_adf8c1a254fcf7e01118ab5e9a6b6d24a}\label{mpi_8c_adf8c1a254fcf7e01118ab5e9a6b6d24a}} 
\index{mpi.c@{mpi.c}!PF\_WaitRbuf@{PF\_WaitRbuf}}
\index{PF\_WaitRbuf@{PF\_WaitRbuf}!mpi.c@{mpi.c}}
\doxysubsubsection{\texorpdfstring{PF\_WaitRbuf()}{PF\_WaitRbuf()}}
{\footnotesize\ttfamily int PF\+\_\+\+Wait\+Rbuf (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structPF__BUFFER}{PF\+\_\+\+BUFFER}} $\ast$}]{r,  }\item[{int}]{bn,  }\item[{LONG $\ast$}]{size }\end{DoxyParamCaption})}

Waits for the buffer {\itshape bn} to finish a pending nonblocking receive. It returns the received tag and in {\ttfamily $\ast$size} the number of field received. If the receive is already finished, just return the flag and size, else wait for it to finish, but also check for other pending receives.


\begin{DoxyParams}[1]{Parameters}
 & {\em r} & the {\ttfamily \mbox{\hyperlink{structPF__BUFFER}{PF\+\_\+\+BUFFER}}} struct for the pending nonblocking receive. \\
\hline
 & {\em bn} & the index of the cyclic buffer. \\
\hline
\mbox{\texttt{ out}}  & {\em size} & the actual size of received data. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
the received message tag. A negative value indicates an error. 
\end{DoxyReturn}


Definition at line 400 of file mpi.\+c.

\mbox{\Hypertarget{mpi_8c_ad01fcdd6248040453a990e8a8fd21a15}\label{mpi_8c_ad01fcdd6248040453a990e8a8fd21a15}} 
\index{mpi.c@{mpi.c}!PF\_Bcast@{PF\_Bcast}}
\index{PF\_Bcast@{PF\_Bcast}!mpi.c@{mpi.c}}
\doxysubsubsection{\texorpdfstring{PF\_Bcast()}{PF\_Bcast()}}
{\footnotesize\ttfamily int PF\+\_\+\+Bcast (\begin{DoxyParamCaption}\item[{void $\ast$}]{buffer,  }\item[{int}]{count }\end{DoxyParamCaption})}

Broadcasts a message from the master to slaves.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em buffer} & the starting address of buffer. The contents in this buffer on the master will be transferred to those on the slaves. \\
\hline
 & {\em count} & the length of the buffer in bytes. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 if OK, nonzero on error. 
\end{DoxyReturn}


Definition at line 440 of file mpi.\+c.

\mbox{\Hypertarget{mpi_8c_aabbfc0cdb02aa09612dfc99650adee24}\label{mpi_8c_aabbfc0cdb02aa09612dfc99650adee24}} 
\index{mpi.c@{mpi.c}!PF\_RawSend@{PF\_RawSend}}
\index{PF\_RawSend@{PF\_RawSend}!mpi.c@{mpi.c}}
\doxysubsubsection{\texorpdfstring{PF\_RawSend()}{PF\_RawSend()}}
{\footnotesize\ttfamily int PF\+\_\+\+Raw\+Send (\begin{DoxyParamCaption}\item[{int}]{dest,  }\item[{void $\ast$}]{buf,  }\item[{LONG}]{l,  }\item[{int}]{tag }\end{DoxyParamCaption})}

Sends {\itshape l} bytes from {\itshape buf} to {\itshape dest}. Returns 0 on success, or -\/1.


\begin{DoxyParams}{Parameters}
{\em dest} & the destination process number. \\
\hline
{\em buf} & the send buffer. \\
\hline
{\em l} & the size of data in the send buffer in bytes. \\
\hline
{\em tag} & the message tag. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 if OK, nonzero on error. 
\end{DoxyReturn}


Definition at line 463 of file mpi.\+c.



Referenced by PF\+\_\+\+Send\+File().

\mbox{\Hypertarget{mpi_8c_a754c5c9e131d45040b31e541e1908b8e}\label{mpi_8c_a754c5c9e131d45040b31e541e1908b8e}} 
\index{mpi.c@{mpi.c}!PF\_RawRecv@{PF\_RawRecv}}
\index{PF\_RawRecv@{PF\_RawRecv}!mpi.c@{mpi.c}}
\doxysubsubsection{\texorpdfstring{PF\_RawRecv()}{PF\_RawRecv()}}
{\footnotesize\ttfamily LONG PF\+\_\+\+Raw\+Recv (\begin{DoxyParamCaption}\item[{int $\ast$}]{src,  }\item[{void $\ast$}]{buf,  }\item[{LONG}]{thesize,  }\item[{int $\ast$}]{tag }\end{DoxyParamCaption})}

Receives not more than {\itshape thesize} bytes from {\itshape src}, returns the actual number of received bytes, or -\/1 on failure.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em src} & the source process number. In output, that of the actual received message. \\
\hline
\mbox{\texttt{ out}}  & {\em buf} & the receive buffer. \\
\hline
 & {\em thesize} & the size of the receive buffer in bytes. \\
\hline
\mbox{\texttt{ out}}  & {\em tag} & the message tag of the actual received message. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
the actual sizeof received data in bytes, or -\/1 on failure. 
\end{DoxyReturn}


Definition at line 484 of file mpi.\+c.

\mbox{\Hypertarget{mpi_8c_a8b2e58bede303502d5c8db7f52604336}\label{mpi_8c_a8b2e58bede303502d5c8db7f52604336}} 
\index{mpi.c@{mpi.c}!PF\_RawProbe@{PF\_RawProbe}}
\index{PF\_RawProbe@{PF\_RawProbe}!mpi.c@{mpi.c}}
\doxysubsubsection{\texorpdfstring{PF\_RawProbe()}{PF\_RawProbe()}}
{\footnotesize\ttfamily int PF\+\_\+\+Raw\+Probe (\begin{DoxyParamCaption}\item[{int $\ast$}]{src,  }\item[{int $\ast$}]{tag,  }\item[{int $\ast$}]{bytesize }\end{DoxyParamCaption})}

Probes an incoming message.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em src} & the source process number. In output, that of the actual received message. \\
\hline
\mbox{\texttt{ in,out}}  & {\em tag} & the message tag. In output, that of the actual received message. \\
\hline
\mbox{\texttt{ out}}  & {\em bytesize} & the size of incoming data in bytes. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 if OK, nonzero on error. 
\end{DoxyReturn}


Definition at line 508 of file mpi.\+c.

\mbox{\Hypertarget{mpi_8c_aa089edd39af1232d976aad82096f4976}\label{mpi_8c_aa089edd39af1232d976aad82096f4976}} 
\index{mpi.c@{mpi.c}!PF\_PrintPackBuf@{PF\_PrintPackBuf}}
\index{PF\_PrintPackBuf@{PF\_PrintPackBuf}!mpi.c@{mpi.c}}
\doxysubsubsection{\texorpdfstring{PF\_PrintPackBuf()}{PF\_PrintPackBuf()}}
{\footnotesize\ttfamily int PF\+\_\+\+Print\+Pack\+Buf (\begin{DoxyParamCaption}\item[{char $\ast$}]{s,  }\item[{int}]{size }\end{DoxyParamCaption})}

Prints the contents in the pack buffer.


\begin{DoxyParams}{Parameters}
{\em s} & a message to be shown. \\
\hline
{\em size} & the length of the buffer to be shown. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 if OK, nonzero on error. 
\end{DoxyReturn}


Definition at line 594 of file mpi.\+c.

\mbox{\Hypertarget{mpi_8c_a62e43295488ff786e126b87aaf4ed26b}\label{mpi_8c_a62e43295488ff786e126b87aaf4ed26b}} 
\index{mpi.c@{mpi.c}!PF\_PreparePack@{PF\_PreparePack}}
\index{PF\_PreparePack@{PF\_PreparePack}!mpi.c@{mpi.c}}
\doxysubsubsection{\texorpdfstring{PF\_PreparePack()}{PF\_PreparePack()}}
{\footnotesize\ttfamily int PF\+\_\+\+Prepare\+Pack (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})}

Prepares for the next pack operations on the sender.

\begin{DoxyReturn}{Returns}
0 if OK, nonzero on error. 
\end{DoxyReturn}


Definition at line 624 of file mpi.\+c.

\mbox{\Hypertarget{mpi_8c_a7619a182c005b27cfe949e4ebbeaa6d2}\label{mpi_8c_a7619a182c005b27cfe949e4ebbeaa6d2}} 
\index{mpi.c@{mpi.c}!PF\_Pack@{PF\_Pack}}
\index{PF\_Pack@{PF\_Pack}!mpi.c@{mpi.c}}
\doxysubsubsection{\texorpdfstring{PF\_Pack()}{PF\_Pack()}}
{\footnotesize\ttfamily int PF\+\_\+\+Pack (\begin{DoxyParamCaption}\item[{const void $\ast$}]{buffer,  }\item[{size\+\_\+t}]{count,  }\item[{MPI\+\_\+\+Datatype}]{type }\end{DoxyParamCaption})}

Adds data into the pack buffer.


\begin{DoxyParams}{Parameters}
{\em buffer} & the pointer to the buffer storing the data to be packed. \\
\hline
{\em count} & the number of elements in the buffer. \\
\hline
{\em type} & the data type of elements in the buffer. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 if OK, nonzero on error. 
\end{DoxyReturn}


Definition at line 642 of file mpi.\+c.

\mbox{\Hypertarget{mpi_8c_a34605b9383c62068bbbcc99316c41b62}\label{mpi_8c_a34605b9383c62068bbbcc99316c41b62}} 
\index{mpi.c@{mpi.c}!PF\_Unpack@{PF\_Unpack}}
\index{PF\_Unpack@{PF\_Unpack}!mpi.c@{mpi.c}}
\doxysubsubsection{\texorpdfstring{PF\_Unpack()}{PF\_Unpack()}}
{\footnotesize\ttfamily int PF\+\_\+\+Unpack (\begin{DoxyParamCaption}\item[{void $\ast$}]{buffer,  }\item[{size\+\_\+t}]{count,  }\item[{MPI\+\_\+\+Datatype}]{type }\end{DoxyParamCaption})}

Retrieves the next data in the pack buffer.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em buffer} & the pointer to the buffer to store the unpacked data. \\
\hline
 & {\em count} & the number of elements of data to be received. \\
\hline
 & {\em type} & the data type of elements of data to be received. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 if OK, nonzero on error. 
\end{DoxyReturn}


Definition at line 671 of file mpi.\+c.

\mbox{\Hypertarget{mpi_8c_a09df0aab01cd342b5c8ca3a65b1a081d}\label{mpi_8c_a09df0aab01cd342b5c8ca3a65b1a081d}} 
\index{mpi.c@{mpi.c}!PF\_PackString@{PF\_PackString}}
\index{PF\_PackString@{PF\_PackString}!mpi.c@{mpi.c}}
\doxysubsubsection{\texorpdfstring{PF\_PackString()}{PF\_PackString()}}
{\footnotesize\ttfamily int PF\+\_\+\+Pack\+String (\begin{DoxyParamCaption}\item[{const UBYTE $\ast$}]{str }\end{DoxyParamCaption})}

Packs a string {\itshape str} into the packed buffer PF\+\_\+packbuf, including the trailing zero.

The first element (PF\+\_\+\+INT) is the length of the packed portion of the string. If the string does not fit to the buffer PF\+\_\+packbuf, the function packs only the initial portion. It returns the number of packed bytes, so if (str\mbox{[}length-\/1\mbox{]}==\textquotesingle{}\textbackslash{}0\textquotesingle{}) then the whole string fits to the buffer, if not, then the rest (str+length) bust be packed and send again. On error, the function returns the negative error code.

One exception\+: the string \char`\"{}\textbackslash{}0!\textbackslash{}0\char`\"{} is used as an image of the NULL, so all 3 characters will be packed.


\begin{DoxyParams}{Parameters}
{\em str} & a string to be packed. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
the number of packed bytes, or a negative value on failure. 
\end{DoxyReturn}


Definition at line 706 of file mpi.\+c.

\mbox{\Hypertarget{mpi_8c_a9f23d69486afc2fa06b33ee8169842b1}\label{mpi_8c_a9f23d69486afc2fa06b33ee8169842b1}} 
\index{mpi.c@{mpi.c}!PF\_UnpackString@{PF\_UnpackString}}
\index{PF\_UnpackString@{PF\_UnpackString}!mpi.c@{mpi.c}}
\doxysubsubsection{\texorpdfstring{PF\_UnpackString()}{PF\_UnpackString()}}
{\footnotesize\ttfamily int PF\+\_\+\+Unpack\+String (\begin{DoxyParamCaption}\item[{UBYTE $\ast$}]{str }\end{DoxyParamCaption})}

Unpacks a string to {\itshape str} from the packed buffer PF\+\_\+packbuf, including the trailing zero.

It returns the number of unpacked bytes, so if (str\mbox{[}length-\/1\mbox{]}==\textquotesingle{}\textbackslash{}0\textquotesingle{}) then the whole string was unpacked, if not, then the rest must be appended to (str+length). On error, the function returns the negative error code.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em str} & the buffer to store the unpacked string \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
the number of unpacked bytes, or a negative value on failure. 
\end{DoxyReturn}


Definition at line 774 of file mpi.\+c.

\mbox{\Hypertarget{mpi_8c_a5d09f4ef20ba9e56d2b0c0c80f4080e7}\label{mpi_8c_a5d09f4ef20ba9e56d2b0c0c80f4080e7}} 
\index{mpi.c@{mpi.c}!PF\_Send@{PF\_Send}}
\index{PF\_Send@{PF\_Send}!mpi.c@{mpi.c}}
\doxysubsubsection{\texorpdfstring{PF\_Send()}{PF\_Send()}}
{\footnotesize\ttfamily int PF\+\_\+\+Send (\begin{DoxyParamCaption}\item[{int}]{to,  }\item[{int}]{tag }\end{DoxyParamCaption})}

Sends the contents in the pack buffer to the process specified by {\itshape to}.

Example\+: 
\begin{DoxyCode}{0}
\DoxyCodeLine{\textcolor{keywordflow}{if} ( PF.me == SRC ) \{}
\DoxyCodeLine{  \mbox{\hyperlink{mpi_8c_a62e43295488ff786e126b87aaf4ed26b}{PF\_PreparePack}}();}
\DoxyCodeLine{  \textcolor{comment}{// Packing operations here...}}
\DoxyCodeLine{  \mbox{\hyperlink{mpi_8c_a5d09f4ef20ba9e56d2b0c0c80f4080e7}{PF\_Send}}(DEST, TAG);}
\DoxyCodeLine{\}}
\DoxyCodeLine{\textcolor{keywordflow}{else} \textcolor{keywordflow}{if} ( PF.me == DEST ) \{}
\DoxyCodeLine{  \mbox{\hyperlink{mpi_8c_a4a592eba09170cf9927f52c753d43449}{PF\_Receive}}(SRC, TAG, \&actual\_src, \&actual\_tag);}
\DoxyCodeLine{  \textcolor{comment}{// Unpacking operations here...}}
\DoxyCodeLine{\}}

\end{DoxyCode}



\begin{DoxyParams}{Parameters}
{\em to} & the destination process number. \\
\hline
{\em tag} & the message tag. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 if OK, nonzero on error. 
\end{DoxyReturn}


Definition at line 822 of file mpi.\+c.

\mbox{\Hypertarget{mpi_8c_a4a592eba09170cf9927f52c753d43449}\label{mpi_8c_a4a592eba09170cf9927f52c753d43449}} 
\index{mpi.c@{mpi.c}!PF\_Receive@{PF\_Receive}}
\index{PF\_Receive@{PF\_Receive}!mpi.c@{mpi.c}}
\doxysubsubsection{\texorpdfstring{PF\_Receive()}{PF\_Receive()}}
{\footnotesize\ttfamily int PF\+\_\+\+Receive (\begin{DoxyParamCaption}\item[{int}]{src,  }\item[{int}]{tag,  }\item[{int $\ast$}]{psrc,  }\item[{int $\ast$}]{ptag }\end{DoxyParamCaption})}

Receives data into the pack buffer from the process specified by {\itshape src}. This function allows \&src == psrc or \&tag == ptag. Either {\itshape psrc} or {\itshape ptag} can be NULL.

See the example of \mbox{\hyperlink{mpi_8c_a5d09f4ef20ba9e56d2b0c0c80f4080e7}{PF\+\_\+\+Send()}}.


\begin{DoxyParams}[1]{Parameters}
 & {\em src} & the source process number (can be PF\+\_\+\+ANY\+\_\+\+SOURCE). \\
\hline
 & {\em tag} & the source message tag (can be PF\+\_\+\+ANY\+\_\+\+TAG). \\
\hline
\mbox{\texttt{ out}}  & {\em psrc} & the actual source process number of received message. \\
\hline
\mbox{\texttt{ out}}  & {\em ptag} & the received message tag. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 if OK, nonzero on error. 
\end{DoxyReturn}


Definition at line 848 of file mpi.\+c.

\mbox{\Hypertarget{mpi_8c_a8c5fa9d6247c3759294cfde8beed2a79}\label{mpi_8c_a8c5fa9d6247c3759294cfde8beed2a79}} 
\index{mpi.c@{mpi.c}!PF\_Broadcast@{PF\_Broadcast}}
\index{PF\_Broadcast@{PF\_Broadcast}!mpi.c@{mpi.c}}
\doxysubsubsection{\texorpdfstring{PF\_Broadcast()}{PF\_Broadcast()}}
{\footnotesize\ttfamily int PF\+\_\+\+Broadcast (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})}

Broadcasts the contents in the pack buffer on the master to those on the slaves.

Example\+: 
\begin{DoxyCode}{0}
\DoxyCodeLine{\textcolor{keywordflow}{if} ( PF.me == MASTER ) \{}
\DoxyCodeLine{  \mbox{\hyperlink{mpi_8c_a62e43295488ff786e126b87aaf4ed26b}{PF\_PreparePack}}();}
\DoxyCodeLine{  \textcolor{comment}{// Packing operations here...}}
\DoxyCodeLine{\}}
\DoxyCodeLine{\mbox{\hyperlink{mpi_8c_a8c5fa9d6247c3759294cfde8beed2a79}{PF\_Broadcast}}();}
\DoxyCodeLine{\textcolor{keywordflow}{if} ( PF.me != MASTER ) \{}
\DoxyCodeLine{  \textcolor{comment}{// Unpacking operations here...}}
\DoxyCodeLine{\}}

\end{DoxyCode}


\begin{DoxyReturn}{Returns}
0 if OK, nonzero on error. 
\end{DoxyReturn}


Definition at line 883 of file mpi.\+c.

\mbox{\Hypertarget{mpi_8c_a32c244c9bd896e618696ad0d8af00b77}\label{mpi_8c_a32c244c9bd896e618696ad0d8af00b77}} 
\index{mpi.c@{mpi.c}!PF\_PrepareLongSinglePack@{PF\_PrepareLongSinglePack}}
\index{PF\_PrepareLongSinglePack@{PF\_PrepareLongSinglePack}!mpi.c@{mpi.c}}
\doxysubsubsection{\texorpdfstring{PF\_PrepareLongSinglePack()}{PF\_PrepareLongSinglePack()}}
{\footnotesize\ttfamily int PF\+\_\+\+Prepare\+Long\+Single\+Pack (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})}

Prepares for the next long-\/single-\/pack operations on the sender.

\begin{DoxyReturn}{Returns}
0 if OK, nonzero on error. 
\end{DoxyReturn}


Definition at line 1451 of file mpi.\+c.

\mbox{\Hypertarget{mpi_8c_acfd012f95caa0919c94f5146de803851}\label{mpi_8c_acfd012f95caa0919c94f5146de803851}} 
\index{mpi.c@{mpi.c}!PF\_LongSinglePack@{PF\_LongSinglePack}}
\index{PF\_LongSinglePack@{PF\_LongSinglePack}!mpi.c@{mpi.c}}
\doxysubsubsection{\texorpdfstring{PF\_LongSinglePack()}{PF\_LongSinglePack()}}
{\footnotesize\ttfamily int PF\+\_\+\+Long\+Single\+Pack (\begin{DoxyParamCaption}\item[{const void $\ast$}]{buffer,  }\item[{size\+\_\+t}]{count,  }\item[{MPI\+\_\+\+Datatype}]{type }\end{DoxyParamCaption})}

Adds data into the \char`\"{}long single\char`\"{} pack buffer.


\begin{DoxyParams}{Parameters}
{\em buffer} & the pointer to the buffer storing the data to be packed. \\
\hline
{\em count} & the number of elements in the buffer. \\
\hline
{\em type} & the data type of elements in the buffer. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 if OK, nonzero on error. 
\end{DoxyReturn}


Definition at line 1469 of file mpi.\+c.

\mbox{\Hypertarget{mpi_8c_a74be2fd9c9585f01338bee40938a14d6}\label{mpi_8c_a74be2fd9c9585f01338bee40938a14d6}} 
\index{mpi.c@{mpi.c}!PF\_LongSingleUnpack@{PF\_LongSingleUnpack}}
\index{PF\_LongSingleUnpack@{PF\_LongSingleUnpack}!mpi.c@{mpi.c}}
\doxysubsubsection{\texorpdfstring{PF\_LongSingleUnpack()}{PF\_LongSingleUnpack()}}
{\footnotesize\ttfamily int PF\+\_\+\+Long\+Single\+Unpack (\begin{DoxyParamCaption}\item[{void $\ast$}]{buffer,  }\item[{size\+\_\+t}]{count,  }\item[{MPI\+\_\+\+Datatype}]{type }\end{DoxyParamCaption})}

Retrieves the next data in the \char`\"{}long single\char`\"{} pack buffer.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em buffer} & the pointer to the buffer to store the unpacked data. \\
\hline
 & {\em count} & the number of elements of data to be received. \\
\hline
 & {\em type} & the data type of elements of data to be received. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 if OK, nonzero on error. 
\end{DoxyReturn}


Definition at line 1503 of file mpi.\+c.

\mbox{\Hypertarget{mpi_8c_a24e76d4fe06bb15261926c81d4848819}\label{mpi_8c_a24e76d4fe06bb15261926c81d4848819}} 
\index{mpi.c@{mpi.c}!PF\_LongSingleSend@{PF\_LongSingleSend}}
\index{PF\_LongSingleSend@{PF\_LongSingleSend}!mpi.c@{mpi.c}}
\doxysubsubsection{\texorpdfstring{PF\_LongSingleSend()}{PF\_LongSingleSend()}}
{\footnotesize\ttfamily int PF\+\_\+\+Long\+Single\+Send (\begin{DoxyParamCaption}\item[{int}]{to,  }\item[{int}]{tag }\end{DoxyParamCaption})}

Sends the contents in the \char`\"{}long single\char`\"{} pack buffer to the process specified by {\itshape to}.

Example\+: 
\begin{DoxyCode}{0}
\DoxyCodeLine{\textcolor{keywordflow}{if} ( PF.me == SRC ) \{}
\DoxyCodeLine{  \mbox{\hyperlink{mpi_8c_a32c244c9bd896e618696ad0d8af00b77}{PF\_PrepareLongSinglePack}}();}
\DoxyCodeLine{  \textcolor{comment}{// Packing operations here...}}
\DoxyCodeLine{  \mbox{\hyperlink{mpi_8c_a24e76d4fe06bb15261926c81d4848819}{PF\_LongSingleSend}}(DEST, TAG);}
\DoxyCodeLine{\}}
\DoxyCodeLine{\textcolor{keywordflow}{else} \textcolor{keywordflow}{if} ( PF.me == DEST ) \{}
\DoxyCodeLine{  \mbox{\hyperlink{mpi_8c_a08e9722074691c45c8f228674e672c87}{PF\_LongSingleReceive}}(SRC, TAG, \&actual\_src, \&actual\_tag);}
\DoxyCodeLine{  \textcolor{comment}{// Unpacking operations here...}}
\DoxyCodeLine{\}}

\end{DoxyCode}



\begin{DoxyParams}{Parameters}
{\em to} & the destination process number. \\
\hline
{\em tag} & the message tag. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 if OK, nonzero on error. 
\end{DoxyReturn}


Definition at line 1540 of file mpi.\+c.

\mbox{\Hypertarget{mpi_8c_a08e9722074691c45c8f228674e672c87}\label{mpi_8c_a08e9722074691c45c8f228674e672c87}} 
\index{mpi.c@{mpi.c}!PF\_LongSingleReceive@{PF\_LongSingleReceive}}
\index{PF\_LongSingleReceive@{PF\_LongSingleReceive}!mpi.c@{mpi.c}}
\doxysubsubsection{\texorpdfstring{PF\_LongSingleReceive()}{PF\_LongSingleReceive()}}
{\footnotesize\ttfamily int PF\+\_\+\+Long\+Single\+Receive (\begin{DoxyParamCaption}\item[{int}]{src,  }\item[{int}]{tag,  }\item[{int $\ast$}]{psrc,  }\item[{int $\ast$}]{ptag }\end{DoxyParamCaption})}

Receives data into the \char`\"{}long single\char`\"{} pack buffer from the process specified by {\itshape src}. This function allows \&src == psrc or \&tag == ptag. Either {\itshape psrc} or {\itshape ptag} can be NULL.

See the example of \mbox{\hyperlink{mpi_8c_a24e76d4fe06bb15261926c81d4848819}{PF\+\_\+\+Long\+Single\+Send()}}.


\begin{DoxyParams}[1]{Parameters}
 & {\em src} & the source process number (can be PF\+\_\+\+ANY\+\_\+\+SOURCE). \\
\hline
 & {\em tag} & the source message tag (can be PF\+\_\+\+ANY\+\_\+\+TAG). \\
\hline
\mbox{\texttt{ out}}  & {\em psrc} & the actual source process number of received message. \\
\hline
\mbox{\texttt{ out}}  & {\em ptag} & the received message tag. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 if OK, nonzero on error. 
\end{DoxyReturn}


Definition at line 1583 of file mpi.\+c.

\mbox{\Hypertarget{mpi_8c_a76f621497e4fb642ac140fce31a11662}\label{mpi_8c_a76f621497e4fb642ac140fce31a11662}} 
\index{mpi.c@{mpi.c}!PF\_PrepareLongMultiPack@{PF\_PrepareLongMultiPack}}
\index{PF\_PrepareLongMultiPack@{PF\_PrepareLongMultiPack}!mpi.c@{mpi.c}}
\doxysubsubsection{\texorpdfstring{PF\_PrepareLongMultiPack()}{PF\_PrepareLongMultiPack()}}
{\footnotesize\ttfamily int PF\+\_\+\+Prepare\+Long\+Multi\+Pack (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})}

Prepares for the next long-\/multi-\/pack operations on the sender.

\begin{DoxyReturn}{Returns}
0 if OK, nonzero on error. 
\end{DoxyReturn}


Definition at line 1643 of file mpi.\+c.

\mbox{\Hypertarget{mpi_8c_a89a6ccb9f441cf57eaefd8b4e5f69786}\label{mpi_8c_a89a6ccb9f441cf57eaefd8b4e5f69786}} 
\index{mpi.c@{mpi.c}!PF\_LongMultiPackImpl@{PF\_LongMultiPackImpl}}
\index{PF\_LongMultiPackImpl@{PF\_LongMultiPackImpl}!mpi.c@{mpi.c}}
\doxysubsubsection{\texorpdfstring{PF\_LongMultiPackImpl()}{PF\_LongMultiPackImpl()}}
{\footnotesize\ttfamily int PF\+\_\+\+Long\+Multi\+Pack\+Impl (\begin{DoxyParamCaption}\item[{const void $\ast$}]{buffer,  }\item[{size\+\_\+t}]{count,  }\item[{size\+\_\+t}]{e\+Size,  }\item[{MPI\+\_\+\+Datatype}]{type }\end{DoxyParamCaption})}

Adds data into the \char`\"{}long multi\char`\"{} pack buffer.


\begin{DoxyParams}{Parameters}
{\em buffer} & the pointer to the buffer storing the data to be packed. \\
\hline
{\em count} & the number of elements in the buffer. \\
\hline
{\em e\+Size} & the byte size of each element of data. \\
\hline
{\em type} & the data type of elements in the buffer. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 if OK, nonzero on error. 
\end{DoxyReturn}


Definition at line 1662 of file mpi.\+c.

\mbox{\Hypertarget{mpi_8c_ab69157e9edff8d3285d5c23115af7a52}\label{mpi_8c_ab69157e9edff8d3285d5c23115af7a52}} 
\index{mpi.c@{mpi.c}!PF\_LongMultiUnpackImpl@{PF\_LongMultiUnpackImpl}}
\index{PF\_LongMultiUnpackImpl@{PF\_LongMultiUnpackImpl}!mpi.c@{mpi.c}}
\doxysubsubsection{\texorpdfstring{PF\_LongMultiUnpackImpl()}{PF\_LongMultiUnpackImpl()}}
{\footnotesize\ttfamily int PF\+\_\+\+Long\+Multi\+Unpack\+Impl (\begin{DoxyParamCaption}\item[{void $\ast$}]{buffer,  }\item[{size\+\_\+t}]{count,  }\item[{size\+\_\+t}]{e\+Size,  }\item[{MPI\+\_\+\+Datatype}]{type }\end{DoxyParamCaption})}

Retrieves the next data in the \char`\"{}long multi\char`\"{} pack buffer.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em buffer} & the pointer to the buffer to store the unpacked data. \\
\hline
 & {\em count} & the number of elements of data to be received. \\
\hline
 & {\em e\+Size} & the byte size of each element of data. \\
\hline
 & {\em type} & the data type of elements of data to be received. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 if OK, nonzero on error. 
\end{DoxyReturn}


Definition at line 1721 of file mpi.\+c.

\mbox{\Hypertarget{mpi_8c_a9b9cf07c7f8d8e4c954bcac06b716398}\label{mpi_8c_a9b9cf07c7f8d8e4c954bcac06b716398}} 
\index{mpi.c@{mpi.c}!PF\_LongMultiBroadcast@{PF\_LongMultiBroadcast}}
\index{PF\_LongMultiBroadcast@{PF\_LongMultiBroadcast}!mpi.c@{mpi.c}}
\doxysubsubsection{\texorpdfstring{PF\_LongMultiBroadcast()}{PF\_LongMultiBroadcast()}}
{\footnotesize\ttfamily int PF\+\_\+\+Long\+Multi\+Broadcast (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})}

Broadcasts the contents in the \char`\"{}long multi\char`\"{} pack buffer on the master to those on the slaves.

Example\+: 
\begin{DoxyCode}{0}
\DoxyCodeLine{\textcolor{keywordflow}{if} ( PF.me == MASTER ) \{}
\DoxyCodeLine{  \mbox{\hyperlink{mpi_8c_a76f621497e4fb642ac140fce31a11662}{PF\_PrepareLongMultiPack}}();}
\DoxyCodeLine{  \textcolor{comment}{// Packing operations here...}}
\DoxyCodeLine{\}}
\DoxyCodeLine{\mbox{\hyperlink{mpi_8c_a9b9cf07c7f8d8e4c954bcac06b716398}{PF\_LongMultiBroadcast}}();}
\DoxyCodeLine{\textcolor{keywordflow}{if} ( PF.me != MASTER ) \{}
\DoxyCodeLine{  \textcolor{comment}{// Unpacking operations here...}}
\DoxyCodeLine{\}}

\end{DoxyCode}


\begin{DoxyReturn}{Returns}
0 if OK, nonzero on error. 
\end{DoxyReturn}


Definition at line 1807 of file mpi.\+c.

