docs/pdf/commrout.tex
 docs/pdf/datastruct.tex
 docs/pdf/methods.tex
 docs/pdf/penv.tex
 docs/pdf/psbrout.tex
 docs/pdf/title.tex
 docs/pdf/toolsrout.tex
 docs/userguide.pdf

Updated docs with  single precision.
psblas3-type-indexed
Salvatore Filippone 17 years ago
parent c3532df7fd
commit b888d66e98

@ -25,7 +25,10 @@ where:
\hline
$\alpha$, $x$ & {\bf Subroutine}\\
\hline
Integer & psb\_halo \\
Short Precision Real & psb\_halo \\
Long Precision Real & psb\_halo \\
Short Precision Complex & psb\_halo \\
Long Precision Complex & psb\_halo \\
\hline
\end{tabular}
@ -174,7 +177,9 @@ operators $ P_a$ and $ P^{T}$.
\hline
$x$ & {\bf Subroutine}\\
\hline
Short Precision Real & psb\_ovrl \\
Long Precision Real & psb\_ovrl \\
Short Precision Complex & psb\_ovrl \\
Long Precision Complex & psb\_ovrl \\
\hline
\end{tabular}
@ -359,7 +364,10 @@ process $i$.
\hline
$x_i, y$ & {\bf Subroutine}\\
\hline
Integer & psb\_gather \\
Short Precision Real & psb\_gather \\
Long Precision Real & psb\_gather \\
Short Precision Complex & psb\_gather \\
Long Precision Complex & psb\_gather \\
\hline
\end{tabular}
@ -454,7 +462,10 @@ process $i$.
\hline
$x_i, y$ & {\bf Subroutine}\\
\hline
Integer & psb\_scatter \\
Short Precision Real & psb\_scatter \\
Long Precision Real & psb\_scatter \\
Short Precision Complex & psb\_scatter \\
Long Precision Complex & psb\_scatter \\
\hline
\end{tabular}

