mirror of
https://github.com/sfilippone/psblas3.git
synced 2026-10-06 22:55:08 +00:00
psblas3:
LICENSE README docs/psblas-3.1.pdf docs/psblas-3.2.pdf docs/src/Makefile docs/src/commrout.tex docs/src/datastruct.tex docs/src/error.tex docs/src/methods.tex docs/src/penv.tex docs/src/precs.tex docs/src/psbrout.tex docs/src/toolsrout.tex docs/src/userguide.tex docs/src/userhtml.tex docs/src/util.tex Changed docs. Will have to document better the sparse matrix class.
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
Parallel Sparse BLAS version 3.1
|
||||
(C) Copyright 2006, 2007, 2008, 2009, 2010, 2012, 2013
|
||||
Parallel Sparse BLAS version 3.2
|
||||
(C) Copyright 2006, 2007, 2008, 2009, 2010, 2012, 2013, 2014
|
||||
|
||||
Salvatore Filippone University of Rome Tor Vergata
|
||||
Alfredo Buttari CNRS-IRIT, Toulouse
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
This directory contains the PSBLAS library, version 3.1.
|
||||
This directory contains the PSBLAS library, version 3.2.
|
||||
|
||||
|
||||
This version requires a working Fortran 2003 compiler; we do not use
|
||||
@@ -36,7 +36,7 @@ Harwell-Boeing and MatrixMarket file formats.
|
||||
|
||||
DOCUMENTATION
|
||||
|
||||
See docs/psblas-3.1.pdf; an HTML version of the same document is
|
||||
See docs/psblas-3.2.pdf; an HTML version of the same document is
|
||||
available in docs/html.
|
||||
Please consult the sample programs, especially
|
||||
test/pargen/ppde[23]d.f90
|
||||
@@ -122,7 +122,7 @@ COMPILER NOTES.
|
||||
This code is confirmed to work with the following compilers (or
|
||||
later versions thereof):
|
||||
NAGware 5.2;
|
||||
GNU 4.6.1;
|
||||
GNU 4.7.3;
|
||||
Cray CCE 8.0.1;
|
||||
|
||||
They are all recognized by the configure script.
|
||||
@@ -137,8 +137,8 @@ Compiler Error) at build time. We do not yet know whether XLF 14
|
||||
compiles correctly.
|
||||
|
||||
For the GNU compilers 4.6.x we are aware of a number of memory management
|
||||
issues that might surface in your applications; all of them (that
|
||||
we're aware of) are solved in version 4.7.2.
|
||||
issues that might surface in your applications; most of them (that
|
||||
we're aware of) are solved in version 4.7.2 or later.
|
||||
|
||||
The Intel compiler up to version 12.1 fails to compile, as of the last
|
||||
version we got access to.
|
||||
@@ -172,7 +172,7 @@ interested in the package MLD2P4 from http://www.mld2p4.it
|
||||
|
||||
Contact: Salvatore Filippone salvatore.filippone@uniroma2.it
|
||||
|
||||
Credits for version 3.0:
|
||||
Credits for version 3:
|
||||
Salvatore Filippone
|
||||
Alfredo Buttari
|
||||
|
||||
|
||||
+13388
-9812
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -138,7 +138,7 @@ PDF = $(join $(BASEFILE),.pdf)
|
||||
PS = $(join $(BASEFILE),.ps)
|
||||
GXS = $(join $(BASEFILE),.gxs)
|
||||
GLX = $(join $(BASEFILE),.glx)
|
||||
TARGETPDF= ../psblas-3.1.pdf
|
||||
TARGETPDF= ../psblas-3.2.pdf
|
||||
BASEHTML = $(patsubst %.tex,%,$(HTMLFILE))
|
||||
HTML = $(join $(HTMLFILE),.html)
|
||||
HTMLDIR = ../html
|
||||
|
||||
+12
-16
@@ -8,8 +8,7 @@ The routines in this chapter implement various global communication operators
|
||||
on vectors associated with a discretization mesh. For auxiliary communication
|
||||
routines not tied to a discretization space see~\ref{sec:toolsrout}.
|
||||
|
||||
\clearpage\subsection*{psb\_halo --- Halo Data Communication}
|
||||
\addcontentsline{toc}{subsection}{psb\_halo}
|
||||
\clearpage\subroutine{psb\_halo}{Halo Data Communication}
|
||||
|
||||
These subroutines gathers the values of the halo
|
||||
elements, and (optionally) scale the result:
|
||||
@@ -37,10 +36,10 @@ Long Precision Complex & psb\_halo \\
|
||||
\caption{Data types\label{tab:f90halo}}
|
||||
\end{table}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_halo(x, desc_a, info)
|
||||
call psb_halo(x, desc_a, info, alpha, work, data)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Synchronous.
|
||||
@@ -167,8 +166,7 @@ following:
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
|
||||
\clearpage\subsection*{psb\_ovrl --- Overlap Update}
|
||||
\addcontentsline{toc}{subsection}{psb\_ovrl}
|
||||
\clearpage\subroutine{psb\_ovrl}{Overlap Update}
|
||||
|
||||
These subroutines applies an overlap operator to the input vector:
|
||||
|
||||
@@ -196,10 +194,10 @@ Long Precision Complex & psb\_ovrl \\
|
||||
\caption{Data types\label{tab:f90ovrl}}
|
||||
\end{table}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_ovrl(x, desc_a, info)
|
||||
call psb_ovrl(x, desc_a, info, update=update_type, work=work)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Synchronous.
|
||||
@@ -359,8 +357,7 @@ following (showing a transition among the two subdomains)
|
||||
%
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
\clearpage\subsection*{psb\_gather --- Gather Global Dense Matrix}
|
||||
\addcontentsline{toc}{subsection}{psb\_gather}
|
||||
\clearpage\subroutine{psb\_gather}{Gather Global Dense Matrix}
|
||||
|
||||
These subroutines collect the portions of global dense matrix
|
||||
distributed over all process into one single array stored on one
|
||||
@@ -392,10 +389,10 @@ Long Precision Complex & psb\_gather \\
|
||||
\caption{Data types\label{tab:gather}}
|
||||
\end{table}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_gather(glob_x, loc_x, desc_a, info, root)
|
||||
call psb_gather(glob_x, loc_x, desc_a, info, root)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Synchronous.
|
||||
@@ -461,8 +458,7 @@ An integer value; 0 means no error has been detected.
|
||||
%
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
\clearpage\subsection*{psb\_scatter --- Scatter Global Dense Matrix}
|
||||
\addcontentsline{toc}{subsection}{psb\_scatter}
|
||||
\clearpage\subroutine{psb\_scatter}{Scatter Global Dense Matrix}
|
||||
|
||||
These subroutines scatters the portions of global dense matrix owned
|
||||
by a process to all the processes in the processes grid.
|
||||
@@ -493,10 +489,10 @@ Long Precision Complex & psb\_scatter \\
|
||||
\caption{Data types\label{tab:scatter}}
|
||||
\end{table}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_scatter(glob_x, loc_x, desc_a, info, root)
|
||||
call psb_scatter(glob_x, loc_x, desc_a, info, root)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Synchronous.
|
||||
|
||||
+78
-87
@@ -143,7 +143,7 @@ as follows:
|
||||
% \begin{Sbox}
|
||||
\begin{center}
|
||||
\begin{minipage}[tl]{0.9\textwidth}
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
type psb_desc_type
|
||||
class(psb_indx_map), allocatable :: indxmap
|
||||
integer, allocatable :: halo_index(:)
|
||||
@@ -153,7 +153,7 @@ type psb_desc_type
|
||||
integer, allocatable :: ovr_mst_idx(:)
|
||||
integer, allocatable :: bnd_elem(:)
|
||||
end type psb_desc_type
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
\end{minipage}
|
||||
\end{center}
|
||||
% \end{Sbox}
|
||||
@@ -176,13 +176,13 @@ state, which can take the following values:
|
||||
only possible in this state.
|
||||
\end{description}
|
||||
|
||||
\subsubsection{Methods}
|
||||
\subsubsection*{get\_local\_rows --- Get number of local rows}
|
||||
\addcontentsline{toc}{subsubsection}{get\_local\_rows }
|
||||
\subsubsection{Descriptor Methods}
|
||||
|
||||
\begin{verbatim}
|
||||
\subsubsubroutine{get\_local\_rows}{Get number of local rows}
|
||||
|
||||
\begin{lstlisting}
|
||||
nr = desc%get_local_rows()
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Asynchronous.
|
||||
@@ -203,12 +203,11 @@ Scope: {\bf local}.\\
|
||||
\end{description}
|
||||
|
||||
|
||||
\subsubsection*{get\_local\_cols --- Get number of local cols}
|
||||
\addcontentsline{toc}{subsubsection}{get\_local\_cols }
|
||||
\subsubsubroutine{get\_local\_cols}{Get number of local cols}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
nc = desc%get_local_cols()
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[\bf On Entry]
|
||||
@@ -230,12 +229,11 @@ Scope: {\bf local}.\\
|
||||
\end{description}
|
||||
|
||||
|
||||
\subsubsection*{get\_global\_rows --- Get number of global rows}
|
||||
\addcontentsline{toc}{subsubsection}{get\_global\_rows }
|
||||
\subsubsubroutine{get\_global\_rows}{Get number of global rows}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
nr = desc%get_global_rows()
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[\bf On Entry]
|
||||
@@ -253,12 +251,11 @@ Scope: {\bf local}.\\
|
||||
global index space.
|
||||
\end{description}
|
||||
|
||||
\subsubsection*{get\_global\_cols --- Get number of global cols}
|
||||
\addcontentsline{toc}{subsubsection}{get\_global\_cols }
|
||||
\subsubsubroutine{get\_global\_cols}{Get number of global cols}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
nr = desc%get_global_cols()
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Asynchronous.
|
||||
@@ -277,10 +274,11 @@ Scope: {\bf local}.\\
|
||||
\end{description}
|
||||
|
||||
|
||||
\subsubroutine{get\_context}{Get communication context}
|
||||
\begin{verbatim}
|
||||
\subsubsubroutine{get\_context}{Get communication context}
|
||||
|
||||
\begin{lstlisting}
|
||||
ictxt = desc%get_context()
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Asynchronous.
|
||||
@@ -297,10 +295,11 @@ Scope: {\bf local}.\\
|
||||
\item[Function value] The communication context.
|
||||
\end{description}
|
||||
|
||||
\subsubroutine{clone}{Clone current object}
|
||||
\begin{verbatim}
|
||||
\subsubsubroutine{Clone}{clone current object}
|
||||
|
||||
\begin{lstlisting}
|
||||
call desc%clone(descout,info)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Asynchronous.
|
||||
@@ -319,12 +318,12 @@ Scope: {\bf local}.\\
|
||||
\end{description}
|
||||
|
||||
|
||||
\subsubsection*{psb\_cd\_get\_large\_threshold --- Get threshold for
|
||||
\subsubsubroutine{psb\_cd\_get\_large\_threshold}{Get threshold for
|
||||
index mapping switch}
|
||||
\addcontentsline{toc}{subsubsection}{psb\_cd\_get\_large\_threshold}
|
||||
\begin{verbatim}
|
||||
|
||||
\begin{lstlisting}
|
||||
ith = psb_cd_get_large_threshold()
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Asynchronous.
|
||||
@@ -335,12 +334,12 @@ ith = psb_cd_get_large_threshold()
|
||||
|
||||
|
||||
|
||||
\subsubsection*{psb\_cd\_set\_large\_threshold --- Set threshold for
|
||||
\subsubsubroutine{psb\_cd\_set\_large\_threshold}{Set threshold for
|
||||
index mapping switch}
|
||||
\addcontentsline{toc}{subsubsection}{psb\_cd\_set\_large\_threshold}
|
||||
\begin{verbatim}
|
||||
|
||||
\begin{lstlisting}
|
||||
call psb_cd_set_large_threshold(ith)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Synchronous.
|
||||
@@ -415,7 +414,7 @@ library at runtime via the \verb|psb_spasb| routine.
|
||||
% \begin{Sbox}
|
||||
\begin{center}
|
||||
\begin{minipage}[tl]{0.85\textwidth}
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
|
||||
type :: psb_Tspmat_type
|
||||
|
||||
@@ -423,7 +422,7 @@ library at runtime via the \verb|psb_spasb| routine.
|
||||
|
||||
end type psb_Tspmat_type
|
||||
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
\end{minipage}
|
||||
\end{center}
|
||||
% \end{Sbox}
|
||||
@@ -458,13 +457,13 @@ following values:
|
||||
The only storage variant supporting the build state is COO; all other
|
||||
variants are obtained by conversion to/from it.
|
||||
|
||||
\subsubsection{Methods}
|
||||
\subsubsection*{get\_nrows --- Get number of rows in a sparse matrix}
|
||||
\addcontentsline{toc}{subsubsection}{get\_nrows}
|
||||
\subsubsection{Sparse Matrix Methods}
|
||||
|
||||
\begin{verbatim}
|
||||
\subsubsubroutine{get\_nrows}{Get number of rows in a sparse matrix}
|
||||
|
||||
\begin{lstlisting}
|
||||
nr = a%get_nrows()
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Asynchronous.
|
||||
@@ -482,12 +481,11 @@ Scope: {\bf local}\\
|
||||
\end{description}
|
||||
|
||||
|
||||
\subsubsection*{get\_ncols --- Get number of columns in a sparse matrix}
|
||||
\addcontentsline{toc}{subsubsection}{get\_ncols}
|
||||
\subsubsubroutine{get\_ncols}{Get number of columns in a sparse matrix}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
nc = a%get_ncols()
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Asynchronous.
|
||||
@@ -505,13 +503,12 @@ Scope: {\bf local}\\
|
||||
\end{description}
|
||||
|
||||
|
||||
\subsubsection*{get\_nnzeros --- Get number of nonzero elements
|
||||
\subsubsubroutine{get\_nnzeros}{Get number of nonzero elements
|
||||
in a sparse matrix}
|
||||
\addcontentsline{toc}{subsubsection}{get\_nnzeros}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
nz = a%get_nnzeros()
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Asynchronous.
|
||||
@@ -535,13 +532,12 @@ Scope: {\bf local}\\
|
||||
value for the same matrix may be different for different storage choices.
|
||||
\end{enumerate}
|
||||
|
||||
\subsubsection*{get\_size --- Get maximum number of nonzero elements
|
||||
\subsubsubroutine{get\_size }{Get maximum number of nonzero elements
|
||||
in a sparse matrix}
|
||||
\addcontentsline{toc}{subsubsection}{get\_size}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
maxnz = a%get_size()
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Asynchronous.
|
||||
@@ -559,13 +555,12 @@ Scope: {\bf local}\\
|
||||
be stored in sparse matrix \verb|a| using its current memory allocation.
|
||||
\end{description}
|
||||
|
||||
\subsubsection*{sizeof --- Get memory occupation in bytes
|
||||
\subsubsubroutine{sizeof }{Get memory occupation in bytes
|
||||
of a sparse matrix}
|
||||
\addcontentsline{toc}{subsubsection}{sizeof}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
memory_size = a%sizeof()
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Asynchronous.
|
||||
@@ -583,12 +578,11 @@ Scope: {\bf local}\\
|
||||
\end{description}
|
||||
|
||||
|
||||
\subsubsection*{get\_fmt --- Short description of the dynamic type}
|
||||
\addcontentsline{toc}{subsubsection}{get\_fmt}
|
||||
\subsubsubroutine{get\_fmt }{Short description of the dynamic type}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
write(*,*) a%get_fmt()
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Asynchronous.
|
||||
@@ -607,14 +601,13 @@ Scope: {\bf local}\\
|
||||
\verb|CSR| and \verb|CSC|.
|
||||
\end{description}
|
||||
|
||||
\subsubsection*{is\_bld, is\_upd, is\_asb --- Status check}
|
||||
\addcontentsline{toc}{subsubsection}{is\_bld, is\_upd, is\_asb}
|
||||
\subsubsubroutine{is\_bld, is\_upd, is\_asb }{Status check}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
if (a%is_bld()) then
|
||||
if (a%is_upd()) then
|
||||
if (a%is_asb()) then
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Asynchronous.
|
||||
@@ -633,10 +626,11 @@ Scope: {\bf local}\\
|
||||
\end{description}
|
||||
|
||||
|
||||
\subsubroutine{clone}{Clone current object}
|
||||
\begin{verbatim}
|
||||
\subsubsubroutine{clone}{Clone current object}
|
||||
|
||||
\begin{lstlisting}
|
||||
call a%clone(b,info)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Asynchronous.
|
||||
@@ -705,7 +699,7 @@ private memory.
|
||||
% \begin{Sbox}
|
||||
\begin{center}
|
||||
\begin{minipage}[tl]{0.85\textwidth}
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
type psb_T_base_vect_type
|
||||
TYPE(KIND_), allocatable :: v(:)
|
||||
end type psb_T_base_vect_type
|
||||
@@ -714,7 +708,7 @@ private memory.
|
||||
class(psb_T_base_vect_type), allocatable :: v
|
||||
end type psb_T_vect_type
|
||||
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
\end{minipage}
|
||||
\end{center}
|
||||
% \end{Sbox}
|
||||
@@ -727,13 +721,12 @@ private memory.
|
||||
contains a dense vector.}
|
||||
\end{figure}
|
||||
|
||||
\subsubsection{Methods}
|
||||
\subsubsection*{get\_nrows --- Get number of rows in a dense vector}
|
||||
\addcontentsline{toc}{subsubsection}{v\_get\_nrows}
|
||||
\subsubsection{Vector Methods}
|
||||
\subsubsubroutine{get\_nrows}{Get number of rows in a dense vector}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
nr = v%get_nrows()
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Asynchronous.
|
||||
@@ -751,13 +744,12 @@ Scope: {\bf local}\\
|
||||
\end{description}
|
||||
|
||||
|
||||
\subsubsection*{sizeof --- Get memory occupation in bytes
|
||||
\subsubsubroutine{sizeof }{Get memory occupation in bytes
|
||||
of a dense vector}
|
||||
\addcontentsline{toc}{subsubsection}{v\_sizeof}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
memory_size = v%sizeof()
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Asynchronous.
|
||||
@@ -775,12 +767,11 @@ Scope: {\bf local}\\
|
||||
\end{description}
|
||||
|
||||
|
||||
\subsubsection*{get\_vect --- Get a copy of the vector contents}
|
||||
\addcontentsline{toc}{subsubsection}{v\_get\_vect}
|
||||
\subsubsubroutine{get\_vect }{Get a copy of the vector contents}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
extv = v%get_vect()
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Asynchronous.
|
||||
@@ -798,10 +789,10 @@ Scope: {\bf local}\\
|
||||
vector contents.
|
||||
\end{description}
|
||||
|
||||
\subsubroutine{clone}{Clone current object}
|
||||
\begin{verbatim}
|
||||
\subsubsubroutine{clone}{Clone current object}
|
||||
\begin{lstlisting}
|
||||
call x%clone(y,info)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Asynchronous.
|
||||
@@ -849,13 +840,13 @@ dynamic type corresponding to the desired preconditioner.
|
||||
% \begin{Sbox}
|
||||
\begin{center}
|
||||
\begin{minipage}[tl]{0.9\textwidth}
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
|
||||
type psb_Tprec_type
|
||||
class(psb_T_base_prec_type), allocatable :: prec
|
||||
end type psb_Tprec_type
|
||||
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
\end{minipage}
|
||||
\end{center}
|
||||
% \end{Sbox}
|
||||
|
||||
+18
-23
@@ -41,7 +41,7 @@ explicitly.
|
||||
\begin{Sbox}
|
||||
\begin{minipage}[tl]{0.95\textwidth}
|
||||
\small
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
subroutine psb_foo(some args, info)
|
||||
...
|
||||
if(error detected) then
|
||||
@@ -66,7 +66,7 @@ subroutine psb_foo(some args, info)
|
||||
end if
|
||||
|
||||
end subroutine psb_foo
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
\end{minipage}
|
||||
\end{Sbox}
|
||||
\setlength{\fboxsep}{8pt}
|
||||
@@ -119,13 +119,12 @@ Aborting...
|
||||
\end{figure}
|
||||
|
||||
|
||||
\clearpage\subsection*{psb\_errpush --- Pushes an error code onto the error
|
||||
\clearpage\subroutine{psb\_errpush}{Pushes an error code onto the error
|
||||
stack}
|
||||
\addcontentsline{toc}{subsection}{psb\_errpush}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_errpush(err_c, r_name, i_err, a_err)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Asynchronous.
|
||||
@@ -150,13 +149,12 @@ Type: {\bf optional}\\
|
||||
Specified as: a string.\\
|
||||
\end{description}
|
||||
|
||||
\clearpage\subsection*{psb\_error --- Prints the error stack content and aborts
|
||||
\clearpage\subroutine{psb\_error}{Prints the error stack content and aborts
|
||||
execution}
|
||||
\addcontentsline{toc}{subsection}{psb\_error}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_error(icontxt)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Asynchronous.
|
||||
@@ -170,13 +168,12 @@ Specified as: an integer.
|
||||
|
||||
|
||||
|
||||
\clearpage\subsection*{psb\_set\_errverbosity --- Sets the verbosity of error
|
||||
\clearpage\subroutine{psb\_set\_errverbosity}{Sets the verbosity of error
|
||||
messages.}
|
||||
\addcontentsline{toc}{subsection}{psb\_set\_errverbosity}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_set_errverbosity(v)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Asynchronous.
|
||||
@@ -188,14 +185,13 @@ Intent: {\bf in}.\\
|
||||
Specified as: an integer.
|
||||
\end{description}
|
||||
|
||||
\clearpage\subsection*{psb\_set\_erraction --- Set the type of action to be
|
||||
\clearpage\subroutine{psb\_set\_erraction}{Set the type of action to be
|
||||
taken upon error condition.}
|
||||
\addcontentsline{toc}{subsection}{psb\_set\_erraction}
|
||||
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_set_erraction(err_act)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Asynchronous.
|
||||
@@ -210,12 +206,11 @@ Specified as: an integer. Possible values: \verb|psb_act_ret|,
|
||||
|
||||
|
||||
|
||||
%% \clearpage\subsection*{psb\_errcomm --- Error communication routine}
|
||||
%\addcontentsline{toc}{subsection}{psb\_errcomm}
|
||||
%% \clearpage\subroutine{psb\_errcomm}{Error communication routine}
|
||||
|
||||
\begin{verbatim}
|
||||
call psb_errcomm(icontxt, err)
|
||||
\end{verbatim}
|
||||
%% \begin{lstlisting}
|
||||
%% call psb_errcomm(icontxt, err)
|
||||
%% \end{lstlisting}
|
||||
|
||||
%% \begin{description}
|
||||
%% \item[\bf On Entry]
|
||||
|
||||
@@ -11,9 +11,8 @@ the module \verb|psb_krylov_mod|.
|
||||
%
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
\clearpage\subsection*{psb\_krylov \label{krylov} --- Krylov Methods Driver
|
||||
\clearpage\subroutine{psb\_krylov \label{krylov}}{Krylov Methods Driver
|
||||
Routine}
|
||||
\addcontentsline{toc}{subsection}{krylov}
|
||||
|
||||
This subroutine is a driver that provides a general interface for all
|
||||
the Krylov-Subspace family methods implemented in PSBLAS version 2.
|
||||
@@ -28,10 +27,10 @@ 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.
|
||||
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_krylov(method,a,prec,b,x,eps,desc_a,info,&
|
||||
& itmax,iter,err,itrace,irst,istop,cond)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Synchronous.
|
||||
|
||||
+48
-64
@@ -2,12 +2,11 @@
|
||||
\section{Parallel environment routines}
|
||||
\label{sec:parenv}
|
||||
|
||||
\clearpage\subsection*{psb\_init --- Initializes PSBLAS parallel environment}
|
||||
\addcontentsline{toc}{subsection}{psb\_init}
|
||||
\clearpage\subroutine{psb\_init}{Initializes PSBLAS parallel environment}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_init(icontxt, np, basectxt, ids)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
This subroutine initializes the PSBLAS parallel environment, defining
|
||||
a virtual parallel machine.
|
||||
@@ -60,13 +59,12 @@ Specified as: an integer variable.
|
||||
\end{enumerate}
|
||||
|
||||
|
||||
\clearpage\subsection*{psb\_info --- Return information about PSBLAS parallel
|
||||
\clearpage\subroutine{psb\_info}{Return information about PSBLAS parallel
|
||||
environment}
|
||||
\addcontentsline{toc}{subsection}{psb\_info}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_info(icontxt, iam, np)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
This subroutine returns information about the PSBLAS parallel environment, defining
|
||||
a virtual parallel machine.
|
||||
@@ -108,13 +106,12 @@ Specified as: an integer variable. \
|
||||
\end{enumerate}
|
||||
|
||||
|
||||
\clearpage\subsection*{psb\_exit --- Exit from PSBLAS parallel environment}
|
||||
\addcontentsline{toc}{subsection}{psb\_exit}
|
||||
\clearpage\subroutine{psb\_exit}{Exit from PSBLAS parallel environment}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_exit(icontxt)
|
||||
call psb_exit(icontxt,close)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
This subroutine exits from the PSBLAS parallel virtual machine.
|
||||
\begin{description}
|
||||
@@ -151,12 +148,11 @@ Specified as: a logical variable, default value: true.
|
||||
\end{enumerate}
|
||||
|
||||
|
||||
\clearpage\subsection*{psb\_get\_mpicomm --- Get the MPI communicator}
|
||||
\addcontentsline{toc}{subsection}{psb\_get\_mpicomm}
|
||||
\clearpage\subroutine{psb\_get\_mpicomm}{Get the MPI communicator}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_get_mpicomm(icontxt, icomm)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
This subroutine returns the MPI communicator associated with a PSBLAS context
|
||||
\begin{description}
|
||||
@@ -179,12 +175,11 @@ Intent: {\bf out}.\\
|
||||
\end{description}
|
||||
|
||||
|
||||
\clearpage\subsection*{psb\_get\_rank --- Get the MPI rank}
|
||||
\addcontentsline{toc}{subsection}{psb\_get\_rank}
|
||||
\clearpage\subroutine{psb\_get\_rank}{Get the MPI rank}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_get_rank(rank, icontxt, id)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
This subroutine returns the MPI rank of the PSBLAS process $id$
|
||||
\begin{description}
|
||||
@@ -214,12 +209,11 @@ Intent: {\bf out}.\\
|
||||
|
||||
|
||||
|
||||
\clearpage\subsection*{psb\_wtime --- Wall clock timing}
|
||||
\addcontentsline{toc}{subsection}{psb\_wtime}
|
||||
\clearpage\subroutine{psb\_wtime}{Wall clock timing}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
time = psb_wtime()
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
This function returns a wall clock timer. The resolution of the timer
|
||||
is dependent on the underlying parallel environment implementation.
|
||||
@@ -231,13 +225,12 @@ Returned as: a \verb|real(psb_dpk_)| variable.
|
||||
\end{description}
|
||||
|
||||
|
||||
\clearpage\subsection*{psb\_barrier --- Sinchronization point parallel
|
||||
\clearpage\subroutine{psb\_barrier}{Sinchronization point parallel
|
||||
environment}
|
||||
\addcontentsline{toc}{subsection}{psb\_barrier}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_barrier(icontxt)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
This subroutine acts as an explicit synchronization point for the PSBLAS
|
||||
parallel virtual machine.
|
||||
@@ -253,12 +246,11 @@ Specified as: an integer variable.
|
||||
\end{description}
|
||||
|
||||
|
||||
\clearpage\subsection*{psb\_abort --- Abort a computation}
|
||||
\addcontentsline{toc}{subsection}{psb\_abort}
|
||||
\clearpage\subroutine{psb\_abort}{Abort a computation}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_abort(icontxt)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
This subroutine aborts computation on the parallel virtual machine.
|
||||
\begin{description}
|
||||
@@ -276,12 +268,11 @@ Specified as: an integer variable.
|
||||
|
||||
|
||||
|
||||
\clearpage\subsection*{psb\_bcast --- Broadcast data}
|
||||
\addcontentsline{toc}{subsection}{psb\_bcast}
|
||||
\clearpage\subroutine{psb\_bcast}{Broadcast data}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_bcast(icontxt, dat, root)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
This subroutine implements a broadcast operation based on the
|
||||
underlying communication library.
|
||||
@@ -322,12 +313,11 @@ Type, kind, rank and size must agree on all processes.
|
||||
\end{description}
|
||||
|
||||
|
||||
\clearpage\subsection*{psb\_sum --- Global sum}
|
||||
\addcontentsline{toc}{subsection}{psb\_sum}
|
||||
\clearpage\subroutine{psb\_sum}{Global sum}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_sum(icontxt, dat, root)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
This subroutine implements a sum reduction operation based on the
|
||||
underlying communication library.
|
||||
@@ -377,12 +367,11 @@ Type, kind, rank and size must agree on all processes.
|
||||
|
||||
|
||||
|
||||
\clearpage\subsection*{psb\_max --- Global maximum}
|
||||
\addcontentsline{toc}{subsection}{psb\_max}
|
||||
\clearpage\subroutine{psb\_max}{Global maximum}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_max(icontxt, dat, root)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
This subroutine implements a maximum valuereduction
|
||||
operation based on the underlying communication library.
|
||||
@@ -431,12 +420,11 @@ Type, kind, rank and size must agree on all processes.
|
||||
\item The \verb|dat| argument may also be a long integer scalar.
|
||||
\end{enumerate}
|
||||
|
||||
\clearpage\subsection*{psb\_min --- Global minimum}
|
||||
\addcontentsline{toc}{subsection}{psb\_min}
|
||||
\clearpage\subroutine{psb\_min}{Global minimum}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_min(icontxt, dat, root)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
This subroutine implements a minimum value reduction
|
||||
operation based on the underlying communication library.
|
||||
@@ -485,12 +473,11 @@ Type, kind, rank and size must agree on all processes.
|
||||
\item The \verb|dat| argument may also be a long integer scalar.
|
||||
\end{enumerate}
|
||||
|
||||
\clearpage\subsection*{psb\_amx --- Global maximum absolute value}
|
||||
\addcontentsline{toc}{subsection}{psb\_amx}
|
||||
\clearpage\subroutine{psb\_amx}{Global maximum absolute value}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_amx(icontxt, dat, root)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
This subroutine implements a maximum absolute value reduction
|
||||
operation based on the underlying communication library.
|
||||
@@ -539,12 +526,11 @@ Type, kind, rank and size must agree on all processes.
|
||||
\item The \verb|dat| argument may also be a long integer scalar.
|
||||
\end{enumerate}
|
||||
|
||||
\clearpage\subsection*{psb\_amn --- Global minimum absolute value}
|
||||
\addcontentsline{toc}{subsection}{psb\_amn}
|
||||
\clearpage\subroutine{psb\_amn}{Global minimum absolute value}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_amn(icontxt, dat, root)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
This subroutine implements a minimum absolute value reduction
|
||||
operation based on the underlying communication library.
|
||||
@@ -594,12 +580,11 @@ Type, kind, rank and size must agree on all processes.
|
||||
\end{enumerate}
|
||||
|
||||
|
||||
\clearpage\subsection*{psb\_snd --- Send data}
|
||||
\addcontentsline{toc}{subsection}{psb\_snd}
|
||||
\clearpage\subroutine{psb\_snd}{Send data}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_snd(icontxt, dat, dst, m)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
This subroutine sends a packet of data to a destination.
|
||||
\begin{description}
|
||||
@@ -646,12 +631,11 @@ same value on sending and receiving processes.
|
||||
\end{enumerate}
|
||||
|
||||
|
||||
\clearpage\subsection*{psb\_rcv --- Receive data}
|
||||
\addcontentsline{toc}{subsection}{psb\_rcv}
|
||||
\clearpage\subroutine{psb\_rcv}{Receive data}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_rcv(icontxt, dat, src, m)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
This subroutine receives a packet of data to a destination.
|
||||
\begin{description}
|
||||
|
||||
+15
-20
@@ -23,12 +23,11 @@ module \verb|psb_prec_mod|.
|
||||
|
||||
|
||||
|
||||
\clearpage\subsection*{psb\_precinit --- Initialize a preconditioner}
|
||||
\addcontentsline{toc}{subsection}{psb\_precinit}
|
||||
\clearpage\subroutine{psb\_precinit}{Initialize a preconditioner}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_precinit(prec, ptype, info)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Asynchronous.
|
||||
@@ -80,12 +79,11 @@ $ptype$ string as follows\footnote{The string is case-insensitive}:
|
||||
\end{description}
|
||||
|
||||
|
||||
\clearpage\subsection*{psb\_precbld --- Builds a preconditioner}
|
||||
\addcontentsline{toc}{subsection}{psb\_precbld}
|
||||
\clearpage\subroutine{psb\_precbld}{Builds a preconditioner}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_precbld(a, desc_a, prec, info,amold,vmold)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Synchronous.
|
||||
@@ -139,13 +137,12 @@ An integer value; 0 means no error has been detected.
|
||||
|
||||
|
||||
|
||||
\clearpage\subsection*{psb\_precaply --- Preconditioner application routine}
|
||||
\addcontentsline{toc}{subsection}{psb\_precaply}
|
||||
\clearpage\subroutine{psb\_precaply}{Preconditioner application routine}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_precaply(prec,x,y,desc_a,info,trans,work)
|
||||
call psb_precaply(prec,x,desc_a,info,trans)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Synchronous.
|
||||
@@ -193,14 +190,13 @@ An integer value; 0 means no error has been detected.
|
||||
|
||||
|
||||
|
||||
\clearpage\subsection*{psb\_precdescr --- Prints a description of current
|
||||
\clearpage\subroutine{psb\_precdescr}{Prints a description of current
|
||||
preconditioner}
|
||||
\addcontentsline{toc}{subsection}{psb\_precdescr}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_precdescr(prec)
|
||||
call psb_precdescr(prec, iout)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Asynchronous.
|
||||
@@ -219,12 +215,11 @@ Specified as: an integer number.
|
||||
|
||||
|
||||
|
||||
\clearpage\subsection*{clone --- clone current
|
||||
\clearpage\subroutine{clone}{clone current
|
||||
preconditioner}
|
||||
\addcontentsline{toc}{subsection}{clone}
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call prec%clone(precout,info)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Asynchronous.
|
||||
|
||||
+39
-52
@@ -5,8 +5,7 @@
|
||||
% DENSE MATRIX SUM
|
||||
%
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\clearpage\subsection*{psb\_geaxpby --- General Dense Matrix Sum}
|
||||
\addcontentsline{toc}{subsection}{psb\_geaxpby}
|
||||
\clearpage\subroutine{psb\_geaxpby}{General Dense Matrix Sum}
|
||||
|
||||
This subroutine is an interface to the computational kernel for
|
||||
dense matrix sum:
|
||||
@@ -17,9 +16,9 @@ dense matrix sum:
|
||||
%% \item[$y$] represents the global dense submatrix $y_{:, :}$
|
||||
%% \end{description}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_geaxpby(alpha, x, beta, y, desc_a, info)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
%% \syntax*{call psb\_geaxpby}{alpha, x, beta, y, desc\_a, info, n, jx, jy}
|
||||
|
||||
%( calculating y <- alpha*x+beta*y )
|
||||
@@ -114,8 +113,7 @@ An integer value; 0 means no error has been detected.
|
||||
%
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
\clearpage\subsection*{psb\_gedot --- Dot Product}
|
||||
\addcontentsline{toc}{subsection}{psb\_gedot}
|
||||
\clearpage\subroutine{psb\_gedot}{Dot Product}
|
||||
|
||||
This function computes dot product between two vectors $x$ and
|
||||
$y$.\\
|
||||
@@ -130,9 +128,9 @@ Else if $x$ and $y$ are complex vectors then it computes dot-product as:
|
||||
%% \item[$y$] represents the global subvector $y_{:,jy}$
|
||||
%% \end{description}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
psb_gedot(x, y, desc_a, info)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
%% \syntax*{psb\_gedot}{x, y, desc\_a, info, jx, jy}
|
||||
\begin{table}[h]
|
||||
\begin{center}
|
||||
@@ -206,8 +204,7 @@ An integer value; 0 means no error has been detected.
|
||||
%
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
\clearpage\subsection*{psb\_gedots --- Generalized Dot Product}
|
||||
\addcontentsline{toc}{subsection}{psb\_gedots}
|
||||
\clearpage\subroutine{psb\_gedots}{Generalized Dot Product}
|
||||
|
||||
This subroutine computes a series of dot products among the columns of
|
||||
two dense matrices $x$ and $y$:
|
||||
@@ -217,9 +214,9 @@ usual convention applies, i.e. the conjugate transpose of $x$ is
|
||||
used. If $x$ and $y$ are of rank one, then $res$ is a scalar, else it
|
||||
is a rank one array.
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_gedots(res, x, y, desc_a, info)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
\begin{table}[h]
|
||||
\begin{center}
|
||||
\begin{tabular}{ll}
|
||||
@@ -280,8 +277,7 @@ An integer value; 0 means no error has been detected.
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
|
||||
\clearpage\subsection*{psb\_geamax --- Infinity-Norm of Vector}
|
||||
\addcontentsline{toc}{subsection}{psb\_geamax}
|
||||
\clearpage\subroutine{psb\_geamax}{Infinity-Norm of Vector}
|
||||
|
||||
This function computes
|
||||
the infinity-norm of a vector $x$.\\
|
||||
@@ -295,9 +291,9 @@ else if $x$ is a complex vector then it computes the infinity-norm as:
|
||||
%% \item[$x$] represents the global subvector $x_{:,jx}$
|
||||
%% \end{description}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
psb_geamax(x, desc_a, info)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
%% \syntax*{psb\_geamax}{x, desc\_a, info, jx}
|
||||
|
||||
\begin{table}[h]
|
||||
@@ -358,16 +354,15 @@ An integer value; 0 means no error has been detected.
|
||||
%
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
\clearpage\subsection*{psb\_geamaxs --- Generalized Infinity Norm}
|
||||
\addcontentsline{toc}{subsection}{psb\_geamaxs}
|
||||
\clearpage\subroutine{psb\_geamaxs}{Generalized Infinity Norm}
|
||||
|
||||
This subroutine computes a series of infinity norms on the columns of
|
||||
a dense matrix $x$:
|
||||
\[ res(i) \leftarrow \max_k |x(k,i)| \]
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_geamaxs(res, x, desc_a, info)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{table}[h]
|
||||
\begin{center}
|
||||
@@ -420,8 +415,7 @@ An integer value; 0 means no error has been detected.
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
|
||||
\clearpage\subsection*{psb\_geasum --- 1-Norm of Vector}
|
||||
\addcontentsline{toc}{subsection}{psb\_geasum}
|
||||
\clearpage\subroutine{psb\_geasum}{1-Norm of Vector}
|
||||
|
||||
This function computes the 1-norm of a vector $x$.\\
|
||||
If $x$ is a real vector
|
||||
@@ -431,9 +425,9 @@ else if $x$ is a complex vector then it computes 1-norm as:
|
||||
\[ asum \leftarrow \|re(x)\|_1 + \|im(x)\|_1\]
|
||||
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
psb_geasum(x, desc_a, info)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{table}[h]
|
||||
\begin{center}
|
||||
@@ -482,8 +476,7 @@ An integer value; 0 means no error has been detected.
|
||||
\end{description}
|
||||
|
||||
|
||||
\clearpage\subsection*{psb\_geasums --- Generalized 1-Norm of Vector}
|
||||
\addcontentsline{toc}{subsection}{psb\_geasums}
|
||||
\clearpage\subroutine{psb\_geasums}{Generalized 1-Norm of Vector}
|
||||
|
||||
This subroutine computes a series of 1-norms on the columns of
|
||||
a dense matrix $x$:
|
||||
@@ -496,9 +489,9 @@ else if $x$ is a complex vector then it computes 1-norm as:
|
||||
\[ res(i) \leftarrow \|re(x)\|_1 + \|im(x)\|_1\]
|
||||
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_geasums(res, x, desc_a, info)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{table}[h]
|
||||
\begin{center}
|
||||
@@ -556,8 +549,7 @@ An integer value; 0 means no error has been detected.
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
|
||||
\clearpage\subsection*{psb\_genrm2 --- 2-Norm of Vector}
|
||||
\addcontentsline{toc}{subsection}{psb\_geasums}
|
||||
\clearpage\subroutine{psb\_genrm2}{2-Norm of Vector}
|
||||
|
||||
This function computes the 2-norm of a vector $x$.\\
|
||||
If $x$ is a real vector
|
||||
@@ -586,9 +578,9 @@ Long Precision Real&Long Precision Complex & psb\_genrm2 \\
|
||||
\caption{Data types\label{tab:f90nrm2}}
|
||||
\end{table}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
psb_genrm2(x, desc_a, info)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
%% \syntax*{psb\_genrm2}{x, desc\_a, info, jx}
|
||||
|
||||
\begin{description}
|
||||
@@ -630,17 +622,16 @@ An integer value; 0 means no error has been detected.
|
||||
|
||||
|
||||
|
||||
\clearpage\subsection*{psb\_genrm2s --- Generalized 2-Norm of Vector}
|
||||
\addcontentsline{toc}{subsection}{psb\_genrm2s}
|
||||
\clearpage\subroutine{psb\_genrm2s}{Generalized 2-Norm of Vector}
|
||||
|
||||
This subroutine computes a series of 2-norms on the columns of
|
||||
a dense matrix $x$:
|
||||
\[ res(i) \leftarrow \|x(:,i)\|_2 \]
|
||||
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_genrm2s(res, x, desc_a, info)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{table}[h]
|
||||
\begin{center}
|
||||
@@ -698,8 +689,7 @@ An integer value; 0 means no error has been detected.
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
|
||||
\clearpage\subsection*{psb\_spnrm1 --- 1-Norm of Sparse Matrix}
|
||||
\addcontentsline{toc}{subsection}{psb\_spnrm1}
|
||||
\clearpage\subroutine{psb\_spnrm1}{1-Norm of Sparse Matrix}
|
||||
|
||||
This function computes the 1-norm of a matrix $A$:\\
|
||||
|
||||
@@ -725,9 +715,9 @@ Long Precision Complex & psb\_spnrm1 \\
|
||||
\caption{Data types\label{tab:f90nrm1}}
|
||||
\end{table}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
psb_spnrm1(A, desc_a, info)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Synchronous.
|
||||
@@ -762,8 +752,7 @@ An integer value; 0 means no error has been detected.
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
|
||||
\clearpage\subsection*{psb\_spnrmi --- Infinity Norm of Sparse Matrix}
|
||||
\addcontentsline{toc}{subsection}{psb\_spnrmi}
|
||||
\clearpage\subroutine{psb\_spnrmi}{Infinity Norm of Sparse Matrix}
|
||||
|
||||
This function computes the infinity-norm of a matrix $A$:\\
|
||||
|
||||
@@ -789,9 +778,9 @@ Long Precision Complex & psb\_spnrmi \\
|
||||
\caption{Data types\label{tab:f90nrmi}}
|
||||
\end{table}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
psb_spnrmi(A, desc_a, info)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Synchronous.
|
||||
@@ -826,8 +815,7 @@ An integer value; 0 means no error has been detected.
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
|
||||
\clearpage\subsection*{psb\_spmm --- Sparse Matrix by Dense Matrix Product}
|
||||
\addcontentsline{toc}{subsection}{psb\_spmm}
|
||||
\clearpage\subroutine{psb\_spmm}{Sparse Matrix by Dense Matrix Product}
|
||||
|
||||
This subroutine computes the Sparse Matrix by Dense Matrix Product:
|
||||
|
||||
@@ -867,11 +855,11 @@ Long Precision Complex & psb\_spmm \\
|
||||
\caption{Data types\label{tab:f90spmm}}
|
||||
\end{table}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_spmm(alpha, a, x, beta, y, desc_a, info)
|
||||
call psb_spmm(alpha, a, x, beta, y,desc_a, info, &
|
||||
& trans, work)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Synchronous.
|
||||
@@ -978,8 +966,7 @@ An integer value; 0 means no error has been detected.
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
|
||||
\clearpage\subsection*{psb\_spsm --- Triangular System Solve}
|
||||
\addcontentsline{toc}{subsection}{psb\_spsm}
|
||||
\clearpage\subroutine{psb\_spsm}{Triangular System Solve}
|
||||
|
||||
This subroutine computes the Triangular System Solve:
|
||||
|
||||
@@ -1004,11 +991,11 @@ where:
|
||||
\item[$D$] is the scaling diagonal matrix.
|
||||
\end{description}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_spsm(alpha, t, x, beta, y, desc_a, info)
|
||||
call psb_spsm(alpha, t, x, beta, y, desc_a, info,&
|
||||
& trans, unit, choice, diag, work)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{table}[h]
|
||||
\begin{center}
|
||||
|
||||
+88
-120
@@ -5,16 +5,15 @@
|
||||
%
|
||||
%% psb_cdall %%
|
||||
%
|
||||
\subsection*{psb\_cdall --- Allocates a communication descriptor}
|
||||
\addcontentsline{toc}{subsection}{psb\_cdall}
|
||||
\subroutine{psb\_cdall}{Allocates a communication descriptor}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_cdall(icontxt, desc_a, info,mg=mg,parts=parts)
|
||||
call psb_cdall(icontxt, desc_a, info,vg=vg,[mg=mg,flag=flag])
|
||||
call psb_cdall(icontxt, desc_a, info,vl=vl,[nl=nl,globalcheck=.true.,lidx=lidx])
|
||||
call psb_cdall(icontxt, desc_a, info,nl=nl)
|
||||
call psb_cdall(icontxt, desc_a, info,mg=mg,repl=.true.)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
This subroutine initializes the communication descriptor associated
|
||||
with an index space. One of the optional arguments
|
||||
@@ -109,14 +108,14 @@ An integer value; 0 means no error has been detected.
|
||||
optional argument is specified, then it is mandatory to
|
||||
specify the argument \verb|mg| as well.
|
||||
The subroutine must conform to the following interface:
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
interface
|
||||
subroutine psb_parts(glob_index,mg,np,pv,nv)
|
||||
integer, intent (in) :: glob_index,np,mg
|
||||
integer, intent (out) :: nv, pv(*)
|
||||
end subroutine psb_parts
|
||||
end interface
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
The input arguments are:
|
||||
\begin{description}
|
||||
\item[glob\_index] The global index to be mapped;
|
||||
@@ -196,13 +195,12 @@ An integer value; 0 means no error has been detected.
|
||||
%
|
||||
%% psb_cdins %%
|
||||
%
|
||||
\clearpage\subsection*{psb\_cdins --- Communication descriptor insert routine}
|
||||
\addcontentsline{toc}{subsection}{psb\_cdins}
|
||||
\clearpage\subroutine{psb\_cdins}{Communication descriptor insert routine}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_cdins(nz, ia, ja, desc_a, info [,ila,jla])
|
||||
call psb_cdins(nz,ja,desc,info[,jla,mask,lidx])
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
This subroutine examines the edges of the graph associated with the
|
||||
discretization mesh (and isomorphic to the sparsity pattern of a
|
||||
@@ -291,12 +289,11 @@ nor the end vertex belong to the current process.
|
||||
%
|
||||
%% psb_cdasb %%
|
||||
%
|
||||
\clearpage\subsection*{psb\_cdasb --- Communication descriptor assembly routine}
|
||||
\addcontentsline{toc}{subsection}{psb\_cdasb}
|
||||
\clearpage\subroutine{psb\_cdasb}{Communication descriptor assembly routine}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_cdasb(desc_a, info)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Synchronous.
|
||||
@@ -333,12 +330,11 @@ An integer value; 0 means no error has been detected.
|
||||
%
|
||||
%% psb_cdcpy %%
|
||||
%
|
||||
\clearpage\subsection*{psb\_cdcpy --- Copies a communication descriptor}
|
||||
\addcontentsline{toc}{subsection}{psb\_cdcpy}
|
||||
\clearpage\subroutine{psb\_cdcpy}{Copies a communication descriptor}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_cdcpy(desc_in, desc_out, info)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Asynchronous.
|
||||
@@ -369,12 +365,11 @@ An integer value; 0 means no error has been detected.
|
||||
%
|
||||
%% psb_cdfree %%
|
||||
%
|
||||
\clearpage\subsection*{psb\_cdfree --- Frees a communication descriptor}
|
||||
\addcontentsline{toc}{subsection}{psb\_cdfree}
|
||||
\clearpage\subroutine{psb\_cdfree}{Frees a communication descriptor}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_cdfree(desc_a, info)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Synchronous.
|
||||
@@ -400,13 +395,12 @@ An integer value; 0 means no error has been detected.
|
||||
%
|
||||
%% psb_cdcpy %%
|
||||
%
|
||||
\clearpage\subsection*{psb\_cdbldext --- Build an extended communication
|
||||
\clearpage\subroutine{psb\_cdbldext}{Build an extended communication
|
||||
descriptor}
|
||||
\addcontentsline{toc}{subsection}{psb\_cdbldext}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_cdbldext(a,desc_a,nl,desc_out, info, extype)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
This subroutine builds an extended communication descriptor, based on
|
||||
the input descriptor \verb|desc_a| and on the stencil specified
|
||||
@@ -470,9 +464,8 @@ An integer value; 0 means no error has been detected.
|
||||
%% %
|
||||
%% %% psb_cdren %%
|
||||
%% %
|
||||
%% \subsection*{psb\_cdren --- Applies a renumeration to a
|
||||
%% \subroutine{psb\_cdren}{Applies a renumeration to a
|
||||
%% communication descriptor}
|
||||
%% \addcontentsline{toc}{subsection}{psb\_cdren}
|
||||
|
||||
%% \syntax{call psb\_cdren}{trans, iperm, desc\_a, info}
|
||||
|
||||
@@ -507,8 +500,7 @@ An integer value; 0 means no error has been detected.
|
||||
%
|
||||
%% psb_descprt %%
|
||||
%
|
||||
%% \subsection*{psb\_cdprt --- Prints a descriptor}
|
||||
%%\addcontentsline{toc}{subsection}{psb\_cdprt}
|
||||
%% \subroutine{psb\_cdprt}{Prints a descriptor}
|
||||
|
||||
%% \syntax{call psb\_cdprt}{iout, desc\_a, glob, short}
|
||||
|
||||
@@ -537,12 +529,11 @@ An integer value; 0 means no error has been detected.
|
||||
%
|
||||
%% psb_spalloc %%
|
||||
%
|
||||
\clearpage\subsection*{psb\_spall --- Allocates a sparse matrix}
|
||||
\addcontentsline{toc}{subsection}{psb\_spall}
|
||||
\clearpage\subroutine{psb\_spall}{Allocates a sparse matrix}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_spall(a, desc_a, info, nnz)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Synchronous.
|
||||
@@ -589,13 +580,12 @@ An integer value; 0 means no error has been detected.
|
||||
%
|
||||
%% psb_spins %%
|
||||
%
|
||||
\clearpage\subsection*{psb\_spins --- Insert a cloud of elements into a sparse
|
||||
\clearpage\subroutine{psb\_spins}{Insert a cloud of elements into a sparse
|
||||
matrix}
|
||||
\addcontentsline{toc}{subsection}{psb\_spins}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_spins(nz, ia, ja, val, a, desc_a, info [,local])
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Asynchronous.
|
||||
@@ -695,12 +685,11 @@ An integer value; 0 means no error has been detected.
|
||||
%
|
||||
%% psb_spasb %%
|
||||
%
|
||||
\clearpage\subsection*{psb\_spasb --- Sparse matrix assembly routine}
|
||||
\addcontentsline{toc}{subsection}{psb\_spasb}
|
||||
\clearpage\subroutine{psb\_spasb}{Sparse matrix assembly routine}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_spasb(a, desc_a, info, afmt, upd, dupl, mold)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Synchronous.
|
||||
@@ -770,9 +759,8 @@ An integer value; 0 means no error has been detected.
|
||||
%% %
|
||||
%% %% psb_spcnv %%
|
||||
%% %
|
||||
%% \subsection*{psb\_spcnv --- Converts a sparse matrix storage
|
||||
%% \subroutine{psb\_spcnv}{Converts a sparse matrix storage
|
||||
%% format}
|
||||
%%\addcontentsline{toc}{subsection}{psb\_spcnv}
|
||||
|
||||
%% \syntax{call psb\_spcnv}{a, b, desc\_a, info}
|
||||
|
||||
@@ -805,12 +793,11 @@ An integer value; 0 means no error has been detected.
|
||||
%
|
||||
%% psb_spfree %%
|
||||
%
|
||||
\clearpage\subsection*{psb\_spfree --- Frees a sparse matrix}
|
||||
\addcontentsline{toc}{subsection}{psb\_spfree}
|
||||
\clearpage\subroutine{psb\_spfree}{Frees a sparse matrix}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_spfree(a, desc_a, info)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Synchronous.
|
||||
@@ -842,13 +829,12 @@ An integer value; 0 means no error has been detected.
|
||||
%
|
||||
%% psb_sprn %%
|
||||
%
|
||||
\clearpage\subsection*{psb\_sprn --- Reinit sparse matrix structure for psblas
|
||||
\clearpage\subroutine{psb\_sprn}{Reinit sparse matrix structure for psblas
|
||||
routines.}
|
||||
\addcontentsline{toc}{subsection}{psb\_sprn}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_sprn(a, decsc_a, info, clear)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Synchronous.
|
||||
@@ -886,8 +872,7 @@ An integer value; 0 means no error has been detected.
|
||||
%
|
||||
%% psb_spupdate %%
|
||||
%
|
||||
%% \subsection*{psb\_spupdate --- Updates a sparse matrix.}
|
||||
%%\addcontentsline{toc}{subsection}{psb\_spupdate}
|
||||
%% \subroutine{psb\_spupdate}{Updates a sparse matrix.}
|
||||
|
||||
%% \syntax{call psb\_spupdate}{a, ia, ja, blck, desc\_a, info, ix, jx, updflag}
|
||||
|
||||
@@ -901,9 +886,8 @@ An integer value; 0 means no error has been detected.
|
||||
%% %
|
||||
%% %% psb_csrp %%
|
||||
%% %
|
||||
%% \subsection*{psb\_csrp --- Applies a right permutation to a sparse
|
||||
%% \subroutine{psb\_csrp}{Applies a right permutation to a sparse
|
||||
%% matrix}
|
||||
%%\addcontentsline{toc}{subsection}{psb\_csrp}
|
||||
|
||||
%% \syntax{call psb\_csrp}{trans, iperm, a, info}
|
||||
|
||||
@@ -933,12 +917,11 @@ An integer value; 0 means no error has been detected.
|
||||
%
|
||||
%% psb_alloc %%
|
||||
%
|
||||
\clearpage\subsection*{psb\_geall --- Allocates a dense matrix}
|
||||
\addcontentsline{toc}{subsection}{psb\_geall}
|
||||
\clearpage\subroutine{psb\_geall}{Allocates a dense matrix}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_geall(x, desc_a, info, n, lb)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Synchronous.
|
||||
@@ -981,12 +964,11 @@ An integer value; 0 means no error has been detected.
|
||||
%
|
||||
%% psb_ins %%
|
||||
%
|
||||
\clearpage\subsection*{psb\_geins --- Dense matrix insertion routine}
|
||||
\addcontentsline{toc}{subsection}{psb\_geins}
|
||||
\clearpage\subroutine{psb\_geins}{Dense matrix insertion routine}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_geins(m, irw, val, x, desc_a, info [,dupl,local])
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Asynchronous.
|
||||
@@ -1054,12 +1036,11 @@ An integer value; 0 means no error has been detected.
|
||||
%
|
||||
%% psb_asb %%
|
||||
%
|
||||
\clearpage\subsection*{psb\_geasb --- Assembly a dense matrix}
|
||||
\addcontentsline{toc}{subsection}{psb\_geasb}
|
||||
\clearpage\subroutine{psb\_geasb}{Assembly a dense matrix}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_geasb(x, desc_a, info, mold)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Synchronous.
|
||||
@@ -1094,12 +1075,11 @@ An integer value; 0 means no error has been detected.
|
||||
%
|
||||
%% psb_free %%
|
||||
%
|
||||
\clearpage\subsection*{psb\_gefree --- Frees a dense matrix}
|
||||
\addcontentsline{toc}{subsection}{psb\_gefree}
|
||||
\clearpage\subroutine{psb\_gefree}{Frees a dense matrix}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_gefree(x, desc_a, info)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Synchronous.
|
||||
@@ -1132,13 +1112,12 @@ An integer value; 0 means no error has been detected.
|
||||
%
|
||||
%% psb_gelp %%
|
||||
%
|
||||
\clearpage\subsection*{psb\_gelp --- Applies a left permutation to a dense
|
||||
\clearpage\subroutine{psb\_gelp}{Applies a left permutation to a dense
|
||||
matrix}
|
||||
\addcontentsline{toc}{subsection}{psb\_gelp}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_gelp(trans, iperm, x, info)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Asynchronous.
|
||||
@@ -1173,14 +1152,13 @@ An integer value; 0 means no error has been detected.
|
||||
%
|
||||
%% psb_glob_to_loc %%
|
||||
%
|
||||
\clearpage\subsection*{psb\_glob\_to\_loc --- Global to local indices
|
||||
\clearpage\subroutine{psb\_glob\_to\_loc}{Global to local indices
|
||||
convertion}
|
||||
\addcontentsline{toc}{subsection}{psb\_glob\_to\_loc}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_glob_to_loc(x, y, desc_a, info, iact,owned)
|
||||
call psb_glob_to_loc(x, desc_a, info, iact,owned)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Asynchronous.
|
||||
@@ -1241,14 +1219,13 @@ An integer value; 0 means no error has been detected.
|
||||
\end{enumerate}
|
||||
|
||||
|
||||
\clearpage\subsection*{psb\_loc\_to\_glob --- Local to global indices
|
||||
\clearpage\subroutine{psb\_loc\_to\_glob}{Local to global indices
|
||||
conversion}
|
||||
\addcontentsline{toc}{subsection}{psb\_loc\_to\_glob}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_loc_to_glob(x, y, desc_a, info, iact)
|
||||
call psb_loc_to_glob(x, desc_a, info, iact)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Asynchronous.
|
||||
@@ -1298,12 +1275,11 @@ An integer value; 0 means no error has been detected.
|
||||
%
|
||||
%% psb_loc_to_glob %%
|
||||
%
|
||||
\clearpage\subsection*{psb\_is\_owned }
|
||||
\addcontentsline{toc}{subsection}{psb\_is\_owned}
|
||||
\clearpage\subroutine{psb\_is\_owned }{}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_is_owned(x, desc_a)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Asynchronous.
|
||||
@@ -1338,12 +1314,11 @@ Intent: {\bf out}.\\
|
||||
\end{enumerate}
|
||||
|
||||
|
||||
\clearpage\subsection*{psb\_owned\_index }
|
||||
\addcontentsline{toc}{subsection}{psb\_owned\_index}
|
||||
\clearpage\subroutine{psb\_owned\_index }{}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_owned_index(y, x, desc_a, info)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Asynchronous.
|
||||
@@ -1390,12 +1365,11 @@ An integer value; 0 means no error has been detected.
|
||||
\end{enumerate}
|
||||
|
||||
|
||||
\clearpage\subsection*{psb\_is\_local }
|
||||
\addcontentsline{toc}{subsection}{psb\_is\_local}
|
||||
\clearpage\subroutine{psb\_is\_local }{}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_is_local(x, desc_a)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Asynchronous.
|
||||
@@ -1429,12 +1403,11 @@ Intent: {\bf out}.\\
|
||||
indices
|
||||
\end{enumerate}
|
||||
|
||||
\clearpage\subsection*{psb\_local\_index }
|
||||
\addcontentsline{toc}{subsection}{psb\_local\_index}
|
||||
\clearpage\subroutine{psb\_local\_index }{}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_local_index(y, x, desc_a, info)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Asynchronous.
|
||||
@@ -1485,12 +1458,11 @@ An integer value; 0 means no error has been detected.
|
||||
%
|
||||
%% psb_ins %%
|
||||
%
|
||||
\clearpage\subsection*{psb\_get\_boundary --- Extract list of boundary elements}
|
||||
\addcontentsline{toc}{subsection}{psb\_get\_boundary}
|
||||
\clearpage\subroutine{psb\_get\_boundary}{Extract list of boundary elements}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_get_boundary(bndel, desc, info)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Asynchronous.
|
||||
@@ -1527,12 +1499,11 @@ An integer value; 0 means no error has been detected.
|
||||
number of boundary elements.
|
||||
\end{enumerate}
|
||||
|
||||
\clearpage\subsection*{psb\_get\_overlap --- Extract list of overlap elements}
|
||||
\addcontentsline{toc}{subsection}{psb\_get\_overlap}
|
||||
\clearpage\subroutine{psb\_get\_overlap}{Extract list of overlap elements}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_get_overlap(ovrel, desc, info)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Asynchronous.
|
||||
@@ -1570,13 +1541,12 @@ An integer value; 0 means no error has been detected.
|
||||
|
||||
|
||||
|
||||
\clearpage\subsection*{psb\_sp\_getrow --- Extract row(s) from a sparse matrix}
|
||||
\addcontentsline{toc}{subsection}{psb\_sp\_getrow}
|
||||
\clearpage\subroutine{psb\_sp\_getrow}{Extract row(s) from a sparse matrix}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_sp_getrow(row, a, nz, ia, ja, val, info, &
|
||||
& append, nzin, lrw)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Asynchronous.
|
||||
@@ -1663,17 +1633,16 @@ An integer value; 0 means no error has been detected.
|
||||
|
||||
|
||||
|
||||
\clearpage\subsection*{psb\_sizeof --- Memory occupation}
|
||||
\addcontentsline{toc}{subsection}{psb\_sizeof}
|
||||
\clearpage\subroutine{psb\_sizeof}{Memory occupation}
|
||||
|
||||
This function computes the memory occupation of a PSBLAS object.
|
||||
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
isz = psb_sizeof(a)
|
||||
isz = psb_sizeof(desc_a)
|
||||
isz = psb_sizeof(prec)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Asynchronous.
|
||||
@@ -1702,8 +1671,7 @@ Returned as: an \verb|integer(psb_long_int_k_)| number.
|
||||
\end{description}
|
||||
|
||||
|
||||
\clearpage\subsection*{Sorting utilities}
|
||||
\addcontentsline{toc}{subsection}{Sorting utilities}
|
||||
\clearpage\subroutine{Sorting utilities}{}
|
||||
|
||||
{\par\noindent\large\bfseries psb\_msort --- Sorting by the Merge-sort
|
||||
algorithm}
|
||||
@@ -1712,11 +1680,11 @@ Returned as: an \verb|integer(psb_long_int_k_)| number.
|
||||
algorithm}
|
||||
|
||||
{\par\noindent\large\bfseries psb\_hsort --- Sorting by the Heapsort algorithm}
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call psb_msort(x,ix,dir,flag)
|
||||
call psb_qsort(x,ix,dir,flag)
|
||||
call psb_hsort(x,ix,dir,flag)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
These serial routines sort a sequence $X$ into ascending or
|
||||
descending order. The argument meaning is identical for the three
|
||||
|
||||
+13
-7
@@ -16,6 +16,7 @@
|
||||
\usepackage{graphicx}
|
||||
\newtheorem{theorem}{Theorem}
|
||||
\newtheorem{corollary}{Corollary}
|
||||
\usepackage{listings}
|
||||
|
||||
%\newboolean{mtc}
|
||||
%\setboolean{mtc}{true}
|
||||
@@ -24,7 +25,7 @@
|
||||
\relax
|
||||
\pdfcompresslevel=0 %-- 0 = none, 9 = best
|
||||
\pdfinfo{ %-- Info dictionary of PDF output /Author (Alfredo Buttari)
|
||||
/Title (Parallel Sparse BLAS V. 3.1)
|
||||
/Title (Parallel Sparse BLAS V. 3.2)
|
||||
/Subject (Parallel Sparse Basic Linear Algebra Subroutines)
|
||||
/Keywords (Computer Science Linear Algebra Fluid Dynamics Parallel Linux MPI PSBLAS Iterative Solvers Preconditioners)
|
||||
/Creator (pdfLaTeX)
|
||||
@@ -45,9 +46,14 @@
|
||||
\markright{#1}}%
|
||||
\newcommand{\subsubroutine}[2]{%
|
||||
\stepcounter{subroutine}%
|
||||
\subsection*{\flushleft #1---#2 \endflushleft}%
|
||||
\subsubsection*{\flushleft #1---#2 \endflushleft}%
|
||||
\addcontentsline{toc}{subsubsection}{#1}%
|
||||
\markright{#1}}%
|
||||
\newcommand{\subsubsubroutine}[2]{%
|
||||
\stepcounter{subroutine}%
|
||||
\subsubsection*{\flushleft #1---#2 \endflushleft}%
|
||||
\addcontentsline{toc}{paragraph}{#1}%
|
||||
\markright{#1}}%
|
||||
\newcommand{\examplename}{Example}
|
||||
\newcommand{\syntaxname}{Syntax}
|
||||
\def\syntax{\@ifstar{\@ssyntax}{\@syntax}}%
|
||||
@@ -80,8 +86,8 @@
|
||||
|
||||
\begin{document}
|
||||
|
||||
\pdfbookmark{PSBLAS-v3.1 User's Guide}{title}
|
||||
|
||||
\pdfbookmark{PSBLAS-v3.2 User's Guide}{title}
|
||||
\lstset{language=Fortran}
|
||||
\newlength{\centeroffset}
|
||||
\setlength{\centeroffset}{-0.5\oddsidemargin}
|
||||
\addtolength{\centeroffset}{0.5\evensidemargin}
|
||||
@@ -90,7 +96,7 @@
|
||||
\vspace*{\stretch{1}}
|
||||
\noindent\hspace*{\centeroffset}\makebox[0pt][l]{\begin{minipage}{\textwidth}
|
||||
\flushright
|
||||
{\Huge\bfseries PSBLAS 3.1 User's guide
|
||||
{\Huge\bfseries PSBLAS 3.2 User's guide
|
||||
}
|
||||
\noindent\rule[-1ex]{\textwidth}{5pt}\\[2.5ex]
|
||||
\hfill\emph{\Large A reference guide for the Parallel Sparse BLAS library}
|
||||
@@ -103,11 +109,12 @@
|
||||
by Salvatore Filippone\\
|
||||
and Alfredo Buttari}\\
|
||||
University of Rome ``Tor Vergata''.\\[3ex]
|
||||
June 14, 2013
|
||||
March 31st, 2014.
|
||||
\end{minipage}}
|
||||
|
||||
%\addtolength{\textwidth}{\centeroffset}
|
||||
\vspace{\stretch{2}}
|
||||
\setcounter{tocdepth}{4}
|
||||
|
||||
\cleardoublepage
|
||||
\begingroup
|
||||
@@ -121,7 +128,6 @@ June 14, 2013
|
||||
|
||||
\pagenumbering{arabic} % Arabic numbering
|
||||
\setcounter{page}{1} % Chapters start on page 1
|
||||
|
||||
\include{intro}
|
||||
\include{datastruct}
|
||||
\include{psbrout}
|
||||
|
||||
+11
-3
@@ -15,6 +15,7 @@
|
||||
\usepackage{graphicx}
|
||||
\newtheorem{theorem}{Theorem}
|
||||
\newtheorem{corollary}{Corollary}
|
||||
\usepackage{listings}
|
||||
|
||||
%\newboolean{mtc}
|
||||
%\setboolean{mtc}{true}
|
||||
@@ -23,7 +24,7 @@
|
||||
% \relax
|
||||
% \pdfcompresslevel=0 %-- 0 = none, 9 = best
|
||||
% \pdfinfo{ %-- Info dictionary of PDF output /Author (Alfredo Buttari)
|
||||
% /Title (Parallel Sparse BLAS V. 3.1)
|
||||
% /Title (Parallel Sparse BLAS V. 3.2)
|
||||
% /Subject (Parallel Sparse Basic Linear Algebra Subroutines)
|
||||
% /Keywords (Computer Science Linear Algebra Fluid Dynamics Parallel Linux MPI PSBLAS Iterative Solvers Preconditioners)
|
||||
% /Creator (pdfLaTeX)
|
||||
@@ -47,6 +48,11 @@
|
||||
\subsection*{\flushleft #1---#2 \endflushleft}%
|
||||
\addcontentsline{toc}{subsubsection}{#1}%
|
||||
\markright{#1}}%
|
||||
\newcommand{\subsubsubroutine}[2]{%
|
||||
\stepcounter{subroutine}%
|
||||
\subsubsection*{\flushleft #1---#2 \endflushleft}%
|
||||
\addcontentsline{toc}{paragraph}{#1}%
|
||||
\markright{#1}}%
|
||||
\newcommand{\examplename}{Example}
|
||||
\newcommand{\syntaxname}{Syntax}
|
||||
\def\syntax{\@ifstar{\@ssyntax}{\@syntax}}%
|
||||
@@ -78,6 +84,8 @@
|
||||
\newcommand{\vbasedata}{\hypertarget{vbasedata}{{\tt psb\_T\_base\_vect\_type}}}
|
||||
|
||||
\begin{document}
|
||||
\lstset{language=Fortran}
|
||||
|
||||
{\LARGE\bfseries PSBLAS\\[.8ex] User's and Reference
|
||||
Guide}\\[\baselineskip]
|
||||
\emph{\large A reference guide for the Parallel Sparse BLAS library}\\[3ex]
|
||||
@@ -86,9 +94,9 @@
|
||||
University of Rome ``Tor Vergata'', Italy\\[2ex]
|
||||
%\\[10ex]
|
||||
%\today
|
||||
Software version: 3.1\\
|
||||
Software version: 3.2\\
|
||||
%\today
|
||||
June 14, 2013.
|
||||
March 31st, 2014.
|
||||
\cleardoublepage
|
||||
\begingroup
|
||||
\renewcommand*{\thepage}{toc}
|
||||
|
||||
+15
-20
@@ -9,13 +9,12 @@ module \verb|psb_util_mod|.
|
||||
|
||||
%\subroutine{PSB\_HBIO\_MOD}{Input/Output in Harwell-Boeing format}
|
||||
|
||||
\clearpage\subsection*{hb\_read --- Read a sparse matrix from a file in the
|
||||
\clearpage\subroutine{hb\_read}{Read a sparse matrix from a file in the
|
||||
Harwell--Boeing format}
|
||||
\addcontentsline{toc}{subsubsection}{hb\_read}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call hb_read(a, iret, iunit, filename, b, mtitle)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Asynchronous.
|
||||
@@ -52,13 +51,12 @@ An integer value; 0 means no error has been detected.
|
||||
|
||||
|
||||
|
||||
\clearpage\subsection*{hb\_write --- Write a sparse matrix to a file
|
||||
\clearpage\subroutine{hb\_write}{Write a sparse matrix to a file
|
||||
in the Harwell--Boeing format}
|
||||
\addcontentsline{toc}{subsubsection}{hb\_write}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call hb_write(a, iret, iunit, filename, key, rhs, mtitle)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
|
||||
|
||||
@@ -105,13 +103,12 @@ An integer value; 0 means no error has been detected.
|
||||
|
||||
%\subroutine{PSB\_MMIO\_MOD}{Input/Output in MatrixMarket format}
|
||||
|
||||
\clearpage\subsection*{mm\_mat\_read --- Read a sparse matrix from a
|
||||
\clearpage\subroutine{mm\_mat\_read}{Read a sparse matrix from a
|
||||
file in the MatrixMarket format}
|
||||
\addcontentsline{toc}{subsubsection}{mm\_mat\_read}
|
||||
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call mm_mat_read(a, iret, iunit, filename)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Asynchronous.
|
||||
@@ -136,12 +133,11 @@ Type: {\bf required} \\
|
||||
An integer value; 0 means no error has been detected.
|
||||
\end{description}
|
||||
|
||||
\clearpage\subsection*{mm\_vet\_read --- Read a dense vector from a
|
||||
\clearpage\subroutine{mm\_vet\_read}{Read a dense vector from a
|
||||
file in the MatrixMarket format}
|
||||
\addcontentsline{toc}{subsubsection}{mm\_vet\_read }
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call mm_vet_read(b, iret, iunit, filename)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{description}
|
||||
\item[Type:] Asynchronous.
|
||||
@@ -170,12 +166,11 @@ An integer value; 0 means no error has been detected.
|
||||
|
||||
|
||||
|
||||
\clearpage\subsection*{mm\_mat\_write --- Write a sparse matrix to a
|
||||
\clearpage\subroutine{mm\_mat\_write}{Write a sparse matrix to a
|
||||
file in the MatrixMarket format}
|
||||
\addcontentsline{toc}{subsubsection}{mm\_mat\_write}
|
||||
\begin{verbatim}
|
||||
\begin{lstlisting}
|
||||
call mm_mat_write(a, mtitle, iret, iunit, filename)
|
||||
\end{verbatim}
|
||||
\end{lstlisting}
|
||||
\begin{description}
|
||||
\item[Type:] Asynchronous.
|
||||
\item[\bf On Entry ]
|
||||
|
||||
Reference in New Issue
Block a user