Merge branch 'merge-paraggr' into merge-paraggr-newops

# Conflicts:
#	docs/html/index.html
#	docs/html/userhtml.css
#	docs/html/userhtml.html
#	docs/psblas-3.7.pdf
#	docs/src/psbrout.tex
This commit is contained in:
Salvatore Filippone
2019-12-17 19:40:54 +00:00
382 changed files with 51417 additions and 8083 deletions
+22 -9
View File
@@ -113,6 +113,7 @@ DATE = $(shell date +%Y-%m-%d)
#
LATEX = latex
LTX2HTML = latex2html -local_icons
LTX2HTML = htlatex
PDFLATEX = pdflatex
ACRO = evince
XPDF = xpdf
@@ -138,11 +139,12 @@ PDF = $(join $(BASEFILE),.pdf)
PS = $(join $(BASEFILE),.ps)
GXS = $(join $(BASEFILE),.gxs)
GLX = $(join $(BASEFILE),.glx)
TARGETPDF= ../psblas-3.6.pdf
TARGETPDF= ../psblas-3.7.pdf
BASEHTML = $(patsubst %.tex,%,$(HTMLFILE))
HTML = $(join $(HTMLFILE),.html)
HTML = $(join $(BASEHTML),.html)
HTMLDIR = ../html
HTMLFLAGS = -noaddress
HTMLFLAGS = "html,3"
FIGURES = $(sort $(wildcard $(FIGDIR)/*))
GLOFILES:= $(sort $(wildcard lib/*.gdf))
@@ -159,9 +161,9 @@ TEXLNFIL = $(addprefix $(PWD)/,$(TEXFILES))
#============================================================================
all: pdf html
pdf: $(PDF) copypdf
html: $(HTML)
html: $(HTML) copyhtml
$(PDF): $(TEXFILES) $(LIBFILES) $(FIGURES) Makefile
$(header)
@@ -184,19 +186,21 @@ copypdf:
$(HTML): $(TEXFILES) $(LIBFILES) $(FIGURES) Makefile
$(header)
$(initialize)
$(latex-filter)
$(pdflatex-filter)
ifneq ($(BIBFILES),)
$(bibtex)
$(latex-filter)
$(pdflatex-filter)
endif
ifneq ($(GLOFILES),)
$(glosstex)
$(latex-filter)
$(pdflatex-filter)
endif
# $(makeindex)
$(latex-filter)
$(ltx2html-filter)
copyhtml:
$(ltx2html-cpy)
$(PS): $(PDF)
$(PDF2PS) $< $(PS)
@@ -328,7 +332,16 @@ define ltx2html-filter
@echo "----- latex -------------------------------------------------------"
@echo -n "Starting: "; date
@echo
cd tmp; ($(LTX2HTML) $(HTMLFLAGS) -dir ../$(HTMLDIR) $(HTMLFILE) 2>&1) | $(FILTER)
# cd tmp; ($(LTX2HTML) $(HTMLFLAGS) -dir ../$(HTMLDIR) $(HTMLFILE) 2>&1) | $(FILTER)
cd tmp; ($(LTX2HTML) $(HTMLFILE) $(HTMLFLAGS) 2>&1) | $(FILTER)
endef
define ltx2html-cpy
@echo
@echo "----- latex -------------------------------------------------------"
@echo -n "Starting: "; date
@echo
cd tmp; (cp *.css *.html *.png ../$(HTMLDIR)); (cp $(HTML) ../$(HTMLDIR)/index.html)
endef
#----------------------------------------------------------------------------
+6 -10
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\subsection{psb\_halo --- Halo Data Communication}
These subroutines gathers the values of the halo
@@ -88,7 +87,7 @@ An integer value that contains an error code.
\begin{figure}[h]
\begin{center}
\ifcase\pdfoutput
\includegraphics[scale=0.45]{figures/try8x8.eps}
\includegraphics[scale=0.45]{figures/try8x8.png}
\or
\includegraphics[scale=0.45]{figures/try8x8}
\fi
@@ -162,8 +161,7 @@ following:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\clearpage\subsection*{psb\_ovrl --- Overlap Update}
\addcontentsline{toc}{subsection}{psb\_ovrl}
\clearpage\subsection{psb\_ovrl --- Overlap Update}
These subroutines applies an overlap operator to the input vector:
@@ -267,7 +265,7 @@ their instances.
\begin{figure}[h]
\begin{center}
\ifcase\pdfoutput
\includegraphics[scale=0.65]{figures/try8x8_ov.eps}
\includegraphics[scale=0.65]{figures/try8x8_ov.png}
\or
{\includegraphics[scale=0.65]{figures/try8x8_ov}}
\fi
@@ -354,8 +352,7 @@ following (showing a transition among the two subdomains)
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\clearpage\subsection*{psb\_gather --- Gather Global Dense Matrix}
\addcontentsline{toc}{subsection}{psb\_gather}
\clearpage\subsection{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
@@ -456,8 +453,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\subsection{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.
+127 -66
View File
@@ -182,8 +182,7 @@ state, which can take the following values:
\subsubsection{Descriptor Methods}
\subsubsection*{get\_local\_rows --- Get number of local rows}
\addcontentsline{toc}{paragraph}{get\_local\_rows}
\subsubsection{get\_local\_rows --- Get number of local rows}
\begin{verbatim}
nr = desc%get_local_rows()
@@ -208,8 +207,7 @@ Scope: {\bf local}.\\
\end{description}
\subsubsection*{get\_local\_cols --- Get number of local cols}
\addcontentsline{toc}{paragraph}{get\_local\_cols}
\subsubsection{get\_local\_cols --- Get number of local cols}
\begin{verbatim}
nc = desc%get_local_cols()
@@ -235,8 +233,7 @@ Scope: {\bf local}.\\
\end{description}
\subsubsection*{get\_global\_rows --- Get number of global rows}
\addcontentsline{toc}{paragraph}{get\_global\_rows}
\subsubsection{get\_global\_rows --- Get number of global rows}
\begin{verbatim}
nr = desc%get_global_rows()
@@ -258,8 +255,7 @@ Scope: {\bf local}.\\
global index space.
\end{description}
\subsubsection*{get\_global\_cols --- Get number of global cols}
\addcontentsline{toc}{paragraph}{get\_global\_cols}
\subsubsection{get\_global\_cols --- Get number of global cols}
\begin{verbatim}
nr = desc%get_global_cols()
@@ -282,8 +278,7 @@ Scope: {\bf local}.\\
\end{description}
\subsubsection*{get\_global\_indices --- Get vector of global indices}
\addcontentsline{toc}{paragraph}{get\_global\_indices}
\subsubsection{get\_global\_indices --- Get vector of global indices}
\begin{verbatim}
myidx = desc%get_global_indices([owned])
@@ -306,13 +301,12 @@ Type: {\bf optional}; default: \verb|.true.|.\\
\begin{description}
\item[\bf On Return]
\item[Function value] The global indices, returned as an allocatable
integer array of rank 1.
integer array of kind \verb|psb_lpk_| and rank 1.
\end{description}
\subsubsection*{get\_context --- Get communication context}
\addcontentsline{toc}{paragraph}{get\_context}
\subsubsection{get\_context --- Get communication context}
\begin{verbatim}
ictxt = desc%get_context()
@@ -333,8 +327,7 @@ Scope: {\bf local}.\\
\item[Function value] The communication context.
\end{description}
\subsubsection*{Clone --- clone current object}
\addcontentsline{toc}{paragraph}{Clone}
\subsubsection{Clone --- clone current object}
\begin{verbatim}
call desc%clone(descout,info)
@@ -357,8 +350,7 @@ Scope: {\bf local}.\\
\end{description}
\subsubsection*{CNV --- convert internal storage format}
\addcontentsline{toc}{paragraph}{CNV}
\subsubsection{CNV --- convert internal storage format}
\begin{verbatim}
call desc%cnv(mold)
@@ -369,7 +361,7 @@ call desc%cnv(mold)
\item[\bf On Entry]
\item[desc] the communication descriptor.\\
Scope: {\bf local}.\\
\item[mold] the desred integer storage format.\\
\item[mold] the desired integer storage format.\\
Scope: {\bf local}.\\
% Type: {\bf required}.\\
% Intent: {\bf in}.\\
@@ -381,9 +373,8 @@ accelerators.
\subsubsection*{psb\_cd\_get\_large\_threshold --- Get threshold for
\subsubsection{psb\_cd\_get\_large\_threshold --- Get threshold for
index mapping switch}
\addcontentsline{toc}{paragraph}{psb\_cd\_get\_large\_threshold}
\begin{verbatim}
ith = psb_cd_get_large_threshold()
@@ -398,9 +389,9 @@ ith = psb_cd_get_large_threshold()
\subsubsection*{psb\_cd\_set\_large\_threshold --- Set threshold for
\subsubsection{psb\_cd\_set\_large\_threshold --- Set threshold for
index mapping switch}
\addcontentsline{toc}{paragraph}{psb\_cd\_set\_large\_threshold}
%\addcontentsline{toc}{paragraph}{psb\_cd\_set\_large\_threshold}
\begin{verbatim}
call psb_cd_set_large_threshold(ith)
@@ -421,6 +412,76 @@ has no effect on communication descriptors that have already been
initialized. Moreover the threshold must have the same value on all
processes.
\subsubsection{get\_p\_adjcncy --- Get process adjacency list}
%\addcontentsline{toc}{paragraph}{get\_p\_adjcncy}
\begin{verbatim}
list = desc%get_p_adjcncy()
\end{verbatim}
\begin{description}
\item[Type:] Asynchronous.
\item[\bf On Return]
\item[Function value] The current list of adjacent processes,
i.e. processes with which the current one has to exchange halo
data.
\end{description}
\subsubsection{set\_p\_adjcncy --- Set process adjacency list}
%\addcontentsline{toc}{paragraph}{set\_p\_adjcncy}
\begin{verbatim}
call desc%set_p_adjcncy(list)
\end{verbatim}
\begin{description}
\item[Type:] Asynchronous.
\item[\bf On Entry]
\item[list] the list of adjacent processes.\\
Scope: {\bf local}.\\
Type: {\bf required}.\\
Intent: {\bf in}.\\
Specified as: a one-dimensional array of integers of kind \verb|psb_ipk_|.
\end{description}
Note: this method can be called after a call to \verb|psb_cdall| and
before a call to \verb|psb_cdasb|. The user is specifying here some
knowledge about which processes are topological neighbours of the
current process. The availability of this information may speed up the
execution of the assembly call \verb|psb_cdasb|.
\subsubsection{fnd\_owner --- Find the owner process of a set of indices}
%\addcontentsline{toc}{paragraph}{fnd\_owner}
\begin{verbatim}
call desc%fnd_owner(idx,iprc,info)
\end{verbatim}
\begin{description}
\item[Type:] Synchronous.
\item[\bf On Entry]
\item[idx] the list of global indices for which we need the owning processes.\\
Scope: {\bf local}.\\
Type: {\bf required}.\\
Intent: {\bf in}.\\
Specified as: a one-dimensional array of integers of kind \verb|psb_lpk_|.
\item[\bf On Return]
\item[iprc] the list of processes owning the indices in \verb|idx|.\\
Scope: {\bf local}.\\
Type: {\bf required}.\\
Intent: {\bf in}.\\
Specified as: an allocatable one-dimensional array of integers of kind \verb|psb_ipk_|.
\end{description}
Note: this method may or may not actually require communications, depending on
the exact internal data storage; given that the choice of storage may
be altered by runtime parameters, it is necessary for safety that this
method is called by all processes.
\subsubsection{Named Constants}
\label{sec:cd_constants}
\begin{description}
@@ -521,8 +582,8 @@ variants are obtained by conversion to/from it.
\subsubsection{Sparse Matrix Methods}
\subsubsection*{get\_nrows --- Get number of rows in a sparse matrix}
\addcontentsline{toc}{paragraph}{get\_nrows}
\subsubsection{get\_nrows --- Get number of rows in a sparse matrix}
%\addcontentsline{toc}{paragraph}{get\_nrows}
\begin{verbatim}
nr = a%get_nrows()
@@ -544,9 +605,9 @@ Scope: {\bf local}\\
\end{description}
\subsubsection*{get\_ncols --- Get number of columns in a sparse
\subsubsection{get\_ncols --- Get number of columns in a sparse
matrix}
\addcontentsline{toc}{paragraph}{get\_ncols}
%\addcontentsline{toc}{paragraph}{get\_ncols}
\begin{verbatim}
nc = a%get_ncols()
@@ -568,9 +629,9 @@ Scope: {\bf local}\\
\end{description}
\subsubsection*{get\_nnzeros --- Get number of nonzero elements
\subsubsection{get\_nnzeros --- Get number of nonzero elements
in a sparse matrix}
\addcontentsline{toc}{paragraph}{get\_nnzeros}
%\addcontentsline{toc}{paragraph}{get\_nnzeros}
\begin{verbatim}
nz = a%get_nnzeros()
@@ -598,9 +659,9 @@ 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
\subsubsection{get\_size --- Get maximum number of nonzero elements
in a sparse matrix}
\addcontentsline{toc}{paragraph}{get\_size }
%\addcontentsline{toc}{paragraph}{get\_size }
\begin{verbatim}
maxnz = a%get_size()
@@ -622,9 +683,9 @@ Scope: {\bf local}\\
be stored in sparse matrix \verb|a| using its current memory allocation.
\end{description}
\subsubsection*{sizeof --- Get memory occupation in bytes
\subsubsection{sizeof --- Get memory occupation in bytes
of a sparse matrix}
\addcontentsline{toc}{paragraph}{sizeof }
%\addcontentsline{toc}{paragraph}{sizeof }
\begin{verbatim}
memory_size = a%sizeof()
@@ -646,8 +707,8 @@ Scope: {\bf local}\\
\end{description}
\subsubsection*{get\_fmt --- Short description of the dynamic type}
\addcontentsline{toc}{paragraph}{get\_fmt }
\subsubsection{get\_fmt --- Short description of the dynamic type}
%\addcontentsline{toc}{paragraph}{get\_fmt }
\begin{verbatim}
write(*,*) a%get_fmt()
@@ -670,8 +731,8 @@ Scope: {\bf local}\\
\verb|CSR| and \verb|CSC|.
\end{description}
\subsubsection*{is\_bld, is\_upd, is\_asb --- Status check}
\addcontentsline{toc}{paragraph}{is\_bld, is\_upd, is\_asb }
\subsubsection{is\_bld, is\_upd, is\_asb --- Status check}
%\addcontentsline{toc}{paragraph}{is\_bld, is\_upd, is\_asb }
\begin{verbatim}
if (a%is_bld()) then
@@ -695,9 +756,9 @@ Scope: {\bf local}\\
matrix is in the Build, Update or Assembled state, respectively.
\end{description}
\subsubsection*{is\_lower, is\_upper, is\_triangle, is\_unit ---
\subsubsection{is\_lower, is\_upper, is\_triangle, is\_unit ---
Format check}
\addcontentsline{toc}{paragraph}{is\_lower, is\_upper, is\_triangle, is\_unit}
%\addcontentsline{toc}{paragraph}{is\_lower, is\_upper, is\_triangle, is\_unit}
\begin{verbatim}
if (a%is_triangle()) then
@@ -725,8 +786,8 @@ Scope: {\bf local}\\
\end{description}
\subsubsection*{cscnv --- Convert to a different storage format}
\addcontentsline{toc}{paragraph}{cscnv}
\subsubsection{cscnv --- Convert to a different storage format}
%\addcontentsline{toc}{paragraph}{cscnv}
\begin{verbatim}
call a%cscnv(b,info [, type, mold, dupl])
@@ -758,8 +819,8 @@ employed to interface with special devices, such as GPUs and other
accelerators.
\subsubsection*{csclip --- Reduce to a submatrix}
\addcontentsline{toc}{paragraph}{csclip}
\subsubsection{csclip --- Reduce to a submatrix}
%\addcontentsline{toc}{paragraph}{csclip}
\begin{verbatim}
call a%csclip(b,info[,&
& imin,imax,jmin,jmax,rscale,cscale])
@@ -786,8 +847,8 @@ A variable of type \verb|psb_Tspmat_type|.
\item[info] Return code.
\end{description}
\subsubsection*{clean\_zeros --- Eliminate zero coefficients}
\addcontentsline{toc}{paragraph}{clean\_zeros}
\subsubsection{clean\_zeros --- Eliminate zero coefficients}
%\addcontentsline{toc}{paragraph}{clean\_zeros}
\begin{verbatim}
call a%clean_zeros(info)
\end{verbatim}
@@ -810,8 +871,8 @@ A variable of type \verb|psb_Tspmat_type|.
\item[info] Return code.
\end{description}
\subsubsection*{get\_diag --- Get main diagonal}
\addcontentsline{toc}{paragraph}{get\_diag}
\subsubsection{get\_diag --- Get main diagonal}
%\addcontentsline{toc}{paragraph}{get\_diag}
\begin{verbatim}
call a%get_diag(d,info)
\end{verbatim}
@@ -832,8 +893,8 @@ A one-dimensional array of the appropriate type.
\end{description}
\subsubsection*{clip\_diag --- Cut out main diagonal}
\addcontentsline{toc}{paragraph}{clip\_diag}
\subsubsection{clip\_diag --- Cut out main diagonal}
%\addcontentsline{toc}{paragraph}{clip\_diag}
\begin{verbatim}
call a%clip_diag(b,info)
\end{verbatim}
@@ -854,8 +915,8 @@ A variable of type \verb|psb_Tspmat_type|.
\end{description}
\subsubsection*{tril --- Return the lower triangle}
\addcontentsline{toc}{paragraph}{tril}
\subsubsection{tril --- Return the lower triangle}
%\addcontentsline{toc}{paragraph}{tril}
\begin{verbatim}
call a%tril(l,info[,&
& diag,imin,imax,jmin,jmax,rscale,cscale,u])
@@ -888,8 +949,8 @@ A variable of type \verb|psb_Tspmat_type|.
\item[info] Return code.
\end{description}
\subsubsection*{triu --- Return the upper triangle}
\addcontentsline{toc}{paragraph}{triu}
\subsubsection{triu --- Return the upper triangle}
%\addcontentsline{toc}{paragraph}{triu}
\begin{verbatim}
call a%triu(u,info[,&
& diag,imin,imax,jmin,jmax,rscale,cscale,l])
@@ -925,8 +986,8 @@ A variable of type \verb|psb_Tspmat_type|.
\subsubsection*{psb\_set\_mat\_default --- Set default storage format}
\addcontentsline{toc}{paragraph}{psb\_set\_mat\_default}
\subsubsection{psb\_set\_mat\_default --- Set default storage format}
%\addcontentsline{toc}{paragraph}{psb\_set\_mat\_default}
\begin{verbatim}
@@ -945,8 +1006,8 @@ Type: required.
\subsubsection*{clone --- Clone current object}
\addcontentsline{toc}{paragraph}{clone}
\subsubsection{clone --- Clone current object}
%\addcontentsline{toc}{paragraph}{clone}
\begin{verbatim}
call a%clone(b,info)
@@ -1042,8 +1103,8 @@ private memory.
\end{figure}
\subsubsection{Vector Methods}
\subsubsection*{get\_nrows --- Get number of rows in a dense vector}
\addcontentsline{toc}{paragraph}{get\_nrows}
\subsubsection{get\_nrows --- Get number of rows in a dense vector}
%\addcontentsline{toc}{paragraph}{get\_nrows}
\begin{verbatim}
nr = v%get_nrows()
@@ -1065,9 +1126,9 @@ Scope: {\bf local}\\
\end{description}
\subsubsection*{sizeof --- Get memory occupation in bytes
\subsubsection{sizeof --- Get memory occupation in bytes
of a dense vector}
\addcontentsline{toc}{paragraph}{sizeof }
%\addcontentsline{toc}{paragraph}{sizeof }
\begin{verbatim}
memory_size = v%sizeof()
@@ -1089,8 +1150,8 @@ Scope: {\bf local}\\
\end{description}
\subsubsection*{set --- Set contents of the vector}
\addcontentsline{toc}{paragraph}{set }
\subsubsection{set --- Set contents of the vector}
%\addcontentsline{toc}{paragraph}{set }
\begin{verbatim}
call v%set(alpha[,first,last])
@@ -1127,8 +1188,8 @@ constant having the appropriate type and kind.
Scope: {\bf local}\\
\end{description}
\subsubsection*{get\_vect --- Get a copy of the vector contents}
\addcontentsline{toc}{paragraph}{get\_vect }
\subsubsection{get\_vect --- Get a copy of the vector contents}
%\addcontentsline{toc}{paragraph}{get\_vect }
\begin{verbatim}
extv = v%get_vect([n])
@@ -1157,8 +1218,8 @@ Type: {\bf optional}; default: entire vector.\\
array is the same as the internal size of the vector.
\end{description}
\subsubsection*{clone --- Clone current object}
\addcontentsline{toc}{paragraph}{clone}
\subsubsection{clone --- Clone current object}
%\addcontentsline{toc}{paragraph}{clone}
\begin{verbatim}
call x%clone(y,info)
\end{verbatim}
+8 -28
View File
@@ -119,9 +119,10 @@ Aborting...
\end{figure}
\clearpage\subroutine{psb\_errpush}{Pushes an error code onto the error
\clearpage\subsection{psb\_errpush}{Pushes an error code onto the error
stack}
\begin{lstlisting}
call psb_errpush(err_c, r_name, i_err, a_err)
\end{lstlisting}
@@ -149,7 +150,7 @@ Type: {\bf optional}\\
Specified as: a string.\\
\end{description}
\clearpage\subroutine{psb\_error}{Prints the error stack content and aborts
\clearpage\subsection{psb\_error}{Prints the error stack content and aborts
execution}
\begin{lstlisting}
@@ -168,8 +169,9 @@ Specified as: an integer.
\clearpage\subroutine{psb\_set\_errverbosity}{Sets the verbosity of error
messages.}
\clearpage\subsection{psb\_set\_errverbosity}{Sets the verbosity of error
messages}
\begin{lstlisting}
call psb_set_errverbosity(v)
@@ -185,9 +187,8 @@ Intent: {\bf in}.\\
Specified as: an integer.
\end{description}
\clearpage\subroutine{psb\_set\_erraction}{Set the type of action to be
taken upon error condition.}
\clearpage\subsection{psb\_set\_erraction}{Set the type of action to be
taken upon error condition}
\begin{lstlisting}
call psb_set_erraction(err_act)
@@ -205,27 +206,6 @@ Specified as: an integer. Possible values: \verb|psb_act_ret|,
\end{description}
%% \clearpage\subroutine{psb\_errcomm}{Error communication routine}
%% \begin{lstlisting}
%% call psb_errcomm(icontxt, err)
%% \end{lstlisting}
%% \begin{description}
%% \item[\bf On Entry]
%% \item[icontxt] the communication context.\\
%% Scope: {\bf global} \\
%% Type: {\bf required}\\
%% Intent: {\bf in}.\\
%% Specified as: an integer.
%% \item[err] the error code to be communicated\\
%% Scope: {\bf global} \\
%% Type: {\bf required}\\
%% Intent: {\bf inout}.\\
%% Specified as: an integer.\\
%% \end{description}
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "userguide"
+2 -2
View File
@@ -101,7 +101,7 @@ further details on our communication layer see Sec.~\ref{sec:parenv}.
\begin{figure}[h]
\begin{center}
\ifcase\pdfoutput
\includegraphics[scale=0.65]{figures/psblas.eps}
\includegraphics[scale=0.65]{figures/psblas.png}
\or
\includegraphics[scale=0.65]{figures/psblas}
\fi
@@ -218,7 +218,7 @@ local rows) is $|{\cal I}_i| + |{\cal B}_i| +|{\cal H}_i|$.
\begin{center}
\ifcase\pdfoutput
%\rotatebox{-90}{
\includegraphics[scale=0.65]{figures/points.eps}%}
\includegraphics[scale=0.65]{figures/points.png}%}
\or
\rotatebox{-90}{\includegraphics[scale=0.65]{figures/points}}
\fi
+1 -2
View File
@@ -11,9 +11,8 @@ the module \verb|psb_krylov_mod|.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\clearpage\subsection*{psb\_krylov \label{krylov} --- Krylov Methods Driver
\clearpage\subsection{psb\_krylov \label{krylov} --- Krylov Methods Driver
Routine}
\addcontentsline{toc}{subsection}{psb\_krylov}
This subroutine is a driver that provides a general interface for all
the Krylov-Subspace family methods implemented in PSBLAS version 2.
+30 -40
View File
@@ -1,10 +1,10 @@
\section{Parallel environment routines}
\label{sec:parenv}
\clearpage\subsection*{psb\_init --- Initializes PSBLAS parallel
\clearpage\subsection{psb\_init --- Initializes PSBLAS parallel
environment}
\addcontentsline{toc}{subsection}{psb\_init}
\begin{verbatim}
call psb_init(icontxt, np, basectxt, ids)
@@ -61,9 +61,8 @@ Specified as: an integer variable.
\end{enumerate}
\clearpage\subsection*{psb\_info --- Return information about PSBLAS parallel
\clearpage\subsection{psb\_info --- Return information about PSBLAS parallel
environment}
\addcontentsline{toc}{subsection}{psb\_info}
\begin{verbatim}
call psb_info(icontxt, iam, np)
@@ -109,9 +108,8 @@ Specified as: an integer variable. \
\end{enumerate}
\clearpage\subsection*{psb\_exit --- Exit from PSBLAS parallel
\clearpage\subsection{psb\_exit --- Exit from PSBLAS parallel
environment}
\addcontentsline{toc}{subsection}{psb\_exit}
\begin{verbatim}
call psb_exit(icontxt)
@@ -153,14 +151,13 @@ 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\subsection{psb\_get\_mpi\_comm --- Get the MPI communicator}
\begin{verbatim}
call psb_get_mpicomm(icontxt, icomm)
icomm = psb_get_mpi_comm(icontxt)
\end{verbatim}
This subroutine returns the MPI communicator associated with a PSBLAS context
This function returns the MPI communicator associated with a PSBLAS context
\begin{description}
\item[Type:] Asynchronous.
\item[\bf On Entry ]
@@ -174,21 +171,23 @@ Specified as: an integer variable.
\begin{description}
\item[\bf On Return]
\item[icomm] The MPI communicator associated with the PSBLAS virtual parallel machine.\\
\item[Function value] The MPI communicator associated with the PSBLAS virtual parallel machine.\\
Scope: {\bf global}.\\
Type: {\bf required}.\\
Intent: {\bf out}.\\
\end{description}
{\par\noindent\large\bfseries Notes}
The subroutine version \verb|psb_get_mpicomm| is still available but
is deprecated.
\clearpage\subsection*{psb\_get\_rank --- Get the MPI rank}
\addcontentsline{toc}{subsection}{psb\_get\_rank}
\clearpage\subsection{psb\_get\_mpi\_rank --- Get the MPI rank}
\begin{verbatim}
call psb_get_rank(rank, icontxt, id)
rank = psb_get_mpi_rank(icontxt, id)
\end{verbatim}
This subroutine returns the MPI rank of the PSBLAS process $id$
This function returns the MPI rank of the PSBLAS process $id$
\begin{description}
\item[Type:] Asynchronous.
\item[\bf On Entry ]
@@ -207,17 +206,19 @@ Specified as: an integer value. $0 \le id \le np-1$\
\begin{description}
\item[\bf On Return]
\item[rank] The MPI rank associated with the PSBLAS process $id$.\\
\item[Funciton value] The MPI rank associated with the PSBLAS process $id$.\\
Scope: {\bf local}.\\
Type: {\bf required}.\\
Intent: {\bf out}.\\
\end{description}
{\par\noindent\large\bfseries Notes}
The subroutine version \verb|psb_get_rank| is still available but is
deprecated.
\clearpage\subsection*{psb\_wtime --- Wall clock timing}
\addcontentsline{toc}{subsection}{psb\_wtime}
\clearpage\subsection{psb\_wtime --- Wall clock timing}
\begin{verbatim}
time = psb_wtime()
@@ -233,9 +234,8 @@ Returned as: a \verb|real(psb_dpk_)| variable.
\end{description}
\clearpage\subsection*{psb\_barrier --- Sinchronization point parallel
\clearpage\subsection{psb\_barrier --- Sinchronization point parallel
environment}
\addcontentsline{toc}{subsection}{psb\_barrier}
\begin{verbatim}
call psb_barrier(icontxt)
@@ -255,8 +255,7 @@ Specified as: an integer variable.
\end{description}
\clearpage\subsection*{psb\_abort --- Abort a computation}
\addcontentsline{toc}{subsection}{psb\_abort}
\clearpage\subsection{psb\_abort --- Abort a computation}
\begin{verbatim}
call psb_abort(icontxt)
@@ -278,8 +277,7 @@ Specified as: an integer variable.
\clearpage\subsection*{psb\_bcast --- Broadcast data}
\addcontentsline{toc}{subsection}{psb\_bcast}
\clearpage\subsection{psb\_bcast --- Broadcast data}
\begin{verbatim}
call psb_bcast(icontxt, dat, root)
@@ -324,8 +322,7 @@ Type, kind, rank and size must agree on all processes.
\end{description}
\clearpage\subsection*{psb\_sum --- Global sum}
\addcontentsline{toc}{subsection}{psb\_sum}
\clearpage\subsection{psb\_sum --- Global sum}
\begin{verbatim}
call psb_sum(icontxt, dat, root)
@@ -379,8 +376,7 @@ Type, kind, rank and size must agree on all processes.
\clearpage\subsection*{psb\_max --- Global maximum}
\addcontentsline{toc}{subsection}{psb\_max}
\clearpage\subsection{psb\_max --- Global maximum}
\begin{verbatim}
call psb_max(icontxt, dat, root)
@@ -433,8 +429,7 @@ 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\subsection{psb\_min --- Global minimum}
\begin{verbatim}
call psb_min(icontxt, dat, root)
@@ -487,8 +482,7 @@ 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\subsection{psb\_amx --- Global maximum absolute value}
\begin{verbatim}
call psb_amx(icontxt, dat, root)
@@ -541,8 +535,7 @@ 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\subsection{psb\_amn --- Global minimum absolute value}
\begin{verbatim}
call psb_amn(icontxt, dat, root)
@@ -595,8 +588,7 @@ 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\_nrm2 --- Global 2-norm reduction}
\addcontentsline{toc}{subsection}{psb\_nrm2}
\clearpage\subsection{psb\_nrm2 --- Global 2-norm reduction}
\begin{verbatim}
call psb_nrm2(icontxt, dat, root)
@@ -656,8 +648,7 @@ Kind, rank and size must agree on all processes.
\clearpage\subsection*{psb\_snd --- Send data}
\addcontentsline{toc}{subsection}{psb\_snd}
\clearpage\subsection{psb\_snd --- Send data}
\begin{verbatim}
call psb_snd(icontxt, dat, dst, m)
@@ -708,8 +699,7 @@ same value on sending and receiving processes.
\end{enumerate}
\clearpage\subsection*{psb\_rcv --- Receive data}
\addcontentsline{toc}{subsection}{psb\_rcv}
\clearpage\subsection{psb\_rcv --- Receive data}
\begin{verbatim}
call psb_rcv(icontxt, dat, src, m)
+6 -13
View File
@@ -23,9 +23,7 @@ backward compatibility
%% package, which will characterize release 2.1 of our library.
\clearpage\subsection*{init --- Initialize a preconditioner}
\addcontentsline{toc}{subsection}{prec\%init}
\clearpage\subsection{init --- Initialize a preconditioner}
\begin{verbatim}
call prec%init(icontxt,ptype, info)
@@ -86,8 +84,7 @@ $ptype$ string as follows\footnote{The string is case-insensitive}:
\end{description}
\clearpage\subsection*{build --- Builds a preconditioner}
\addcontentsline{toc}{subsection}{prec\%build}
\clearpage\subsection{build --- Builds a preconditioner}
\begin{verbatim}
call prec%build(a, desc_a, info[,amold,vmold,imold])
@@ -152,9 +149,8 @@ accelerators.
\clearpage\subsection*{apply --- Preconditioner application
\clearpage\subsection{apply --- Preconditioner application
routine}
\addcontentsline{toc}{subsection}{prec\%apply}
\begin{verbatim}
call prec%apply(x,y,desc_a,info,trans,work)
@@ -207,9 +203,8 @@ An integer value; 0 means no error has been detected.
\clearpage\subsection*{descr --- Prints a description of current
\clearpage\subsection{descr --- Prints a description of current
preconditioner}
\addcontentsline{toc}{subsection}{prec\%descr}
\begin{verbatim}
call prec%descr()
@@ -240,9 +235,8 @@ all processes will print. Default: 0.
\clearpage\subsection*{clone --- clone current
\clearpage\subsection{clone --- clone current
preconditioner}
\addcontentsline{toc}{subsection}{clone}
\begin{verbatim}
call prec%clone(precout,info)
\end{verbatim}
@@ -264,8 +258,7 @@ Scope: {\bf local}.\\
\end{description}
\clearpage\subsection*{free --- Free a preconditioner}
\addcontentsline{toc}{subsection}{prec\%free}
\clearpage\subsection{free --- Free a preconditioner}
\begin{verbatim}
call prec%free(info)
+16 -32
View File
@@ -5,8 +5,7 @@
% DENSE MATRIX SUM
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\clearpage\subsection*{psb\_geaxpby --- General Dense Matrix Sum}
\addcontentsline{toc}{subsection}{psb\_geaxpby}
\clearpage\subsection{psb\_geaxpby --- General Dense Matrix Sum}
This subroutine is an interface to the computational kernel for
dense matrix sum:
@@ -111,8 +110,7 @@ An integer value; 0 means no error has been detected.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\clearpage\subsection*{psb\_gedot --- Dot Product}
\addcontentsline{toc}{subsection}{psb\_gedot}
\clearpage\subsection{psb\_gedot --- Dot Product}
This function computes dot product between two vectors $x$ and
$y$.\\
@@ -229,8 +227,7 @@ An integer value; 0 means no error has been detected.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\clearpage\subsection*{psb\_gedots --- Generalized Dot Product}
\addcontentsline{toc}{subsection}{psb\_gedots}
\clearpage\subsection{psb\_gedots --- Generalized Dot Product}
This subroutine computes a series of dot products among the columns of
two dense matrices $x$ and $y$:
@@ -303,8 +300,7 @@ An integer value; 0 means no error has been detected.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\clearpage\subsection*{psb\_normi --- Infinity-Norm of Vector}
\addcontentsline{toc}{subsection}{psb\_normi}
\clearpage\subsection{psb\_normi --- Infinity-Norm of Vector}
This function computes
the infinity-norm of a vector $x$.\\
@@ -407,8 +403,7 @@ An integer value; 0 means no error has been detected.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\clearpage\subsection*{psb\_geamaxs --- Generalized Infinity Norm}
\addcontentsline{toc}{subsection}{psb\_geamaxs}
\clearpage\subsection{psb\_geamaxs --- Generalized Infinity Norm}
This subroutine computes a series of infinity norms on the columns of
a dense matrix $x$:
@@ -469,8 +464,7 @@ An integer value; 0 means no error has been detected.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\clearpage\subsection*{psb\_norm1 --- 1-Norm of Vector}
\addcontentsline{toc}{subsection}{psb\_norm1}
\clearpage\subsection{psb\_norm1 --- 1-Norm of Vector}
This function computes the 1-norm of a vector $x$.\\
If $x$ is a real vector
@@ -557,8 +551,7 @@ An integer value; 0 means no error has been detected.
\end{enumerate}
\clearpage\subsection*{psb\_geasums --- Generalized 1-Norm of Vector}
\addcontentsline{toc}{subsection}{psb\_geasums}
\clearpage\subsection{psb\_geasums --- Generalized 1-Norm of Vector}
This subroutine computes a series of 1-norms on the columns of
a dense matrix $x$:
@@ -631,8 +624,7 @@ An integer value; 0 means no error has been detected.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\clearpage\subsection*{psb\_norm2 --- 2-Norm of Vector}
\addcontentsline{toc}{subsection}{psb\_norm2}
\clearpage\subsection{psb\_norm2 --- 2-Norm of Vector}
This function computes the 2-norm of a vector $x$.\\
If $x$ is a real vector
@@ -730,8 +722,7 @@ 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\subsection{psb\_genrm2s --- Generalized 2-Norm of Vector}
This subroutine computes a series of 2-norms on the columns of
a dense matrix $x$:
@@ -798,8 +789,7 @@ An integer value; 0 means no error has been detected.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\clearpage\subsection*{psb\_norm1 --- 1-Norm of Sparse Matrix}
\addcontentsline{toc}{subsection}{psb\_norm1}
\clearpage\subsection{psb\_norm1 --- 1-Norm of Sparse Matrix}
This function computes the 1-norm of a matrix $A$:\\
@@ -863,8 +853,7 @@ An integer value; 0 means no error has been detected.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\clearpage\subsection*{psb\_normi --- Infinity Norm of Sparse Matrix}
\addcontentsline{toc}{subsection}{psb\_normi}
\clearpage\subsection{psb\_normi --- Infinity Norm of Sparse Matrix}
This function computes the infinity-norm of a matrix $A$:\\
@@ -928,9 +917,8 @@ An integer value; 0 means no error has been detected.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\clearpage\subsection*{psb\_spmm --- Sparse Matrix by Dense Matrix
\clearpage\subsection{psb\_spmm --- Sparse Matrix by Dense Matrix
Product}
\addcontentsline{toc}{subsection}{psb\_spmm}
This subroutine computes the Sparse Matrix by Dense Matrix Product:
@@ -1081,8 +1069,7 @@ An integer value; 0 means no error has been detected.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\clearpage\subsection*{psb\_spsm --- Triangular System Solve}
\addcontentsline{toc}{subsection}{psb\_spsm}
\clearpage\subsection{psb\_spsm --- Triangular System Solve}
This subroutine computes the Triangular System Solve:
@@ -1251,8 +1238,7 @@ An integer value; 0 means no error has been detected.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\clearpage\subsection*{psb\_gemlt --- Entrywise Product}
\addcontentsline{toc}{subsection}{psb\_gemlt}
\clearpage\subsection{psb\_gemlt --- Entrywise Product}
This function computes the entrywise product between two vectors $x$ and
$y$
@@ -1320,8 +1306,7 @@ psb_gemlt(x, y, desc_a, info)
An integer value; 0 means no error has been detected.
\end{description}
\clearpage\subsection*{psb\_gediv --- Entrywise Division}
\addcontentsline{toc}{subsection}{psb\_gediv}
\clearpage\subsection{psb\_gediv --- Entrywise Division}
This function computes the entrywise division between two vectors $x$ and
$y$
@@ -1394,8 +1379,7 @@ psb_gediv(x, y, desc_a, info, [flag)
An integer value; 0 means no error has been detected.
\end{description}
\clearpage\subsection*{psb\_geinv --- Entrywise Inversion}
\addcontentsline{toc}{subsection}{psb\_geinv}
\clearpage\subsection{psb\_geinv --- Entrywise Inversion}
This function computes the entrywise inverse of a vector $x$ and puts it into
$y$
+58 -66
View File
@@ -5,8 +5,7 @@
%
%% psb_cdall %%
%
\subsection*{psb\_cdall --- Allocates a communication descriptor}
\addcontentsline{toc}{subsection}{psb\_cdall}
\subsection{psb\_cdall --- Allocates a communication descriptor}
\begin{verbatim}
call psb_cdall(icontxt, desc_a, info,mg=mg,parts=parts)
@@ -196,9 +195,8 @@ An integer value; 0 means no error has been detected.
%
%% psb_cdins %%
%
\clearpage\subsection*{psb\_cdins --- Communication descriptor insert
\clearpage\subsection{psb\_cdins --- Communication descriptor insert
routine}
\addcontentsline{toc}{subsection}{psb\_cdins}
\begin{verbatim}
call psb_cdins(nz, ia, ja, desc_a, info [,ila,jla])
@@ -292,9 +290,8 @@ nor the end vertex belong to the current process.
%
%% psb_cdasb %%
%
\clearpage\subsection*{psb\_cdasb --- Communication descriptor assembly
\clearpage\subsection{psb\_cdasb --- Communication descriptor assembly
routine}
\addcontentsline{toc}{subsection}{psb\_cdasb}
\begin{verbatim}
call psb_cdasb(desc_a, info [, mold])
@@ -334,14 +331,20 @@ An integer value; 0 means no error has been detected.
\item On exit from this routine the descriptor is in the assembled
state.
\end{enumerate}
This call will set up all the necessary information for the halo data
exchanges. In doing so, the library will need to identify the set of
processes owning the halo indices through the use of the
\verb|desc%fnd_owner()| method; the owning processes are the
topological neighbours of the calling process. If the user has some
background information on the processes that are neighbours of the
current one, it is possible to specify explicitly the list of adjacent
processes with a call to \verb|desc%set_p_adjcncy(list)|; this will
speed up the subsequent call to \verb|psb_cdasb|.
%
%% psb_cdcpy %%
%
\clearpage\subsection*{psb\_cdcpy --- Copies a communication descriptor}
\addcontentsline{toc}{subsection}{psb\_cdcpy}
\clearpage\subsection{psb\_cdcpy --- Copies a communication descriptor}
\begin{verbatim}
call psb_cdcpy(desc_in, desc_out, info)
@@ -376,8 +379,7 @@ 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\subsection{psb\_cdfree --- Frees a communication descriptor}
\begin{verbatim}
call psb_cdfree(desc_a, info)
@@ -407,9 +409,8 @@ An integer value; 0 means no error has been detected.
%
%% psb_cdcpy %%
%
\clearpage\subsection*{psb\_cdbldext --- Build an extended communication
\clearpage\subsection{psb\_cdbldext --- Build an extended communication
descriptor}
\addcontentsline{toc}{subsection}{psb\_cdbldext}
\begin{verbatim}
call psb_cdbldext(a,desc_a,nl,desc_out, info, extype)
@@ -477,9 +478,9 @@ An integer value; 0 means no error has been detected.
%% %
%% %% psb_cdren %%
%% %
%% \subsection*{psb\_cdren --- Applies a renumeration to a
%% \subsection{psb\_cdren --- Applies a renumeration to a
%% communication descriptor}
%% \addcontentsline{toc}{subsection}{psb\_cdren}
%%% \addcontentsline{toc}{subsection}{psb\_cdren}
%% \syntax{call psb\_cdren}{trans, iperm, desc\_a, info}
@@ -514,8 +515,7 @@ An integer value; 0 means no error has been detected.
%
%% psb_descprt %%
%
%% \subsection*{psb\_cdprt --- Prints a descriptor}
%%\addcontentsline{toc}{subsection}{psb\_cdprt}
%% \subsection{psb\_cdprt --- Prints a descriptor}
%% \syntax{call psb\_cdprt}{iout, desc\_a, glob, short}
@@ -544,8 +544,7 @@ 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\subsection{psb\_spall --- Allocates a sparse matrix}
\begin{verbatim}
call psb_spall(a, desc_a, info, nnz)
@@ -596,9 +595,8 @@ An integer value; 0 means no error has been detected.
%
%% psb_spins %%
%
\clearpage\subsection*{psb\_spins --- Insert a set of coefficients into a sparse
\clearpage\subsection{psb\_spins --- Insert a set of coefficients into a sparse
matrix}
\addcontentsline{toc}{subsection}{psb\_spins}
\begin{verbatim}
call psb_spins(nz, ia, ja, val, a, desc_a, info [,local])
@@ -723,8 +721,7 @@ 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\subsection{psb\_spasb --- Sparse matrix assembly routine}
\begin{verbatim}
call psb_spasb(a, desc_a, info, afmt, upd, dupl, mold)
@@ -798,9 +795,8 @@ An integer value; 0 means no error has been detected.
%% %
%% %% psb_spcnv %%
%% %
%% \subsection*{psb\_spcnv --- Converts a sparse matrix storage
%% \subsection{psb\_spcnv --- Converts a sparse matrix storage
%% format}
%%\addcontentsline{toc}{subsection}{psb\_spcnv}
%% \syntax{call psb\_spcnv}{a, b, desc\_a, info}
@@ -833,8 +829,7 @@ 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\subsection{psb\_spfree --- Frees a sparse matrix}
\begin{verbatim}
call psb_spfree(a, desc_a, info)
@@ -870,9 +865,8 @@ An integer value; 0 means no error has been detected.
%
%% psb_sprn %%
%
\clearpage\subsection*{psb\_sprn --- Reinit sparse matrix structure for psblas
\clearpage\subsection{psb\_sprn --- Reinit sparse matrix structure for psblas
routines.}
\addcontentsline{toc}{subsection}{psb\_sprn}
\begin{verbatim}
call psb_sprn(a, decsc_a, info, clear)
@@ -914,8 +908,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}
%% \subsection{psb\_spupdate --- Updates a sparse matrix.}
%% \syntax{call psb\_spupdate}{a, ia, ja, blck, desc\_a, info, ix, jx, updflag}
@@ -929,9 +922,8 @@ An integer value; 0 means no error has been detected.
%% %
%% %% psb_csrp %%
%% %
%% \subsection*{psb\_csrp --- Applies a right permutation to a sparse
%% \subsection{psb\_csrp --- Applies a right permutation to a sparse
%% matrix}
%%\addcontentsline{toc}{subsection}{psb\_csrp}
%% \syntax{call psb\_csrp}{trans, iperm, a, info}
@@ -961,8 +953,8 @@ 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\subsection{psb\_geall --- Allocates a dense matrix}
%\addcontentsline{toc}{subsection}{psb\_geall}
\begin{verbatim}
call psb_geall(x, desc_a, info, n, lb)
@@ -1009,8 +1001,8 @@ 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\subsection{psb\_geins --- Dense matrix insertion routine}
%\addcontentsline{toc}{subsection}{psb\_geins}
\begin{verbatim}
call psb_geins(m, irw, val, x, desc_a, info [,dupl,local])
@@ -1082,8 +1074,8 @@ 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\subsection{psb\_geasb --- Assembly a dense matrix}
%\addcontentsline{toc}{subsection}{psb\_geasb}
\begin{verbatim}
call psb_geasb(x, desc_a, info, mold)
@@ -1122,8 +1114,8 @@ 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\subsection{psb\_gefree --- Frees a dense matrix}
%\addcontentsline{toc}{subsection}{psb\_gefree}
\begin{verbatim}
call psb_gefree(x, desc_a, info)
@@ -1160,9 +1152,9 @@ An integer value; 0 means no error has been detected.
%
%% psb_gelp %%
%
\clearpage\subsection*{psb\_gelp --- Applies a left permutation to a dense
\clearpage\subsection{psb\_gelp --- Applies a left permutation to a dense
matrix}
\addcontentsline{toc}{subsection}{psb\_gelp}
%\addcontentsline{toc}{subsection}{psb\_gelp}
\begin{verbatim}
call psb_gelp(trans, iperm, x, info)
@@ -1201,9 +1193,9 @@ 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\subsection{psb\_glob\_to\_loc --- Global to local indices
convertion}
\addcontentsline{toc}{subsection}{psb\_glob\_to\_loc}
%\addcontentsline{toc}{subsection}{psb\_glob\_to\_loc}
\begin{verbatim}
call psb_glob_to_loc(x, y, desc_a, info, iact,owned)
@@ -1269,9 +1261,9 @@ An integer value; 0 means no error has been detected.
\end{enumerate}
\clearpage\subsection*{psb\_loc\_to\_glob --- Local to global indices
\clearpage\subsection{psb\_loc\_to\_glob --- Local to global indices
conversion}
\addcontentsline{toc}{subsection}{psb\_loc\_to\_glob}
%\addcontentsline{toc}{subsection}{psb\_loc\_to\_glob}
\begin{verbatim}
call psb_loc_to_glob(x, y, desc_a, info, iact)
@@ -1326,8 +1318,8 @@ 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\subsection{psb\_is\_owned --- }
%\addcontentsline{toc}{subsection}{psb\_is\_owned }
\begin{verbatim}
call psb_is_owned(x, desc_a)
@@ -1366,8 +1358,8 @@ Intent: {\bf out}.\\
\end{enumerate}
\clearpage\subsection*{psb\_owned\_index --- }
\addcontentsline{toc}{subsection}{psb\_owned\_index }
\clearpage\subsection{psb\_owned\_index --- }
%\addcontentsline{toc}{subsection}{psb\_owned\_index }
\begin{verbatim}
call psb_owned_index(y, x, desc_a, info)
@@ -1418,8 +1410,8 @@ An integer value; 0 means no error has been detected.
\end{enumerate}
\clearpage\subsection*{psb\_is\_local --- }
\addcontentsline{toc}{subsection}{psb\_is\_local }
\clearpage\subsection{psb\_is\_local --- }
%\addcontentsline{toc}{subsection}{psb\_is\_local }
\begin{verbatim}
call psb_is_local(x, desc_a)
@@ -1457,8 +1449,8 @@ Intent: {\bf out}.\\
indices
\end{enumerate}
\clearpage\subsection*{psb\_local\_index --- }
\addcontentsline{toc}{subsection}{psb\_local\_index }
\clearpage\subsection{psb\_local\_index --- }
%\addcontentsline{toc}{subsection}{psb\_local\_index }
\begin{verbatim}
call psb_local_index(y, x, desc_a, info)
@@ -1513,9 +1505,9 @@ An integer value; 0 means no error has been detected.
%
%% psb_ins %%
%
\clearpage\subsection*{psb\_get\_boundary --- Extract list of boundary
\clearpage\subsection{psb\_get\_boundary --- Extract list of boundary
elements}
\addcontentsline{toc}{subsection}{psb\_get\_boundary}
%\addcontentsline{toc}{subsection}{psb\_get\_boundary}
\begin{verbatim}
call psb_get_boundary(bndel, desc, info)
@@ -1556,9 +1548,9 @@ 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
\clearpage\subsection{psb\_get\_overlap --- Extract list of overlap
elements}
\addcontentsline{toc}{subsection}{psb\_get\_overlap}
%\addcontentsline{toc}{subsection}{psb\_get\_overlap}
\begin{verbatim}
call psb_get_overlap(ovrel, desc, info)
@@ -1600,9 +1592,9 @@ An integer value; 0 means no error has been detected.
\clearpage\subsection*{psb\_sp\_getrow --- Extract row(s) from a sparse
\clearpage\subsection{psb\_sp\_getrow --- Extract row(s) from a sparse
matrix}
\addcontentsline{toc}{subsection}{psb\_sp\_getrow}
%\addcontentsline{toc}{subsection}{psb\_sp\_getrow}
\begin{verbatim}
call psb_sp_getrow(row, a, nz, ia, ja, val, info, &
@@ -1694,8 +1686,8 @@ An integer value; 0 means no error has been detected.
\clearpage\subsection*{psb\_sizeof --- Memory occupation}
\addcontentsline{toc}{subsection}{psb\_sizeof}
\clearpage\subsection{psb\_sizeof --- Memory occupation}
%\addcontentsline{toc}{subsection}{psb\_sizeof}
This function computes the memory occupation of a PSBLAS object.
@@ -1733,8 +1725,8 @@ Returned as: an \verb|integer(psb_long_int_k_)| number.
\end{description}
\clearpage\subsection*{Sorting utilities --- }
\addcontentsline{toc}{subsection}{Sorting utilities}
\clearpage\subsection{Sorting utilities --- }
%\addcontentsline{toc}{subsection}{Sorting utilities}
{\par\noindent\large\bfseries psb\_msort --- Sorting by the Merge-sort
algorithm}
+4 -4
View File
@@ -25,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.6.0)
/Title (Parallel Sparse BLAS V. 3.7.0)
/Subject (Parallel Sparse Basic Linear Algebra Subroutines)
/Keywords (Computer Science Linear Algebra Fluid Dynamics Parallel Linux MPI PSBLAS Iterative Solvers Preconditioners)
/Creator (pdfLaTeX)
@@ -88,7 +88,7 @@
\begin{document}
\pdfbookmark{PSBLAS-v3.6.0 User's Guide}{title}
\pdfbookmark{PSBLAS-v3.7.0 User's Guide}{title}
\lstset{language=Fortran}
\newlength{\centeroffset}
\setlength{\centeroffset}{-0.5\oddsidemargin}
@@ -98,7 +98,7 @@
\vspace*{\stretch{1}}
\noindent\hspace*{\centeroffset}\makebox[0pt][l]{\begin{minipage}{\textwidth}
\flushright
{\Huge\bfseries PSBLAS 3.6.0 User's guide
{\Huge\bfseries PSBLAS 3.7.0 User's guide
}
\noindent\rule[-1ex]{\textwidth}{5pt}\\[2.5ex]
\hfill\emph{\Large A reference guide for the Parallel Sparse BLAS library}
@@ -110,7 +110,7 @@
{\bfseries
by Salvatore Filippone\\
and Alfredo Buttari}\\
Dec 1st, 2018
Jan 7th, 2020
\end{minipage}}
%\addtolength{\textwidth}{\centeroffset}
+2 -15
View File
@@ -8,7 +8,6 @@
bookmarksnumbered=true,
bookmarksopen=false,
plainpages=false,
pdfpagelabels,
colorlinks,
linkcolor=blue]{hyperref}
\usepackage{ifthen}
@@ -21,18 +20,6 @@
%\setboolean{mtc}{true}
\pdfoutput=0
% \relax
% \pdfcompresslevel=0 %-- 0 = none, 9 = best
% \pdfinfo{ %-- Info dictionary of PDF output /Author (Alfredo Buttari)
% /Title (Parallel Sparse BLAS V. 3.6.0)
% /Subject (Parallel Sparse Basic Linear Algebra Subroutines)
% /Keywords (Computer Science Linear Algebra Fluid Dynamics Parallel Linux MPI PSBLAS Iterative Solvers Preconditioners)
% /Creator (pdfLaTeX)
% /Producer ($Id: userguide.tex 1978 2007-10-19 14:51:12Z sfilippo $)
% }
% \pdfcatalog{ %-- Catalog dictionary of PDF output.
% /URI (http://ce.uniroma2.it/psblas)
% }
\newcounter{subroutine}[subsection]
\newcounter{example}[subroutine]
@@ -93,9 +80,9 @@
Alfredo Buttari } \\
%\\[10ex]
%\today
Software version: 3.6.0\\
Software version: 3.7.0\\
%\today
Dec 1st, 2018
Jan 7th, 2020
\cleardoublepage
\begingroup
\renewcommand*{\thepage}{toc}
+6 -12
View File
@@ -9,9 +9,8 @@ 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\subsection{ hb\_read --- Read a sparse matrix from a file in the
Harwell--Boeing format}
\addcontentsline{toc}{subsection}{hb\_read}
\begin{lstlisting}
@@ -53,9 +52,8 @@ An integer value; 0 means no error has been detected.
\clearpage\subsection*{hb\_write --- Write a sparse matrix to a file
\clearpage\subsection{hb\_write --- Write a sparse matrix to a file
in the Harwell--Boeing format}
\addcontentsline{toc}{subsection}{hb\_write}
\begin{lstlisting}
@@ -107,9 +105,8 @@ 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\subsection{mm\_mat\_read --- Read a sparse matrix from a
file in the MatrixMarket format}
\addcontentsline{toc}{subsection}{mm\_mat\_read}
\begin{lstlisting}
call mm_mat_read(a, iret, iunit, filename)
@@ -139,9 +136,8 @@ An integer value; 0 means no error has been detected.
\end{description}
\clearpage\subsection*{mm\_array\_read --- Read a dense array from a
\clearpage\subsection{mm\_array\_read --- Read a dense array from a
file in the MatrixMarket format}
\addcontentsline{toc}{subsection}{mm\_array\_read}
\begin{lstlisting}
call mm_array_read(b, iret, iunit, filename)
@@ -174,9 +170,8 @@ An integer value; 0 means no error has been detected.
\clearpage\subsection*{mm\_mat\_write --- Write a sparse matrix to a
\clearpage\subsection{mm\_mat\_write --- Write a sparse matrix to a
file in the MatrixMarket format}
\addcontentsline{toc}{subsection}{mm\_mat\_write}
\begin{lstlisting}
@@ -210,9 +205,8 @@ An integer value; 0 means no error has been detected.
\end{description}
\clearpage\subsection*{mm\_array\_write --- Write a dense array from a
\clearpage\subsection{mm\_array\_write --- Write a dense array from a
file in the MatrixMarket format}
\addcontentsline{toc}{subsection}{mm\_array\_write}
\begin{lstlisting}
call mm_array_write(b, iret, iunit, filename)