@ -15,6 +15,9 @@ user subroutine that makes use of the library.
Real and complex data types are parametrized with a kind type defined
in the library as follows:
\begin{description}
\item[psb\_spk\_] Kind parameter for short precision real and complex
data; corresponds to a \verb|REAL| declaration and is
normally 4 bytes.
\item[psb\_dpk\_] Kind parameter for long precision real and complex
data; corresponds to a \verb|DOUBLE PRECISION| declaration and is
normally 8 bytes.
@ -226,11 +229,23 @@ Specified as: integer variable.
\end{description}
The Fortran~95 interface for distributed sparse matrices containing
double precision real entries is defined as shown in
figure~\ref{fig:spmattype}.
figure~\ref{fig:spmattype}. The definitions for single precision and
complex data are identical except for the \verb|real| declaration and
for the kind type parameter.
\begin{figure}[h!]
\begin{Sbox}
\begin{minipage}[tl]{0.85\textwidth}
\begin{verbatim}
type psb_sspmat_type
integer :: m, k
character :: fida(5)
character :: descra(10)
integer :: infoa(psb_ifa_size_)
real(psb_spk_), allocatable :: aspk(:)
integer, allocatable :: ia1(:), ia2(:)
integer, allocatable :: pr(:), pl(:)
end type psb_sspmat_type
type psb_dspmat_type
integer :: m, k
character :: fida(5)
@ -240,6 +255,27 @@ type psb_dspmat_type
integer, allocatable :: ia1(:), ia2(:)
integer, allocatable :: pr(:), pl(:)
end type psb_dspmat_type
type psb_cspmat_type
integer :: m, k
character :: fida(5)
character :: descra(10)
integer :: infoa(psb_ifa_size_)
complex(psb_spk_), allocatable :: aspk(:)
integer, allocatable :: ia1(:), ia2(:)
integer, allocatable :: pr(:), pl(:)
end type psb_cspmat_type
type psb_zspmat_type
integer :: m, k
character :: fida(5)
character :: descra(10)
integer :: infoa(psb_ifa_size_)
complex(psb_dpk_), allocatable :: aspk(:)
integer, allocatable :: ia1(:), ia2(:)
integer, allocatable :: pr(:), pl(:)
end type psb_zspmat_type
\end{verbatim}
\end{minipage}
\end{Sbox}
@ -330,10 +366,10 @@ associated communication descriptor.%% which may be different than the
%% This data structure wants to be flexible enough to easily allow the
%% implementation of new kind of preconditioners.
The values contained in
the \verb|iprcparm| and \verb|dprcparm| define tha type of
the \verb|iprcparm| and \verb|rprcparm| define tha type of
preconditioner along with all the parameters related to it; thus,
\verb|iprcparm| and \verb|dprcparm| define how the other records have
to be interpreted. This data structure is the basis of ore complex
\verb|iprcparm| and \verb|rprcparm| define how the other records have
to be interpreted. This data structure is the basis of more complex
preconditioning strategies, which are the subject of further
research.
\begin{figure}[h!]
@ -342,16 +378,46 @@ research.
\begin{minipage}[tl]{0.9\textwidth}
\begin{verbatim}
type psb_sprec_type
type(psb_sspmat_type), allocatable :: av(:)
real(psb_spk_), allocatable :: d(:)
type(psb_desc_type) :: desc_data
integer, allocatable :: iprcparm(:)
real(psb_spk_), allocatable :: rprcparm(:)
integer, allocatable :: perm(:), invperm(:)
integer :: prec, base_prec
end type psb_sprec_type
type psb_dprec_type
type(psb_dspmat_type), allocatable :: av(:)
real(psb_dpk_), allocatable :: d(:)
type(psb_desc_type) :: desc_data
integer, allocatable :: iprcparm(:)
real(psb_dpk_), allocatable :: dprcparm(:)
real(psb_dpk_), allocatable :: rprcparm(:)
integer, allocatable :: perm(:), invperm(:)
integer :: prec, base_prec
end type psb_dprec_type
type psb_cprec_type
type(psb_cspmat_type), allocatable :: av(:)
complex(psb_spk_), allocatable :: d(:)
type(psb_desc_type) :: desc_data
integer, allocatable :: iprcparm(:)
real(psb_spk_), allocatable :: rprcparm(:)
integer, allocatable :: perm(:), invperm(:)
integer :: prec, base_prec
end type psb_cprec_type
type psb_zprec_type
type(psb_zspmat_type), allocatable :: av(:)
complex(psb_dpk_), allocatable :: d(:)
type(psb_desc_type) :: desc_data
integer, allocatable :: iprcparm(:)
real(psb_dpk_), allocatable :: rprcparm(:)
integer, allocatable :: perm(:), invperm(:)
integer :: prec, base_prec
end type psb_zprec_type
\end{verbatim}
\end{minipage}
\end{Sbox}

@ -26,7 +26,7 @@ later). In the above formulae, $x_i$ is the tentative solution and
$r_i=b-Ax_i$ the corresponding residual at the $i$-th iteration.
\syntax{call psb\_krylov}{method,a,prec,b,x,eps,desc\_a,info,itmax,iter,err,itrace,irst,istop}
\syntax{call psb\_krylov}{method,a,prec,b,x,eps,desc\_a,info,itmax,iter,err,itrace,irst,istop,cond}
\begin{description}
\item[Type:] Synchronous.
@ -34,13 +34,13 @@ $r_i=b-Ax_i$ the corresponding residual at the $i$-th iteration.
\item[method] a string that defines the iterative method to be
used. Supported values are:
\begin{description}
\item[CG]: the Conjugate Gradient method;
\item[CGS]:the Conjugate Gradient Stabilized method;
\item[CG:] the Conjugate Gradient method;
\item[CGS:] the Conjugate Gradient Stabilized method;
\item[BICG]: the Bi-Conjugate Gradient method;
\item[BICGSTAB]: the Bi-Conjugate Gradient Stabilized method;
\item[BICGSTABL]: the Bi-Conjugate Gradient Stabilized method with restarting;
\item[RGMRES]: the Generalized Minimal Residual method with restarting.
\item[BICG:] the Bi-Conjugate Gradient method;
\item[BICGSTAB:] the Bi-Conjugate Gradient Stabilized method;
\item[BICGSTABL:] the Bi-Conjugate Gradient Stabilized method with restarting;
\item[RGMRES:] the Generalized Minimal Residual method with restarting.
\end{description}
\item[a] the local portion of global sparse matrix
$A$. \\
@ -113,6 +113,12 @@ Scope: {\bf global} \\
Type: {\bf optional}\\
Intent: {\bf out}.\\
Returned as: a real number.
\item[cond] An estimate of the condition number of matrix $A$; only
available with the $CG$ method.\\
Scope: {\bf global} \\
Type: {\bf optional}\\
Intent: {\bf out}.\\
Returned as: a real number.
\item[info] Error code.\\
Scope: {\bf local} \\
Type: {\bf required} \\

