docs: document communication_v2 user-level flags and fix manual errors

- psb_halo: document tran and mode arguments; note work is array-only
- psb_ovrl: document mode argument
- add psb_comm_status_{sync,start,wait}_ to the Named Constants list
- fix psb_add_ -> psb_sum_ in the psb_ovrl update operator list
- remove duplicated psb_gather synopsis line
- drop spurious alpha from the psb_halo data-type table header
- regenerate psblas-3.9.pdf
communication_v2
Stack-1 3 days ago
parent 026b1953c2
commit a140a1050c

File diff suppressed because one or more lines are too long

@ -24,7 +24,7 @@ where:
\begin{center} \begin{center}
\begin{tabular}{ll} \begin{tabular}{ll}
\hline \hline
$\alpha$, $x$ & {\bf Subroutine}\\ $x$ & {\bf Subroutine}\\
\hline \hline
Integer & psb\_halo \\ Integer & psb\_halo \\
Short Precision Real & psb\_halo \\ Short Precision Real & psb\_halo \\
@ -38,10 +38,10 @@ Long Precision Complex & psb\_halo \\
\end{table} \end{table}
\noindent\fortinline|call psb_halo(x, desc_a, info)|\\ \noindent\fortinline|call psb_halo(x, desc_a, info)|\\
\fortinline|call psb_halo(x, desc_a, info, work, data)| \fortinline|call psb_halo(x, desc_a, info, work, tran, mode, data)|
\begin{description} \begin{description}
\item[Type:] Synchronous. \item[Type:] Synchronous or split-phase, depending on \fortinline|mode|.
\item[\bf On Entry] \item[\bf On Entry]
\item[x] global dense matrix $x$.\\ \item[x] global dense matrix $x$.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
@ -59,7 +59,29 @@ Specified as: a structured data of type \descdata.
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf optional}\\ Type: {\bf optional}\\
Intent: {\bf inout}.\\ Intent: {\bf inout}.\\
Specified as: a rank one array of the same type of $x$. Specified as: a rank one array of the same type of $x$. This argument
is only available when $x$ is a rank one or two array; it is not
accepted when $x$ is an object of type \vdata.
\item[tran] indicates whether to apply the transposed halo exchange.\\
Scope: {\bf global} \\
Type: {\bf optional} \\
Intent: {\bf in}.\\
Specified as: a single character. Values: \fortinline|'N'|, \fortinline|'T'|,
\fortinline|'C'|, default: \fortinline|'N'|.
\item[mode] communication mode.\\
Scope: {\bf global} \\
Type: {\bf optional} \\
Intent: {\bf in}.\\
Specified as: an integer. Values: \fortinline|psb_comm_status_sync_|,
\fortinline|psb_comm_status_start_|, \fortinline|psb_comm_status_wait_|, default:
\fortinline|psb_comm_status_sync_|. Selects whether the exchange is
performed as a single synchronous operation
(\fortinline|psb_comm_status_sync_|) or split into a non-blocking start
phase (\fortinline|psb_comm_status_start_|) and a later wait phase
(\fortinline|psb_comm_status_wait_|), so that communication may be
overlapped with computation. When the split-phase mode is used, the
halo entries of $x$ must not be referenced between the start and the
matching wait call.
\item[data] index list selector.\\ \item[data] index list selector.\\
Scope: {\bf global} \\ Scope: {\bf global} \\
Type: {\bf optional} \\ Type: {\bf optional} \\
@ -188,10 +210,10 @@ Long Precision Complex & psb\_ovrl \\
\end{table} \end{table}
\noindent\fortinline|call psb_ovrl(x, desc_a, info)|\\ \noindent\fortinline|call psb_ovrl(x, desc_a, info)|\\
\fortinline|call psb_ovrl(x, desc_a, info, update=update_type, work=work)| \fortinline|call psb_ovrl(x, desc_a, info, update=update_type, mode=mode, work=work)|
\begin{description} \begin{description}
\item[Type:] Synchronous. \item[Type:] Synchronous or split-phase, depending on \fortinline|mode|.
\item[\bf On Entry] \item[\bf On Entry]
\item[x] global dense matrix $x$.\\ \item[x] global dense matrix $x$.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
@ -208,7 +230,7 @@ Specified as: a structured data of type \descdata.
\item[update] Update operator. \\ \item[update] Update operator. \\
\begin{description} \begin{description}
\item[update = psb\_none\_] Do nothing; \item[update = psb\_none\_] Do nothing;
\item[update = psb\_add\_] Sum overlap entries, i.e. apply $P^T$; \item[update = psb\_sum\_] Sum overlap entries, i.e. apply $P^T$;
\item[update = psb\_avg\_] Average overlap entries, i.e. apply $P_aP^T$; \item[update = psb\_avg\_] Average overlap entries, i.e. apply $P_aP^T$;
%% \item[update = psb\_square\_root\_] square root update $\sqrt{P_a}$; %% \item[update = psb\_square\_root\_] square root update $\sqrt{P_a}$;
\end{description} \end{description}
@ -217,11 +239,25 @@ Intent: {\bf in}.\\
Default: $update\_type = psb\_avg\_ $\\ Default: $update\_type = psb\_avg\_ $\\
Scope: {\bf global} \\ Scope: {\bf global} \\
Specified as: a integer variable. Specified as: a integer variable.
\item[mode] communication mode.\\
Scope: {\bf global} \\
Type: {\bf optional} \\
Intent: {\bf in}.\\
Specified as: an integer. Values: \fortinline|psb_comm_status_sync_|,
\fortinline|psb_comm_status_start_|, \fortinline|psb_comm_status_wait_|, default:
\fortinline|psb_comm_status_sync_|. Selects whether the overlap exchange
is performed as a single synchronous operation or split into a
non-blocking start phase and a later wait phase, so that communication
may be overlapped with computation. When the split-phase mode is used,
the overlap entries of $x$ must not be referenced between the start and
the matching wait call.
\item[work] the work array. \\ \item[work] the work array. \\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf optional}\\ Type: {\bf optional}\\
Intent: {\bf inout}.\\ Intent: {\bf inout}.\\
Specified as: a one dimensional array of the same type of $x$. Specified as: a one dimensional array of the same type of $x$. This
argument is only available when $x$ is a rank one or two array; it is
not accepted when $x$ is an object of type \vdata.
\item[\bf On Return] \item[\bf On Return]
\item[x] global dense result matrix $x$.\\ \item[x] global dense result matrix $x$.\\
@ -381,7 +417,6 @@ Long Precision Complex & psb\_gather \\
\end{table} \end{table}
\noindent\fortinline|call psb_gather(glob_x, loc_x, desc_a, info, root)| \noindent\fortinline|call psb_gather(glob_x, loc_x, desc_a, info, root)|
\fortinline|call psb_gather(glob_x, loc_x, desc_a, info, root)|
\begin{description} \begin{description}

@ -518,6 +518,12 @@ method is called by all processes.
list; list;
\item[psb\_comm\_mov\_] Exchange data based on the \fortinline|ovr_mst_idx| \item[psb\_comm\_mov\_] Exchange data based on the \fortinline|ovr_mst_idx|
list; list;
\item[psb\_comm\_status\_sync\_] Perform a data exchange as a single
synchronous operation (default);
\item[psb\_comm\_status\_start\_] Begin a split-phase data exchange
(non-blocking start);
\item[psb\_comm\_status\_wait\_] Complete a split-phase data exchange
started with \fortinline|psb_comm_status_start_|;
%% \item[psb\_square\_root\_] Update with the square root of the average %% \item[psb\_square\_root\_] Update with the square root of the average
%% of overlapped elements; %% of overlapped elements;

Loading…
Cancel
Save