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:
Salvatore Filippone
2014-03-20 11:35:31 +00:00
parent 2084fbd91d
commit d805c2bee6
15 changed files with 13737 additions and 10237 deletions
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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]
+3 -4
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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 ]