@ -255,7 +255,7 @@ Intent: {\bf inout}.\\
Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array, or a character or logical variable,
which may be a scalar or rank 1 array. \
Type, rank and size must agree on all processes.
Type, kind, rank and size must agree on all processes.
\item[root] Root process holding data to be broadcast.\\
Scope: {\bf global}.\\
Type: {\bf optional}.\\
@ -272,7 +272,7 @@ Type: {\bf required}.\\
Intent: {\bf inout}.\\
Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array, or a character or logical scalar. \
Type, rank and size must agree on all processes.
Type, kind, rank and size must agree on all processes.
\end{description}
@ -297,7 +297,7 @@ Type: {\bf required}.\\
Intent: {\bf inout}.\\
Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array. \
Type, rank and size must agree on all processes.
Type, kind, rank and size must agree on all processes.
\item[root] Process to hold the final sum, or $-1$ to make it available
on all processes.\\
Scope: {\bf global}.\\
@ -315,7 +315,7 @@ Type: {\bf required}.\\
Intent: {\bf inout}.\\
Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array. \\
Type, rank and size must agree on all processes.
Type, kind, rank and size must agree on all processes.
\end{description}
\section*{Notes}
@ -348,7 +348,7 @@ Type: {\bf required}.\\
Intent: {\bf inout}.\\
Specified as: an integer or real variable, which may be a
scalar, or a rank 1 or 2 array. \
Type, rank and size must agree on all processes.
Type, kind, rank and size must agree on all processes.
\item[root] Process to hold the final maximum, or $-1$ to make it available
on all processes.\\
Scope: {\bf global}.\\
@ -366,7 +366,7 @@ Type: {\bf required}.\\
Intent: {\bf in}.\\
Specified as: an integer or real variable, which may be a
scalar, or a rank 1 or 2 array. \
Type, rank and size must agree on all processes.
Type, kind, rank and size must agree on all processes.
\end{description}
@ -398,7 +398,7 @@ Type: {\bf required}.\\
Intent: {\bf inout}.\\
Specified as: an integer or real variable, which may be a
scalar, or a rank 1 or 2 array. \
Type, rank and size must agree on all processes.
Type, kind, rank and size must agree on all processes.
\item[root] Process to hold the final value, or $-1$ to make it available
on all processes.\\
Scope: {\bf global}.\\
@ -416,7 +416,7 @@ Type: {\bf required}.\\
Intent: {\bf inout}.\\
Specified as: an integer or real variable, which may be a
scalar, or a rank 1 or 2 array. \\
Type, rank and size must agree on all processes.
Type, kind, rank and size must agree on all processes.
\end{description}
@ -448,7 +448,7 @@ Type: {\bf required}.\\
Intent: {\bf inout}.\\
Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array. \
Type, rank and size must agree on all processes.
Type, kind, rank and size must agree on all processes.
\item[root] Process to hold the final value, or $-1$ to make it available
on all processes.\\
Scope: {\bf global}.\\
@ -466,7 +466,7 @@ Type: {\bf required}.\\
Intent: {\bf inout}.\\
Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array. \
Type, rank and size must agree on all processes.
Type, kind, rank and size must agree on all processes.
\end{description}
@ -498,7 +498,7 @@ Type: {\bf required}.\\
Intent: {\bf inout}.\\
Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array. \
Type, rank and size must agree on all processes.
Type, kind, rank and size must agree on all processes.
\item[root] Process to hold the final value, or $-1$ to make it available
on all processes.\\
Scope: {\bf global}.\\
@ -516,7 +516,7 @@ Type: {\bf required}.\\
Intent: {\bf inout}.\\
Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array. \\
Type, rank and size must agree on all processes.
Type, kind, rank and size must agree on all processes.
\end{description}
@ -548,7 +548,7 @@ Type: {\bf required}.\\
Intent: {\bf in}.\\
Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array, or a character or logical scalar. \
Type and rank must agree on sender and receiver process; if $m$ is
Type, kind and rank must agree on sender and receiver process; if $m$ is
not specified, size must agree as well.
\item[dst] Destination process.\\
Scope: {\bf global}.\\
@ -615,7 +615,7 @@ Type: {\bf required}.\\
Intent: {\bf inout}.\\
Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array, or a character or logical scalar. \
Type and rank must agree on sender and receiver process; if $m$ is
Type, kind and rank must agree on sender and receiver process; if $m$ is
not specified, size must agree as well.
\end{description}

