mirror of
https://github.com/sfilippone/psblas3.git
synced 2026-10-17 11:22:09 +00:00
psblas3:
Documentation changes. We have barely begun.....
This commit is contained in:
+62
-183
@@ -33,22 +33,55 @@ it is only used for the \verb|psb_sizeof| utility.
|
||||
All the general matrix informations and elements to be
|
||||
exchanged among processes are stored within a data structure of the
|
||||
type \hypertarget{descdata}{{\tt psb\_desc\_type}}.
|
||||
Every structure of this type is associated to a sparse matrix, it
|
||||
contains data about general matrix informations and elements to be
|
||||
exchanged among processes.
|
||||
Every structure of this type is associated with a discretization
|
||||
pattern and enables data communications and other operations that are
|
||||
necessary for implementing the various algorithms of interest to us.
|
||||
|
||||
It is not necessary for the user to know the internal structure of
|
||||
\verb|psb_desc_type|, it is set in a transparent mode by the tools
|
||||
routines of Sec.~\ref{sec:toolsrout}, and its fields may be accessed
|
||||
if necessary via the routines of sec.~\ref{sec:dataquery};
|
||||
nevertheless we include a description for the curious
|
||||
reader:
|
||||
The data structure itself \verb|psb_desc_type| can be treated as an
|
||||
opaque object handled via the tools routines of
|
||||
Sec.~\ref{sec:toolsrout} and~\ref{sec:dataquery};
|
||||
nevertheless we include here a description for the curious
|
||||
reader.
|
||||
|
||||
First we describe the \verb|psb_indx_map| type. This is a data
|
||||
structure that keeps track of a certain number of basic issues such
|
||||
as:
|
||||
\begin{itemize}
|
||||
\item The value of the communication/MPI context;
|
||||
\item The number of indices in the index space, i.e. global number of
|
||||
rows and columns of a sparse matrix;
|
||||
\item The local set of indices, including:
|
||||
\begin{itemize}
|
||||
\item The number of local indices (and local rows);
|
||||
\item The number of halo indices (and therefore local columns);
|
||||
\item The global indices corresponding to the local ones.
|
||||
\end{itemize}
|
||||
\end{itemize}
|
||||
There are many different schemes for storing these data; therefore
|
||||
there are a number of types extending the base one, and the descriptor
|
||||
structure holds a polymorphic object whose dynamic type can be any of
|
||||
the extended types.
|
||||
The methods associated with this data type answer the following
|
||||
queries:
|
||||
\begin{itemize}
|
||||
\item For a given set of local indices, find the corresponding indices
|
||||
in the global numbering;
|
||||
\item For a given set of global indices, find the corresponding
|
||||
indices in the local numbering, if any, or return an invalid
|
||||
\item Add a global index to the set of halo indices;
|
||||
\item Find the process owner of each member of a set of global
|
||||
indices.
|
||||
\end{itemize}
|
||||
All methods but the last are purely local; the last method potentially
|
||||
requires communication among processes, and thus is a synchronous
|
||||
method. The choice of a specific dynamic type for the index map is
|
||||
made at the time the descriptor is initially allocated, according to
|
||||
the mode of initialization (see also~\ref{sec:toolsrout}).
|
||||
|
||||
The descriptor contents are as follows:
|
||||
\begin{description}
|
||||
\item[{\bf matrix\_data}] includes general information about matrix and
|
||||
process grid, such as the communication context, the size of the
|
||||
global matrix, the size of the portion of matrix stored on the current
|
||||
process, and so on.
|
||||
Specified as: an allocatable integer array of dimension \verb|psb_mdata_size_|.
|
||||
\item[{\bf indxmap}] A polymorphic variable of a type that is any
|
||||
extension of the indx\_map type described above. \\
|
||||
\item[{\bf halo\_index}] A list of the halo and boundary elements for
|
||||
the current process to be exchanged with other processes; for each
|
||||
processes with which it is necessary to communicate:
|
||||
@@ -88,26 +121,23 @@ ecurrent process:
|
||||
\item Index of a ``master'' process:
|
||||
\end{enumerate}
|
||||
Specified as: an allocatable integer array of rank two.
|
||||
\item[{\bf loc\_to\_glob}] each element $i$ of this array contains
|
||||
global identifier of the local variable $i$.\\
|
||||
Specified as: an allocatable integer array of rank one.
|
||||
\item[{\bf glob\_to\_loc, glb\_lc, hashv}] Contain a mapping from
|
||||
global to local indices.
|
||||
\item [{\bf bnd\_elem}] A list of all boundary points, i.e. points
|
||||
that have a connection with other processes.
|
||||
\end{description}
|
||||
The Fortran~95 definition for \verb|psb_desc_type| structures is
|
||||
The Fortran~2003 declaration for \verb|psb_desc_type| structures is
|
||||
as follows:
|
||||
\begin{figure}[h!]
|
||||
\begin{Sbox}
|
||||
\begin{minipage}[tl]{0.9\textwidth}
|
||||
\begin{verbatim}
|
||||
type psb_desc_type
|
||||
integer, allocatable :: matrix_data(:), halo_index(:)
|
||||
integer, allocatable :: ext_index(:)
|
||||
integer, allocatable :: ovrlap_elem(:,:)
|
||||
integer, allocatable :: ovrlap_index(:)
|
||||
integer, allocatable :: ovr_mst_idx(:)
|
||||
integer, allocatable :: loc_to_glob(:), glob_to_loc(:)
|
||||
integer, allocatable :: hashv(:), glb_lc(:,:)
|
||||
class(psb_indx_map), allocatable :: indxmap
|
||||
integer, allocatable :: halo_index(:)
|
||||
integer, allocatable :: ext_index(:)
|
||||
integer, allocatable :: ovrlap_index(:)
|
||||
integer, allocatable :: ovrlap_elem(:,:)
|
||||
integer, allocatable :: ovr_mst_idx(:)
|
||||
integer, allocatable :: bnd_elem(:)
|
||||
end type psb_desc_type
|
||||
\end{verbatim}
|
||||
\end{minipage}
|
||||
@@ -130,14 +160,7 @@ state, which can take the following values:
|
||||
the associated sparse matrix, such as matrix-vector products, are
|
||||
only possible in this state.
|
||||
\end{description}
|
||||
The global to local index mapping may be stored in two different
|
||||
formats: the first is simpler but more expensive, as it requires on
|
||||
each process an amount of memory proportional to the global size of
|
||||
the index space; the second is more complex, but only requires memory
|
||||
proportional to the local index space size. The choice is made at the
|
||||
time of the initialization according to a threshold; this threshold
|
||||
may be queried and set using the functions in
|
||||
sec.~\ref{sec:dataquery}.
|
||||
|
||||
|
||||
\subsubsection{Named Constants}
|
||||
\label{sec:cd_constants}
|
||||
@@ -176,10 +199,12 @@ sec.~\ref{sec:dataquery}.
|
||||
\subsection{Sparse Matrix data structure}
|
||||
\label{sec:spmat}
|
||||
The \hypertarget{spdata}{{\tt psb\_spmat\_type}} data structure
|
||||
contains all information about local portion of the sparse matrix and
|
||||
contains all information about the local portion of the sparse matrix and
|
||||
its storage mode. Most of these fields are set by the tools
|
||||
routines when inserting a new sparse matrix; the user needs only
|
||||
choose, if he/she so whishes, a specific matrix storage mode. \\
|
||||
choose, if he/she so whishes, a specific matrix storage mode.
|
||||
|
||||
The
|
||||
\begin{description}
|
||||
\item[{\bf aspk}] Contains values of the local distributed sparse
|
||||
matrix.\\
|
||||
@@ -335,153 +360,7 @@ contains all information about local portion of the sparse matrix and
|
||||
its storage mode. Most of these fields are set by the tools
|
||||
routines when inserting a new sparse matrix; the user needs only
|
||||
choose, if he/she so whishes, a specific matrix storage mode. \\
|
||||
\begin{description}
|
||||
\item[{\bf aspk}] Contains values of the local distributed sparse
|
||||
matrix.\\
|
||||
Specified as: an allocatable array of rank one of type corresponding
|
||||
to matrix entries type.
|
||||
\item[{\bf ia1}] Holds integer information on distributed sparse
|
||||
matrix. Actual information will depend on data format used.\\
|
||||
Specified as: an allocatable integer array of rank one.
|
||||
\item[{\bf ia2}] Holds integer information on distributed sparse
|
||||
matrix. Actual information will depend on data format used.\\
|
||||
Specified as: an allocatable integer array of rank one.
|
||||
\item[{\bf infoa}] On entry can hold auxiliary information on distributed sparse
|
||||
matrix. Actual information will depend on data format used.\\
|
||||
Specified as: an integer array of length \verb|psb_ifasize_|.
|
||||
\item[{\bf fida}] Defines the format of the distributed sparse matrix.\\
|
||||
Specified as: a string of length 5
|
||||
\item[{\bf descra}] Describe the characteristic of the distributed sparse matrix.\\
|
||||
Specified as: array of character of length 9.
|
||||
\item[{\bf pl}] Specifies the local row permutation of distributed sparse
|
||||
matrix. If pl(1) is equal to 0, then there isn't row permutation.\\
|
||||
Specified as: an allocatable integer array of dimension equal to number of local row (matrix\_data[psb\_n\_row\_\hbox{]})
|
||||
\item[{\bf pr}] Specifies the local column permutation of distributed sparse
|
||||
matrix. If PR(1) is equal to 0, then there isn't columnm permutation.\\
|
||||
Specified as: an allocatable integer array of dimension equal to number of
|
||||
local row (matrix\_data[psb\_n\_col\_\hbox{]})
|
||||
\item[{\bf m}] Number of rows; if row indices are stored explicitly,
|
||||
as in Coordinate Storage, should be greater than or equal to the
|
||||
maximum row index actually present in the sparse matrix.
|
||||
Specified as: integer variable.
|
||||
\item[{\bf k}] Number of columns; if column indices are stored explicitly,
|
||||
as in Coordinate Storage or Compressed Sparse Rows, should be greater
|
||||
than or equal to the maximum column index actually present in the sparse matrix.
|
||||
Specified as: integer variable.
|
||||
\end{description}
|
||||
The Fortran~95 interface for distributed sparse matrices containing
|
||||
double precision real entries is defined as shown in
|
||||
figure~\ref{fig:spmattype}. The definitions for single precision and
|
||||
complex data are identical except for the \verb|real| declaration and
|
||||
for the kind type parameter.
|
||||
\begin{figure}[h!]
|
||||
\begin{Sbox}
|
||||
\begin{minipage}[tl]{0.85\textwidth}
|
||||
\begin{verbatim}
|
||||
type psb_sspmat_type
|
||||
integer :: m, k
|
||||
character :: fida(5)
|
||||
character :: descra(10)
|
||||
integer :: infoa(psb_ifa_size_)
|
||||
real(psb_spk_), allocatable :: aspk(:)
|
||||
integer, allocatable :: ia1(:), ia2(:)
|
||||
integer, allocatable :: pr(:), pl(:)
|
||||
end type psb_sspmat_type
|
||||
|
||||
type psb_dspmat_type
|
||||
integer :: m, k
|
||||
character :: fida(5)
|
||||
character :: descra(10)
|
||||
integer :: infoa(psb_ifa_size_)
|
||||
real(psb_dpk_), allocatable :: aspk(:)
|
||||
integer, allocatable :: ia1(:), ia2(:)
|
||||
integer, allocatable :: pr(:), pl(:)
|
||||
end type psb_dspmat_type
|
||||
|
||||
type psb_cspmat_type
|
||||
integer :: m, k
|
||||
character :: fida(5)
|
||||
character :: descra(10)
|
||||
integer :: infoa(psb_ifa_size_)
|
||||
complex(psb_spk_), allocatable :: aspk(:)
|
||||
integer, allocatable :: ia1(:), ia2(:)
|
||||
integer, allocatable :: pr(:), pl(:)
|
||||
end type psb_cspmat_type
|
||||
|
||||
type psb_zspmat_type
|
||||
integer :: m, k
|
||||
character :: fida(5)
|
||||
character :: descra(10)
|
||||
integer :: infoa(psb_ifa_size_)
|
||||
complex(psb_dpk_), allocatable :: aspk(:)
|
||||
integer, allocatable :: ia1(:), ia2(:)
|
||||
integer, allocatable :: pr(:), pl(:)
|
||||
end type psb_zspmat_type
|
||||
|
||||
\end{verbatim}
|
||||
\end{minipage}
|
||||
\end{Sbox}
|
||||
\setlength{\fboxsep}{8pt}
|
||||
\begin{center}
|
||||
\fbox{\TheSbox}
|
||||
\end{center}
|
||||
\caption{\label{fig:spmattype}
|
||||
The PSBLAS defined data type that
|
||||
contains a sparse matrix.}
|
||||
\end{figure}
|
||||
|
||||
The following two cases are among the most commonly used:
|
||||
\begin{description}
|
||||
\item[fida=``CSR''] Compressed storage by rows. In this case the
|
||||
following should hold:
|
||||
\begin{enumerate}
|
||||
\item \verb|ia2(i)| contains the index of the first element of row
|
||||
\verb|i|; the last element of the sparse matrix is thus stored at
|
||||
index $ia2(m+1)-1$. It should contain \verb|m+1| entries in
|
||||
nondecreasing order (strictly increasing, if there are no empty rows).
|
||||
\item \verb|ia1(j)| contains the column index and \verb|aspk(j)|
|
||||
contains the corresponding coefficient value, for all $ia2(1) \le j
|
||||
\le ia2(m+1)-1$.
|
||||
\end{enumerate}
|
||||
\item[fida=``COO''] Coordinate storage. In this case the following
|
||||
should hold:
|
||||
\begin{enumerate}
|
||||
\item \verb|infoa(1)| contains the number of nonzero elements in the
|
||||
matrix;
|
||||
\item For all $1 \le j \le infoa(1)$, the coefficient, row index and
|
||||
column index are stored into \verb|apsk(j)|, \verb|ia1(j)| and
|
||||
\verb|ia2(j)| respectively.
|
||||
\end{enumerate}
|
||||
\end{description}
|
||||
A sparse matrix has an associated state, which can take the following
|
||||
values:
|
||||
\begin{description}
|
||||
\item[Build:] State entered after the first allocation, and before the
|
||||
first assembly; in this state it is possible to add nonzero entries.
|
||||
\item[Assembled:] State entered after the assembly; computations using
|
||||
the sparse matrix, such as matrix-vector products, are only possible
|
||||
in this state;
|
||||
\item[Update:] State entered after a reinitalization; this is used to
|
||||
handle applications in which the same sparsity pattern is used
|
||||
multiple times with different coefficients. In this state it is only
|
||||
possible to enter coefficients for already existing nonzero entries.
|
||||
\end{description}
|
||||
\subsubsection{Named Constants}
|
||||
\label{sec:sp_constants}
|
||||
\begin{description}
|
||||
%% \item[psb\_nztotreq\_] Request to fetch the total number of nonzeroes
|
||||
%% stored in a sparse matrix
|
||||
%% \item[psb\_nzrowreq\_] Request to fetch the number of nonzeroes in a
|
||||
%% given row in a sparse matrix
|
||||
\item[psb\_dupl\_ovwrt\_] Duplicate coefficients should be overwritten
|
||||
(i.e. ignore duplications)
|
||||
\item[psb\_dupl\_add\_] Duplicate coefficients should be added;
|
||||
\item[psb\_dupl\_err\_] Duplicate coefficients should trigger an error conditino
|
||||
\item[psb\_upd\_dflt\_] Default update strategy for matrix coefficients;
|
||||
\item[psb\_upd\_srch\_] Update strategy based on search into the data structure;
|
||||
\item[psb\_upd\_perm\_] Update strategy based on additional
|
||||
permutation data (see tools routine description).
|
||||
\end{description}
|
||||
|
||||
|
||||
|
||||
|
||||
+34
-55
@@ -1,11 +1,12 @@
|
||||
%!PS-Adobe-2.0 EPSF-2.0
|
||||
%!PS-Adobe-3.0 EPSF-3.0
|
||||
%%Title: psblas.fig
|
||||
%%Creator: fig2dev Version 3.2 Patchlevel 5
|
||||
%%CreationDate: Thu Jul 31 17:37:06 2008
|
||||
%%Creator: fig2dev Version 3.2 Patchlevel 5d
|
||||
%%CreationDate: Thu Dec 15 14:55:15 2011
|
||||
%%For: sfilippo@donald (Salvatore Filippone)
|
||||
%%BoundingBox: 0 0 206 283
|
||||
%%BoundingBox: 0 0 197 215
|
||||
%Magnification: 0.5000
|
||||
%%EndComments
|
||||
%%BeginProlog
|
||||
/$F2psDict 200 dict def
|
||||
$F2psDict begin
|
||||
$F2psDict /mtrx matrix put
|
||||
@@ -44,10 +45,6 @@ $F2psDict /mtrx matrix put
|
||||
/col31 {1.000 0.840 0.000 srgb} bind def
|
||||
|
||||
end
|
||||
save
|
||||
newpath 0 283 moveto 0 0 lineto 206 0 lineto 206 283 lineto closepath clip newpath
|
||||
-5.3 289.5 translate
|
||||
1 -1 scale
|
||||
|
||||
/cp {closepath} bind def
|
||||
/ef {eofill} bind def
|
||||
@@ -83,10 +80,22 @@ newpath 0 283 moveto 0 0 lineto 206 0 lineto 206 283 lineto closepath clip newpa
|
||||
/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
|
||||
/$F2psEnd {$F2psEnteredState restore end} def
|
||||
|
||||
/pageheader {
|
||||
save
|
||||
newpath 0 215 moveto 0 0 lineto 197 0 lineto 197 215 lineto closepath clip newpath
|
||||
-5.3 221.5 translate
|
||||
1 -1 scale
|
||||
$F2psBegin
|
||||
10 setmiterlimit
|
||||
0 slj 0 slc
|
||||
0.03150 0.03150 sc
|
||||
} bind def
|
||||
/pagefooter {
|
||||
$F2psEnd
|
||||
restore
|
||||
} bind def
|
||||
%%EndProlog
|
||||
pageheader
|
||||
%
|
||||
% Fig objects follow
|
||||
%
|
||||
@@ -126,36 +135,12 @@ n 2100 2925 m 1845 2925 1845 4020 255 arcto 4 {pop} repeat
|
||||
4680 2925 2100 2925 255 arcto 4 {pop} repeat
|
||||
cp gs col0 s gr
|
||||
% Polyline
|
||||
n 3645 5670 m 3420 5670 3420 6795 225 arcto 4 {pop} repeat
|
||||
3420 7020 5940 7020 225 arcto 4 {pop} repeat
|
||||
6165 7020 6165 5895 225 arcto 4 {pop} repeat
|
||||
6165 5670 3645 5670 225 arcto 4 {pop} repeat
|
||||
cp gs col0 s gr
|
||||
% Polyline
|
||||
n 405 5670 m 180 5670 180 6750 225 arcto 4 {pop} repeat
|
||||
180 6975 2655 6975 225 arcto 4 {pop} repeat
|
||||
2880 6975 2880 5895 225 arcto 4 {pop} repeat
|
||||
2880 5670 405 5670 225 arcto 4 {pop} repeat
|
||||
cp gs col0 s gr
|
||||
% Polyline
|
||||
gs clippath
|
||||
4800 7255 m 4800 7050 l 4740 7050 l 4740 7255 l 4740 7255 l 4770 7105 l 4800 7255 l cp
|
||||
eoclip
|
||||
n 4770 7740 m
|
||||
4770 7065 l gs col0 s gr gr
|
||||
|
||||
% arrowhead
|
||||
15.000 slw
|
||||
n 4800 7255 m 4770 7105 l 4740 7255 l 4770 7225 l 4800 7255 l
|
||||
cp gs 0.00 setgray ef gr col0 s
|
||||
% Polyline
|
||||
7.500 slw
|
||||
n 3825 7785 m 3600 7785 3600 8955 225 arcto 4 {pop} repeat
|
||||
3600 9180 6075 9180 225 arcto 4 {pop} repeat
|
||||
6300 9180 6300 8010 225 arcto 4 {pop} repeat
|
||||
6300 7785 3825 7785 225 arcto 4 {pop} repeat
|
||||
cp gs col0 s gr
|
||||
% Polyline
|
||||
n 2880 6300 m
|
||||
3420 6300 l gs col0 s gr
|
||||
% Polyline
|
||||
@@ -168,15 +153,6 @@ n 3150 6300 m
|
||||
% arrowhead
|
||||
n 3180 4456 m 3150 4336 l 3120 4456 l 3180 4456 l cp gs 0.00 setgray ef gr col0 s
|
||||
% Polyline
|
||||
gs clippath
|
||||
3180 6436 m 3180 6285 l 3120 6285 l 3120 6436 l 3120 6436 l 3150 6316 l 3180 6436 l cp
|
||||
eoclip
|
||||
n 3600 8460 m 3150 8460 l
|
||||
3150 6300 l gs col0 s gr gr
|
||||
|
||||
% arrowhead
|
||||
n 3180 6436 m 3150 6316 l 3120 6436 l 3180 6436 l cp gs 0.00 setgray ef gr col0 s
|
||||
% Polyline
|
||||
15.000 slw
|
||||
[90] 0 sd
|
||||
n 900 2295 m
|
||||
@@ -185,6 +161,13 @@ n 900 2295 m
|
||||
[90] 0 sd
|
||||
n 945 4995 m
|
||||
5490 4995 l gs col0 s gr [] 0 sd
|
||||
% Polyline
|
||||
7.500 slw
|
||||
n 3645 5625 m 3420 5625 3420 6795 225 arcto 4 {pop} repeat
|
||||
3420 7020 5895 7020 225 arcto 4 {pop} repeat
|
||||
6120 7020 6120 5850 225 arcto 4 {pop} repeat
|
||||
6120 5625 3645 5625 225 arcto 4 {pop} repeat
|
||||
cp gs col0 s gr
|
||||
/Times-Roman ff 396.88 scf sf
|
||||
2295 990 m
|
||||
gs 1 -1 sc (Application) col0 sh gr
|
||||
@@ -192,18 +175,6 @@ gs 1 -1 sc (Application) col0 sh gr
|
||||
2250 3735 m
|
||||
gs 1 -1 sc (PSBLAS ) col0 sh gr
|
||||
/Times-Roman ff 396.88 scf sf
|
||||
4140 6390 m
|
||||
gs 1 -1 sc (BLACS) col0 sh gr
|
||||
/Times-Roman ff 396.88 scf sf
|
||||
3690 8280 m
|
||||
gs 1 -1 sc (Message Passing) col0 sh gr
|
||||
/Times-Roman ff 396.88 scf sf
|
||||
4410 8820 m
|
||||
gs 1 -1 sc (MPI) col0 sh gr
|
||||
/Times-Roman ff 396.88 scf sf
|
||||
4050 2160 m
|
||||
gs 1 -1 sc (Fortran95) col0 sh gr
|
||||
/Times-Roman ff 396.88 scf sf
|
||||
4050 2565 m
|
||||
gs 1 -1 sc (Interface) col0 sh gr
|
||||
/Times-Roman ff 396.88 scf sf
|
||||
@@ -212,9 +183,17 @@ gs 1 -1 sc (Inner) col0 sh gr
|
||||
/Times-Roman ff 396.88 scf sf
|
||||
4140 5310 m
|
||||
gs 1 -1 sc (Interface) col0 sh gr
|
||||
/Times-Roman ff 396.88 scf sf
|
||||
3420 6120 m
|
||||
gs 1 -1 sc (Message Passing) col0 sh gr
|
||||
/Times-Roman ff 396.88 scf sf
|
||||
4275 6660 m
|
||||
gs 1 -1 sc (MPI) col0 sh gr
|
||||
/Times-Roman ff 396.88 scf sf
|
||||
4050 2160 m
|
||||
gs 1 -1 sc (Fortran 2003) col0 sh gr
|
||||
% here ends figure;
|
||||
$F2psEnd
|
||||
rs
|
||||
pagefooter
|
||||
showpage
|
||||
%%Trailer
|
||||
%EOF
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
#FIG 3.2 Produced by xfig version 3.2.5b
|
||||
Landscape
|
||||
Center
|
||||
Metric
|
||||
Letter
|
||||
50.00
|
||||
Single
|
||||
-2
|
||||
1200 2
|
||||
6 540 5940 2430 6660
|
||||
4 0 0 50 -1 0 25 0.0000 4 375 2250 540 6210 Serial Sparse\001
|
||||
4 0 0 50 -1 0 25 0.0000 4 285 1080 1080 6660 BLAS\001
|
||||
-6
|
||||
2 4 0 1 0 7 50 -1 -1 0.000 0 0 15 0 0 5
|
||||
4500 1575 1800 1575 1800 225 4500 225 4500 1575
|
||||
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
|
||||
2 1 2.00 60.00 120.00
|
||||
3150 2970 3150 1575
|
||||
2 4 0 1 0 7 50 -1 -1 0.000 0 0 17 0 0 5
|
||||
4680 4275 1845 4275 1845 2925 4680 2925 4680 4275
|
||||
2 4 0 1 0 7 50 -1 -1 0.000 0 0 15 0 0 5
|
||||
2880 6975 180 6975 180 5670 2880 5670 2880 6975
|
||||
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||
2880 6300 3420 6300
|
||||
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
|
||||
1 1 1.00 60.00 120.00
|
||||
3150 6300 3150 4320
|
||||
2 1 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
|
||||
900 2295 5445 2295
|
||||
2 1 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
|
||||
945 4995 5490 4995
|
||||
2 4 0 1 0 7 50 -1 -1 0.000 0 0 15 0 0 5
|
||||
6120 7020 3420 7020 3420 5625 6120 5625 6120 7020
|
||||
4 0 0 50 -1 0 25 0.0000 4 375 2010 2295 990 Application\001
|
||||
4 0 0 50 -1 0 25 0.0000 4 285 1665 2250 3735 PSBLAS \001
|
||||
4 0 0 50 -1 0 25 0.0000 4 285 1515 4050 2565 Interface\001
|
||||
4 0 0 50 -1 0 25 0.0000 4 285 885 4140 4860 Inner\001
|
||||
4 0 0 50 -1 0 25 0.0000 4 285 1515 4140 5310 Interface\001
|
||||
4 0 0 50 -1 0 25 0.0000 4 375 2910 3420 6120 Message Passing\001
|
||||
4 0 0 50 -1 0 25 0.0000 4 285 750 4275 6660 MPI\001
|
||||
4 0 0 50 -1 0 25 0.0000 4 285 2190 4050 2160 Fortran 2003\001
|
||||
Binary file not shown.
@@ -0,0 +1,353 @@
|
||||
#FIG 3.2
|
||||
Landscape
|
||||
Center
|
||||
Inches
|
||||
Letter
|
||||
100.00
|
||||
Single
|
||||
-2
|
||||
1200 2
|
||||
6 1350 900 1425 6900
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
1350 6300 1350 6900
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
1350 5400 1350 6000
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
1350 4500 1350 5100
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
1350 3600 1350 4200
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
1350 2700 1350 3300
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
1350 1800 1350 2400
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
1350 900 1350 1500
|
||||
-6
|
||||
6 2250 900 2325 6900
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
2250 6300 2250 6900
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
2250 5400 2250 6000
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
2250 4500 2250 5100
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
2250 3600 2250 4200
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
2250 2700 2250 3300
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
2250 1800 2250 2400
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
2250 900 2250 1500
|
||||
-6
|
||||
6 3150 900 3225 6900
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
3150 6300 3150 6900
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
3150 5400 3150 6000
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
3150 4500 3150 5100
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
3150 3600 3150 4200
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
3150 2700 3150 3300
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
3150 1800 3150 2400
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
3150 900 3150 1500
|
||||
-6
|
||||
6 4050 900 4125 6900
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
4050 6300 4050 6900
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
4050 5400 4050 6000
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
4050 4500 4050 5100
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
4050 3600 4050 4200
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
4050 2700 4050 3300
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
4050 1800 4050 2400
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
4050 900 4050 1500
|
||||
-6
|
||||
6 4950 900 5025 6900
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
4950 6300 4950 6900
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
4950 5400 4950 6000
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
4950 4500 4950 5100
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
4950 3600 4950 4200
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
4950 2700 4950 3300
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
4950 1800 4950 2400
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
4950 900 4950 1500
|
||||
-6
|
||||
6 5850 900 5925 6900
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
5850 6300 5850 6900
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
5850 5400 5850 6000
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
5850 4500 5850 5100
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
5850 3600 5850 4200
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
5850 2700 5850 3300
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
5850 1800 5850 2400
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
5850 900 5850 1500
|
||||
-6
|
||||
6 6750 900 6825 6900
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
6750 6300 6750 6900
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
6750 5400 6750 6000
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
6750 4500 6750 5100
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
6750 3600 6750 4200
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
6750 2700 6750 3300
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
6750 1800 6750 2400
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
6750 900 6750 1500
|
||||
-6
|
||||
6 7650 900 7725 6900
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
7650 6300 7650 6900
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
7650 5400 7650 6000
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
7650 4500 7650 5100
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
7650 3600 7650 4200
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
7650 2700 7650 3300
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
7650 1800 7650 2400
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
7650 900 7650 1500
|
||||
-6
|
||||
6 1500 750 7500 750
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
6900 750 7500 750
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
6000 750 6600 750
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
5100 750 5700 750
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
4200 750 4800 750
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
3300 750 3900 750
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
2400 750 3000 750
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
1500 750 2100 750
|
||||
-6
|
||||
6 1500 1650 7500 1650
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
6900 1650 7500 1650
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
6000 1650 6600 1650
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
5100 1650 5700 1650
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
4200 1650 4800 1650
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
3300 1650 3900 1650
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
2400 1650 3000 1650
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
1500 1650 2100 1650
|
||||
-6
|
||||
6 1500 2550 7500 2550
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
6900 2550 7500 2550
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
6000 2550 6600 2550
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
5100 2550 5700 2550
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
4200 2550 4800 2550
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
3300 2550 3900 2550
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
2400 2550 3000 2550
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
1500 2550 2100 2550
|
||||
-6
|
||||
6 1500 3450 7500 3450
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
6900 3450 7500 3450
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
6000 3450 6600 3450
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
5100 3450 5700 3450
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
4200 3450 4800 3450
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
3300 3450 3900 3450
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
2400 3450 3000 3450
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
1500 3450 2100 3450
|
||||
-6
|
||||
6 1500 4350 7500 4350
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
6900 4350 7500 4350
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
6000 4350 6600 4350
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
5100 4350 5700 4350
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
4200 4350 4800 4350
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
3300 4350 3900 4350
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
2400 4350 3000 4350
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
1500 4350 2100 4350
|
||||
-6
|
||||
6 1500 5250 7500 5250
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
6900 5250 7500 5250
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
6000 5250 6600 5250
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
5100 5250 5700 5250
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
4200 5250 4800 5250
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
3300 5250 3900 5250
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
2400 5250 3000 5250
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
1500 5250 2100 5250
|
||||
-6
|
||||
6 1500 6150 7500 6150
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
6900 6150 7500 6150
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
6000 6150 6600 6150
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
5100 6150 5700 6150
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
4200 6150 4800 6150
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
3300 6150 3900 6150
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
2400 6150 3000 6150
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
1500 6150 2100 6150
|
||||
-6
|
||||
6 1500 7050 7500 7050
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
6900 7050 7500 7050
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
6000 7050 6600 7050
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
5100 7050 5700 7050
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
4200 7050 4800 7050
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
3300 7050 3900 7050
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
2400 7050 3000 7050
|
||||
2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
|
||||
1500 7050 2100 7050
|
||||
-6
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 1350 750 150 150 1350 750 1350 900
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 1350 1650 150 150 1350 1650 1350 1800
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 1350 2550 150 150 1350 2550 1350 2700
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 1350 3450 150 150 1350 3450 1350 3600
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 1350 4350 150 150 1350 4350 1350 4500
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 1350 5250 150 150 1350 5250 1350 5400
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 1350 6150 150 150 1350 6150 1350 6300
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 1350 7050 150 150 1350 7050 1350 7200
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 2250 750 150 150 2250 750 2250 900
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 2250 1650 150 150 2250 1650 2250 1800
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 2250 2550 150 150 2250 2550 2250 2700
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 2250 3450 150 150 2250 3450 2250 3600
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 2250 4350 150 150 2250 4350 2250 4500
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 2250 5250 150 150 2250 5250 2250 5400
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 2250 6150 150 150 2250 6150 2250 6300
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 2250 7050 150 150 2250 7050 2250 7200
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 3150 750 150 150 3150 750 3150 900
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 3150 1650 150 150 3150 1650 3150 1800
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 3150 2550 150 150 3150 2550 3150 2700
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 3150 3450 150 150 3150 3450 3150 3600
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 3150 4350 150 150 3150 4350 3150 4500
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 3150 5250 150 150 3150 5250 3150 5400
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 3150 6150 150 150 3150 6150 3150 6300
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 3150 7050 150 150 3150 7050 3150 7200
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 4050 750 150 150 4050 750 4050 900
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 4050 1650 150 150 4050 1650 4050 1800
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 4050 2550 150 150 4050 2550 4050 2700
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 4050 3450 150 150 4050 3450 4050 3600
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 4050 4350 150 150 4050 4350 4050 4500
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 4050 5250 150 150 4050 5250 4050 5400
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 4050 6150 150 150 4050 6150 4050 6300
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 4050 7050 150 150 4050 7050 4050 7200
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 4950 750 150 150 4950 750 4950 900
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 4950 1650 150 150 4950 1650 4950 1800
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 4950 2550 150 150 4950 2550 4950 2700
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 4950 3450 150 150 4950 3450 4950 3600
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 4950 4350 150 150 4950 4350 4950 4500
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 4950 5250 150 150 4950 5250 4950 5400
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 4950 6150 150 150 4950 6150 4950 6300
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 4950 7050 150 150 4950 7050 4950 7200
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 5850 750 150 150 5850 750 5850 900
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 5850 1650 150 150 5850 1650 5850 1800
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 5850 2550 150 150 5850 2550 5850 2700
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 5850 3450 150 150 5850 3450 5850 3600
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 5850 4350 150 150 5850 4350 5850 4500
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 5850 5250 150 150 5850 5250 5850 5400
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 5850 6150 150 150 5850 6150 5850 6300
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 5850 7050 150 150 5850 7050 5850 7200
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 6750 750 150 150 6750 750 6750 900
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 6750 1650 150 150 6750 1650 6750 1800
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 6750 2550 150 150 6750 2550 6750 2700
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 6750 3450 150 150 6750 3450 6750 3600
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 6750 4350 150 150 6750 4350 6750 4500
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 6750 5250 150 150 6750 5250 6750 5400
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 6750 6150 150 150 6750 6150 6750 6300
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 6750 7050 150 150 6750 7050 6750 7200
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 7650 750 150 150 7650 750 7650 900
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 7650 1650 150 150 7650 1650 7650 1800
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 7650 2550 150 150 7650 2550 7650 2700
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 7650 3450 150 150 7650 3450 7650 3600
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 7650 4350 150 150 7650 4350 7650 4500
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 7650 5250 150 150 7650 5250 7650 5400
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 7650 6150 150 150 7650 6150 7650 6300
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 7650 7050 150 150 7650 7050 7650 7200
|
||||
2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
|
||||
600 3900 8175 3900
|
||||
4 0 0 50 -1 0 12 0.0000 4 135 90 1350 7575 1\001
|
||||
4 1 0 50 -1 0 12 0.0000 4 135 90 2250 7575 2\001
|
||||
4 1 0 50 -1 0 12 0.0000 4 135 90 3150 7575 3\001
|
||||
4 1 0 50 -1 0 12 0.0000 4 135 90 4050 7575 4\001
|
||||
4 1 0 50 -1 0 12 0.0000 4 135 90 4950 7575 5\001
|
||||
4 1 0 50 -1 0 12 0.0000 4 135 90 5850 7575 6\001
|
||||
4 1 0 50 -1 0 12 0.0000 4 135 90 6750 7575 7\001
|
||||
4 1 0 50 -1 0 12 0.0000 4 135 90 7650 7575 8\001
|
||||
4 1 0 50 -1 0 12 0.0000 4 135 180 7650 450 64\001
|
||||
4 1 0 50 -1 0 12 0.0000 4 135 180 6750 450 63\001
|
||||
4 1 0 50 -1 0 12 0.0000 4 135 180 5850 450 62\001
|
||||
4 1 0 50 -1 0 12 0.0000 4 135 180 4950 450 61\001
|
||||
4 1 0 50 -1 0 12 0.0000 4 135 180 4050 450 60\001
|
||||
4 1 0 50 -1 0 12 0.0000 4 135 180 3150 450 59\001
|
||||
4 1 0 50 -1 0 12 0.0000 4 135 180 2250 450 58\001
|
||||
4 1 0 50 -1 0 12 0.0000 4 135 180 1350 450 57\001
|
||||
4 1 0 50 -1 0 12 0.0000 4 135 180 8100 4425 32\001
|
||||
4 1 0 50 -1 0 12 0.0000 4 135 180 900 4425 25\001
|
||||
4 1 0 50 -1 0 12 0.0000 4 135 180 975 3525 27\001
|
||||
4 1 0 50 -1 0 12 0.0000 4 135 180 8100 3525 40\001
|
||||
4 1 0 50 -1 2 18 0.0000 4 195 300 8700 1950 P1\001
|
||||
4 1 0 50 -1 2 18 0.0000 4 195 300 8700 5850 P0\001
|
||||
+19
-22
@@ -21,7 +21,11 @@ mostly in the handling of requirements for evolution and adaptation of
|
||||
the library to new computing architectures and integration of
|
||||
new algorithms.
|
||||
For a detailed discussion of our design see~\cite{Sparse03}; other
|
||||
works tackling advanced programming in Fortran~2003 include~\cite{DesPat:11,RouXiaXu:11}
|
||||
works discussing advanced programming in Fortran~2003
|
||||
include~\cite{DesPat:11,RouXiaXu:11}; sufficient support for
|
||||
Fortran~2003 is now available from many compilers, including the GNU
|
||||
Fortran compiler from the Free Software Foundation (as of version 4.6).
|
||||
|
||||
|
||||
Previous approaches have been based on mixing Fortran~95, with its
|
||||
support for object-based design, with other languages; these have
|
||||
@@ -32,12 +36,7 @@ usability of the PSBLAS
|
||||
subroutines. In this way, the library can take care of runtime memory
|
||||
requirements that are quite difficult or even impossible to predict at
|
||||
implementation or compilation time.
|
||||
In the current release we rely on the availability of the so-called
|
||||
allocatable extensions, specified in TR~15581. Strictly speaking they
|
||||
are outside the Fortran~95 standard; however they have been included
|
||||
in the Fortran~2003 language standard, and are available in
|
||||
practically all Fortran~95 compilers on the market, including the GNU
|
||||
Fortran compiler from the Free Software Foundation (as of version 4.2).
|
||||
|
||||
The presentation of the
|
||||
PSBLAS library follows the general structure of the proposal for
|
||||
serial Sparse BLAS~\cite{sblas97,sblas02}, which in its turn is based on the
|
||||
@@ -84,20 +83,16 @@ influenced by the structure of the ScaLAPACK parallel
|
||||
library. The layered structure of the PSBLAS library
|
||||
is shown in figure~\ref{fig:psblas}; lower layers of the library
|
||||
indicate an encapsulation relationship with upper layers. The ongoing
|
||||
discussion focuses on the Fortran~95 layer immediately below the
|
||||
discussion focuses on the Fortran~2003 layer immediately below the
|
||||
application layer.
|
||||
The serial parts of the computation on each process are executed through
|
||||
calls to the serial sparse BLAS subroutines. In a similar way, the
|
||||
inter-process message exchanges are implemented through the Basic
|
||||
Linear Algebra Communication Subroutines (BLACS) library~\cite{BLACS}
|
||||
that guarantees a portable and efficient communication layer. The
|
||||
Message Passing Interface code is encapsulated within the BLACS
|
||||
layer. However, in some cases, MPI routines are directly used either
|
||||
to improve efficiency or to implement communication patterns for which
|
||||
the BLACS package doesn't provide any method.
|
||||
|
||||
In any case we provide wrappers around the BLACS routines so that the
|
||||
user does not need to delve into their details (see Sec.~\ref{sec:parenv}).
|
||||
calls to the serial sparse BLAS subroutines.
|
||||
In a similar way, the inter-process message exchanges are encapsulated
|
||||
in an applicaiton layer that has been strongly inspired by the Basic
|
||||
Linear Algebra Communication Subroutines (BLACS) library~\cite{BLACS}.
|
||||
Usually there is no need to deal directly with MPI; however, in some
|
||||
cases, MPI routines are used directly to improve efficiency. For
|
||||
further details on our communication layer see Sec.~\ref{sec:parenv}.
|
||||
%% We assume that the user program has initialized a BLACS process grid
|
||||
%% with one column and as many rows as there are processes; the PSBLAS
|
||||
%% initialization routines will take the communication context for this
|
||||
@@ -136,10 +131,12 @@ sub-domains}.
|
||||
Our library supports any distribution that keeps together
|
||||
the coefficients of each matrix row; there are no other constraints on
|
||||
the variable assignment.
|
||||
This choice is consistent with data distributions commonly used in
|
||||
ScaLAPACK such as \verb|CYCLIC(N)| and \verb|BLOCK|,
|
||||
This choice is consistent with simple data distributions
|
||||
%commonly used in ScaLAPACK
|
||||
such as \verb|CYCLIC(N)| and \verb|BLOCK|,
|
||||
as well as completely arbitrary assignments of
|
||||
equation indices to processes. In particular it is consistent with the
|
||||
equation indices to processes.
|
||||
In particular it is consistent with the
|
||||
usage of graph partitioning tools commonly available in the
|
||||
literature, e.g. METIS~\cite{METIS}.
|
||||
Dense vectors conform to sparse
|
||||
|
||||
@@ -100,7 +100,7 @@
|
||||
by Salvatore Filippone\\
|
||||
and Alfredo Buttari}\\
|
||||
University of Rome ``Tor Vergata''.\\[3ex]
|
||||
May 15th, 2010.
|
||||
December 15th, 2011.
|
||||
\end{minipage}}
|
||||
|
||||
%\addtolength{\textwidth}{\centeroffset}
|
||||
|
||||
@@ -85,7 +85,7 @@
|
||||
%\today
|
||||
Software version: 3.0-beta\\
|
||||
%\today
|
||||
May 15th, 2010
|
||||
December 15th, 2011
|
||||
\cleardoublepage
|
||||
\begingroup
|
||||
\renewcommand*{\thepage}{toc}
|
||||
|
||||
Reference in New Issue
Block a user