@ -26,7 +26,9 @@ dense matrix sum:
\hline
$x$, $y$, $\alpha$, $\beta$ & {\bf Subroutine}\\
\hline
Short Precision Real & psb\_geaxpby \\
Long Precision Real & psb\_geaxpby \\
Short Precision Complex & psb\_geaxpby \\
Long Precision Complex & psb\_geaxpby \\
\hline
\end{tabular}
@ -113,10 +115,10 @@ An integer value; 0 means no error has been detected.
This function computes dot product between two vectors $x$ and
$y$.\\
If $x$ and $y$ are double precision real vectors
computes dot-product as:
If $x$ and $y$ are real vectors
it computes dot-product as:
\[dot \leftarrow x^T y\]
Else if $x$ and $y$ are double precision complex vectors then computes dot-product as:
Else if $x$ and $y$ are complex vectors then it computes dot-product as:
\[dot \leftarrow x^H y\]
%% where:
%% \begin{description}
@ -132,7 +134,9 @@ Else if $x$ and $y$ are double precision complex vectors then computes dot-produ
\hline
$dot$, $x$, $y$ & {\bf Function}\\
\hline
Short Precision Real & psb\_gedot \\
Long Precision Real & psb\_gedot \\
Short Precision Complex & psb\_gedot \\
Long Precision Complex & psb\_gedot \\
\hline
\end{tabular}
@ -213,7 +217,9 @@ is a rank one array.
\hline
$res$, $x$, $y$ & {\bf Subroutine}\\
\hline
Short Precision Real & psb\_gedots \\
Long Precision Real & psb\_gedots \\
Short Precision Complex & psb\_gedots \\
Long Precision Complex & psb\_gedots \\
\hline
\end{tabular}
@ -269,10 +275,10 @@ An integer value; 0 means no error has been detected.
This function computes
the infinity-norm of a vector $x$.\\
If $x$ is a double precision real vector
computes infinity norm as:
If $x$ is a real vector
it computes infinity norm as:
\[ amax \leftarrow \max_i |x_i|\]
else if $x$ is a double precision complex vector then computes infinity-norm as:
else if $x$ is a complex vector then it computes infinity-norm as:
\[ amax \leftarrow \max_i {(|re(x_i)| + |im(x_i)|)}\]
%% where:
%% \begin{description}
@ -288,7 +294,9 @@ else if $x$ is a double precision complex vector then computes infinity-norm as
\hline
$amax$ & $x$ & {\bf Function}\\
\hline
Short Precision Real& Short Precision Real & psb\_geamax \\
Long Precision Real&Long Precision Real & psb\_geamax \\
Short Precision Real&Short Precision Complex & psb\_geamax \\
Long Precision Real&Long Precision Complex & psb\_geamax \\
\hline
\end{tabular}
@ -351,7 +359,9 @@ a dense matrix $x$:
\hline
$res$& $x$& {\bf Subroutine}\\
\hline
Short Precision Real &Short Precision Real & psb\_geamaxs\\
Long Precision Real &Long Precision Real & psb\_geamaxs\\
Short Precision Real &Short Precision Complex & psb\_geamaxs\\
Long Precision Real &Long Precision Complex & psb\_geamaxs\\
\hline
\end{tabular}
@ -397,10 +407,10 @@ An integer value; 0 means no error has been detected.
\subroutine{psb\_geasum}{1-Norm of Vector}
This function computes the 1-norm of a vector $x$.\\
If $x$ is a double precision real vector
computes 1-norm as:
If $x$ is a real vector
it computes 1-norm as:
\[ asum \leftarrow \|x_i\|\]
else if $x$ is double precision complex vector then computes 1-norm as:
else if $x$ is a vector then it computes 1-norm as:
\[ asum \leftarrow \|re(x)\|_1 + \|im(x)\|_1\]
@ -412,7 +422,9 @@ else if $x$ is double precision complex vector then computes 1-norm as:
\hline
$asum$ & $x$ & {\bf Function}\\
\hline
Short Precision Real&Short Precision Real & psb\_geasum \\
Long Precision Real&Long Precision Real & psb\_geasum \\
Short Precision Real&Short Precision Complex & psb\_geasum \\
Long Precision Real&Long Precision Complex & psb\_geasum \\
\hline
\end{tabular}
@ -457,10 +469,10 @@ This subroutine computes a series of 1-norms on the columns of
a dense matrix $x$:
\[ res(i) \leftarrow \max_k |x(k,i)| \]
This function computes the 1-norm of a vector $x$.\\
If $x$ is a double precision real vector
computes 1-norm as:
If $x$ is a real vector
it computes 1-norm as:
\[ res(i) \leftarrow \|x_i\|\]
else if $x$ is double precision complex vector then computes 1-norm as:
else if $x$ is a complex vector then it computes 1-norm as:
\[ res(i) \leftarrow \|re(x)\|_1 + \|im(x)\|_1\]
@ -472,7 +484,9 @@ else if $x$ is double precision complex vector then computes 1-norm as:
\hline
$res$ & $x$ & {\bf Subroutine}\\
\hline
Short Precision Real&Short Precision Real & psb\_geasums \\
Long Precision Real&Long Precision Real & psb\_geasums \\
Short Precision Real&Short Precision Complex & psb\_geasums \\
Long Precision Real&Long Precision Complex & psb\_geasums \\
\hline
\end{tabular}
@ -503,6 +517,7 @@ Specified as: a structured data of type \descdata.
\item[res] contains the 1-norm of (the columns of) $x$.\\
Scope: {\bf global} \\
Intent: {\bf out}.\\
Short as: a long precision real number.
Specified as: a long precision real number.
\item[info] Error code.\\
Scope: {\bf local} \\
@ -523,9 +538,9 @@ An integer value; 0 means no error has been detected.
This function computes the 2-norm of a vector $x$.\\
If $x$ is a double precision real vector
computes 2-norm as:
it computes 2-norm as:
\[ nrm2 \leftarrow \sqrt{x^T x}\]
else if $x$ is double precision complex vector then computes 2-norm as:
else if $x$ is double precision complex vector then it computes 2-norm as:
\[ nrm2 \leftarrow \sqrt{x^H x}\]
%% where:
%% \begin{description}
@ -538,7 +553,9 @@ else if $x$ is double precision complex vector then computes 2-norm as:
\hline
$nrm2$ & $x$ & {\bf Function}\\
\hline
Short Precision Real&Short Precision Real & psb\_genrm2 \\
Long Precision Real&Long Precision Real & psb\_genrm2 \\
Short Precision Real&Short Precision Complex & psb\_genrm2 \\
Long Precision Real&Long Precision Complex & psb\_genrm2 \\
\hline
\end{tabular}
@ -593,11 +610,10 @@ This subroutine computes a series of 1-norms on the columns of
a dense matrix $x$:
\[ res(i) \leftarrow \max_k |x(k,i)| \]
This function computes the 1-norm of a vector $x$.\\
If $x$ is a double precision real vector
computes 1-norm as:
If $x$ is a real vector
it computes 1-norm as:
\[ res(i) \leftarrow \sqrt{x^T x}\]
else if $x$ is double precision complex vector then computes 1-norm as:
else if $x$ is a complex vector then it computes 1-norm as:
\[ res(i) \leftarrow \sqrt{x^H x}\]
@ -609,7 +625,9 @@ else if $x$ is double precision complex vector then computes 1-norm as:
\hline
$res$ & $x$ & {\bf Subroutine}\\
\hline
Short Precision Real&Short Precision Real & psb\_genrm2s \\
Long Precision Real&Long Precision Real & psb\_genrm2s \\
Short Precision Real&Short Precision Complex & psb\_genrm2s \\
Long Precision Real&Long Precision Complex & psb\_genrm2s \\
\hline
\end{tabular}
@ -673,7 +691,9 @@ where:
\hline
$A$ & {\bf Function}\\
\hline
Short Precision Real & psb\_spnrmi \\
Long Precision Real & psb\_spnrmi \\
Short Precision Complex & psb\_spnrmi \\
Long Precision Complex & psb\_spnrmi \\
\hline
\end{tabular}
@ -747,7 +767,9 @@ where:
\hline
$A$, $x$, $y$, $\alpha$, $\beta$ & {\bf Subroutine}\\
\hline
Short Precision Real & psb\_spmm \\
Long Precision Real & psb\_spmm \\
Short Precision Complex & psb\_spmm \\
Long Precision Complex & psb\_spmm \\
\hline
\end{tabular}
@ -900,7 +922,9 @@ trans, unit, choice, diag, work}
\hline
$T$, $x$, $y$, $D$, $\alpha$, $\beta$ & {\bf Subroutine}\\
\hline
Short Precision Real & psb\_spsm \\
Long Precision Real & psb\_spsm \\
Short Precision Complex & psb\_spsm \\
Long Precision Complex & psb\_spsm \\
\hline
\end{tabular}

@ -5,7 +5,7 @@
\ifx\pdfoutput\undefined % We're not running pdftex
\else
\pdfbookmark{PSBLAS-v2.2 User's Guide}{title}
\pdfbookmark{PSBLAS-v2.3 User's Guide}{title}
\fi
\newlength{\centeroffset}
\setlength{\centeroffset}{-0.5\oddsidemargin}
@ -15,7 +15,7 @@
\vspace*{\stretch{1}}
\noindent\hspace*{\centeroffset}\makebox[0pt][l]{\begin{minipage}{\textwidth}
\flushright
{\Huge\bfseries PSBLAS-2.2 User's guide
{\Huge\bfseries PSBLAS 2.3 User's guide
}
\noindent\rule[-1ex]{\textwidth}{5pt}\\[2.5ex]
\hfill\emph{\Large A reference guide for the Parallel Sparse BLAS library}

@ -509,7 +509,8 @@ Specified as: an integer array of size $nz$.
Scope:{\bf local}.\\
Type:{\bf required}.\\
Intent: {\bf in}.\\
Specified as: an array of size $nz$.
Specified as: an array of size $nz$. Must be of the same type and kind
of the \verb|aspk| component of the sparse matrix $a$.
\item[desc\_a] The communication descriptor.\\
Scope: {\bf local}. \\
Type: {\bf required}.\\
@ -1544,7 +1545,7 @@ position as the corresponding entries in $x$.
output difference is the handling of ties (i.e. items with an
equal value) in the original input. With the merge-sort algorithm
ties are preserved in the same order as they had in the original
sequence, while this is not guaranteed for quicksort;
sequence, while this is not guaranteed for quicksort or heapsort;
\item If $flag = psb\_sort\_ovw\_idx\_$ then the entries in $ix(1:n)$
where $n$ is the size of $x$ are initialized to $ix(i) \leftarrow
i$; thus, upon return from the subroutine, for each

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save