diff --git a/docs/html/node10.html b/docs/html/node10.html
index 065a69fa..6f8d0ecd 100644
--- a/docs/html/node10.html
+++ b/docs/html/node10.html
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
+All the general matrix informations and elements to be
+exchanged among processes are stored within a data structure of the
+type descdatapsb_desc_type.
+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.
+
+
+The data structure itself psb_desc_type can be treated as an
+opaque object handled via the tools routines of
+Sec. 6 or the query routines detailed below;
+nevertheless we include here a description for the curious
+reader.
+
+
+First we describe the psb_indx_map type. This is a data
+structure that keeps track of a certain number of basic issues such
+as:
+
+
+
The value of the communication/MPI context;
+
+
The number of indices in the index space, i.e. global number of
+ rows and columns of a sparse matrix;
+
+
The local set of indices, including:
+
+
+
The number of local indices (and local rows);
+
+
The number of halo indices (and therefore local columns);
+
+
The global indices corresponding to the local ones.
+
+
+
+
+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:
+
+
+
For a given set of local indices, find the corresponding indices
+ in the global numbering;
+
+
For a given set of global indices, find the corresponding
+ indices in the local numbering, if any, or return an invalid
+
+
Add a global index to the set of halo indices;
+
+
Find the process owner of each member of a set of global
+ indices.
+
+
+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 6).
+
+
+The descriptor contents are as follows:
+
+
indxmap
+
A polymorphic variable of a type that is any
+ extension of the indx_map type described above.
+
+
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:
+
+
+
Process identifier;
+
+
Number of points to be received;
+
+
Indices of points to be received;
+
+
Number of points to be sent;
+
+
Indices of points to be sent;
+
+
+The list may contain an arbitrary number of groups; its end is marked
+by a -1.
+
+Specified as: an allocatable integer array of rank one.
+
+
ext_index
+
A list of element indices to be exchanged to
+ implement the mapping between a base descriptor and a descriptor
+ with overlap.
+
+
ovrlap_index
+
A list of the overlap elements for the
+current process, organized in groups like the previous vector:
+
+
+
Process identifier;
+
+
Number of points to be received;
+
+
Indices of points to be received;
+
+
Number of points to be sent;
+
+
Indices of points to be sent;
+
+
+The list may contain an arbitrary number of groups; its end is marked
+by a -1.
+
+Specified as: an allocatable integer array of rank one.
+
+
ovr_mst_idx
+
A list to retrieve the value of each
+ overlap element from the respective master process.
+
+Specified as: an allocatable integer array of rank one.
+
+
ovrlap_elem
+
For all overlap points belonging to th
+ecurrent process:
+
+
+
Overlap point index;
+
+
Number of processes sharing that overlap points;
+
+
Index of a ``master'' process:
+
+
+Specified as: an allocatable integer array of rank two.
+
+
bnd_elem
+
A list of all boundary points, i.e. points
+ that have a connection with other processes.
+
+
+The Fortran 2003 declaration for psb_desc_type structures is
+as follows:
+
+
+
+
Figure 3:
+The PSBLAS defined data type that
+ contains the communication descriptor.
+A communication descriptor associated with a sparse matrix has a
+state, which can take the following values:
+
+
Build:
+
State entered after the first allocation, and before the
+ first assembly; in this state it is possible to add communication
+ requirements among different processes.
+
+
Assembled:
+
State entered after the assembly; computations using
+ the associated sparse matrix, such as matrix-vector products, are
+ only possible in this state.
+
-The PSBLAS library error handling policy has been completely rewritten
-in version 2.0. The idea behind the design of this new error handling
-strategy is to keep error messages on a stack allowing the user to
-trace back up to the point where the first error message has been
-generated. Every routine in the PSBLAS-2.0 library has, as last
-non-optional argument, an integer info variable; whenever,
-inside the routine, an error is detected, this variable is set to a
-value corresponding to a specific error code. Then this error code is
-also pushed on the error stack and then either control is returned to
-the caller routine or the execution is aborted, depending on the users
-choice. At the time when the execution is aborted, an error message is
-printed on standard output with a level of verbosity than can be
-chosen by the user. If the execution is not aborted, then, the caller
-routine checks the value returned in the info variable and, if
-not zero, an error condition is raised. This process continues on all the
-levels of nested calls until the level where the user decides to abort
-the program execution.
+
+call psb_rcv(icontxt, dat, src, m)
+
-Figure 9 shows the layout of a generic psb_foo
-routine with respect to the PSBLAS-2.0 error handling policy. It is
-possible to see how, whenever an error condition is detected, the
-info variable is set to the corresponding error code which is,
-then, pushed on top of the stack by means of the
-psb_errpush. An error condition may be directly detected inside
-a routine or indirectly checking the error code returned returned by a
-called routine. Whenever an error is encountered, after it has been
-pushed on stack, the program execution skips to a point where the
-error condition is handled; the error condition is handled either by
-returning control to the caller routine or by calling the
-psb\_error routine which prints the content of the error stack
-and aborts the program execution, according to the choice made by the
-user with psb_set_erraction. The default is to print the error
-and terminate the program, but the user may choose to handle the error
-explicitly.
-
-
-
-
-
-
Figure 9:
-The layout of a generic psb_foo
- routine with respect to PSBLAS-2.0 error handling policy.
Number of rows.
+
+Scope: global.
+
+Type: Optional.
+
+Intent: in.
+
+Specified as: an integer value
+.
+
+When is a rank 2 array, specifies the number of rows to be sent
+independently of the leading dimension ; must have the
+same value on sending and receiving processes.
+
+
-Figure 10 reports a sample error message generated by
-the PSBLAS-2.0 library. This error has been generated by the fact that
-the user has chosen the invalid ``FOO'' storage format to represent
-the sparse matrix. From this error message it is possible to see that
-the error has been detected inside the psb_cest subroutine
-called by psb_spasb ... by process 0 (i.e. the root process).
+
+
On Return
+
+
+
dat
+
The data to be received.
+
+Scope: local.
+
+Type: required.
+
+Intent: inout.
+
+Specified as: an integer, real or complex variable, which may be a
+scalar, or a rank 1 or 2 array, or a character or logical scalar. Type, kind and rank must agree on sender and receiver process; if is
+not specified, size must agree as well.
+
+
+Notes
-
-
-
Figure 10:
-A sample PSBLAS-2.0 error
- message. Process 0 detected an error condition inside the psb_cest subroutine
-
-
-
-
-
-
-
-
-
+
+
This subroutine implies a synchronization, but only between the
+ calling process and the source process .
+
+The PSBLAS library error handling policy has been completely rewritten
+in version 2.0. The idea behind the design of this new error handling
+strategy is to keep error messages on a stack allowing the user to
+trace back up to the point where the first error message has been
+generated. Every routine in the PSBLAS-2.0 library has, as last
+non-optional argument, an integer info variable; whenever,
+inside the routine, an error is detected, this variable is set to a
+value corresponding to a specific error code. Then this error code is
+also pushed on the error stack and then either control is returned to
+the caller routine or the execution is aborted, depending on the users
+choice. At the time when the execution is aborted, an error message is
+printed on standard output with a level of verbosity than can be
+chosen by the user. If the execution is not aborted, then, the caller
+routine checks the value returned in the info variable and, if
+not zero, an error condition is raised. This process continues on all the
+levels of nested calls until the level where the user decides to abort
+the program execution.
+
+
+Figure 9 shows the layout of a generic psb_foo
+routine with respect to the PSBLAS-2.0 error handling policy. It is
+possible to see how, whenever an error condition is detected, the
+info variable is set to the corresponding error code which is,
+then, pushed on top of the stack by means of the
+psb_errpush. An error condition may be directly detected inside
+a routine or indirectly checking the error code returned returned by a
+called routine. Whenever an error is encountered, after it has been
+pushed on stack, the program execution skips to a point where the
+error condition is handled; the error condition is handled either by
+returning control to the caller routine or by calling the
+psb\_error routine which prints the content of the error stack
+and aborts the program execution, according to the choice made by the
+user with psb_set_erraction. The default is to print the error
+and terminate the program, but the user may choose to handle the error
+explicitly.
-
-
Type:
-
Asynchronous.
-
-
On Entry
-
-
-
err_c
-
the error code
-
-Scope: local
-
-Type: required
-
-Intent: in.
-
-Specified as: an integer.
-
-
r_name
-
the soutine where the error has been caught.
-
-Scope: local
-
-Type: required
-
-Intent: in.
-
-Specified as: a string.
-
-
i_err
-
addional info for error code
-
-Scope: local
-
-Type: optional
-
-Specified as: an integer array
-
-
a_err
-
addional info for error code
-
-Scope: local
-
-Type: optional
-
-Specified as: a string.
-
-
+
+
+
+
Figure 9:
+The layout of a generic psb_foo
+ routine with respect to PSBLAS-2.0 error handling policy.
+
+
+
+
+
+
+
+
+
+
+
+Figure 10 reports a sample error message generated by
+the PSBLAS-2.0 library. This error has been generated by the fact that
+the user has chosen the invalid ``FOO'' storage format to represent
+the sparse matrix. From this error message it is possible to see that
+the error has been detected inside the psb_cest subroutine
+called by psb_spasb ... by process 0 (i.e. the root process).
+
+
+
+
+
+
Figure 10:
+A sample PSBLAS-2.0 error
+ message. Process 0 detected an error condition inside the psb_cest subroutine
the error code
-Scope: global
+Scope: local
-Type: optional
+Type: required
Intent: in.
Specified as: an integer.
+
r_name
+
the soutine where the error has been caught.
+
+Scope: local
+
+Type: required
+
+Intent: in.
+
+Specified as: a string.
+
+
i_err
+
addional info for error code
+
+Scope: local
+
+Type: optional
+
+Specified as: an integer array
+
+
a_err
+
addional info for error code
+
+Scope: local
+
+Type: optional
+
+Specified as: a string.
+
diff --git a/docs/html/node103.html b/docs/html/node103.html
index 1203e4ff..71c492a9 100644
--- a/docs/html/node103.html
+++ b/docs/html/node103.html
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
the communication context.
-Scope: global
+Scope: global
-Type: required
+Type: optional
Intent: in.
diff --git a/docs/html/node104.html b/docs/html/node104.html
index 80493d57..e74622c6 100644
--- a/docs/html/node104.html
+++ b/docs/html/node104.html
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-psb_set_erraction -- Set the type of action to be taken upon error condition.
-
+psb_set_errverbosity -- Sets the verbosity of error messages.
+
@@ -18,46 +18,47 @@ original version by: Nikos Drakos, CBLU, University of Leeds
+
-
+
-
-
+
-
-
- Next:Utilities
- Up:Error handling
- Previous:psb_set_errverbosity Sets
- Next:psb_set_erraction Set
+ Up:Error handling
+ Previous:psb_error Prints
+ Contents
the verbosity level
-Scope: global
+Scope: global
Type: required
Intent: in.
-Specified as: an integer. Possible values: psb_act_ret,
-psb_act_abort.
+Specified as: an integer.
-
-
-call psb_errcomm(icontxt, err)
-
-
diff --git a/docs/html/node105.html b/docs/html/node105.html
index 8d385f3b..1a877774 100644
--- a/docs/html/node105.html
+++ b/docs/html/node105.html
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-Utilities
-
+psb_set_erraction -- Set the type of action to be taken upon error condition.
+
@@ -18,73 +18,76 @@ original version by: Nikos Drakos, CBLU, University of Leeds
-
-
-
+
+
-
-
+
-
-
- Next:hb_read Read
- Up:userhtml
- Previous:psb_set_erraction Set
- Next:Utilities
+ Up:Error handling
+ Previous:psb_set_errverbosity Sets
+ Contents
-We have some utitlities available for input and output of
-sparsematrices; the interfaces to these routines are available in the
-module psb_util_mod.
+
diff --git a/docs/html/node106.html b/docs/html/node106.html
index 0e912dc5..1ce258d9 100644
--- a/docs/html/node106.html
+++ b/docs/html/node106.html
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-hb_read -- Read a sparse matrix from a file in the Harwell-Boeing format
-
+Utilities
+
@@ -18,139 +18,74 @@ original version by: Nikos Drakos, CBLU, University of Leeds
-
-
-
+
+
+
-
-
+
-
-
- Next:hb_write Write
- Up:Utilities
- Previous:Utilities
- Next:hb_read Read
+ Up:userhtml
+ Previous:psb_set_erraction Set
+ Contents
+
-Type:optional.
-
-Specified as: a character variable containing a valid file name, or
--, in which case the default input unit 5 (i.e. standard input
-in Unix jargon) is used. Default: -.
-
-
iunit
-
The Fortran file unit number.
-
-Type:optional.
-
-Specified as: an integer value. Only meaningful if filename is not -.
-
-
+Utilities
+
-
-
On Return
-
-
-
a
-
the sparse matrix read from file.
-
-Type:required.
-
-Specified as: a structured data of type spdatapsb_Tspmat_type.
-
-
b
-
Rigth hand side(s).
-
-Type: Optional
-
-An array of type real or complex, rank 2 and having the ALLOCATABLE
-attribute; will be allocated and filled in if the input file contains
-a right hand side, otherwise will be left in the UNALLOCATED state.
-
-
mtitle
-
Matrix title.
-
-Type: Optional
-
-A charachter variable of length 72 holding a copy of the
-matrix title as specified by the Harwell-Boeing format and contained
-in the input file.
-
-
iret
-
Error code.
-
-Type: required
-
-An integer value; 0 means no error has been detected.
-
-
+We have some utitlities available for input and output of
+sparsematrices; the interfaces to these routines are available in the
+module psb_util_mod.
+
+
diff --git a/docs/html/node107.html b/docs/html/node107.html
index 688867dd..8124a246 100644
--- a/docs/html/node107.html
+++ b/docs/html/node107.html
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-hb_write -- Write a sparse matrix to a file in the Harwell-Boeing format
-
+hb_read -- Read a sparse matrix from a file in the Harwell-Boeing format
+
@@ -20,45 +20,45 @@ original version by: Nikos Drakos, CBLU, University of Leeds
-
+
-
-
+
-
-
- Next:mm_mat_read Read
- Up:Utilities
- Previous:hb_read Read
- Next:hb_write Write
+ Up:Utilities
+ Previous:Utilities
+ Contents
the sparse matrix to be written.
-
-Type:required.
-
-Specified as: a structured data of type spdatapsb_Tspmat_type.
-
-
b
-
Rigth hand side.
-
-Type: Optional
-
-An array of type real or complex, rank 1 and having the ALLOCATABLE
-attribute; will be allocated and filled in if the input file contains
-a right hand side.
-
filename
-
The name of the file to be written to.
+
The name of the file to be read.
Type:optional.
Specified as: a character variable containing a valid file name, or
--, in which case the default output unit 6 (i.e. standard output
+-, in which case the default input unit 5 (i.e. standard input
in Unix jargon) is used. Default: -.
iunit
@@ -101,30 +85,37 @@ Type:optional.
Specified as: an integer value. Only meaningful if filename is not -.
-
key
-
Matrix key.
+
+
+
+
+
On Return
+
+
+
a
+
the sparse matrix read from file.
+
+Type:required.
+
+Specified as: a structured data of type spdatapsb_Tspmat_type.
+
+
b
+
Rigth hand side(s).
Type: Optional
-A charachter variable of length 8 holding the
-matrix key as specified by the Harwell-Boeing format and to be
-written to file.
+An array of type real or complex, rank 2 and having the ALLOCATABLE
+attribute; will be allocated and filled in if the input file contains
+a right hand side, otherwise will be left in the UNALLOCATED state.
mtitle
Matrix title.
Type: Optional
-A charachter variable of length 72 holding the
-matrix title as specified by the Harwell-Boeing format and to be
-written to file.
-
-
-
-
-
-
On Return
-
+A charachter variable of length 72 holding a copy of the
+matrix title as specified by the Harwell-Boeing format and contained
+in the input file.
iret
Error code.
@@ -138,26 +129,26 @@ An integer value; 0 means no error has been detected.
-
-
+
-
-
- Next:mm_mat_read Read
- Up:Utilities
- Previous:hb_read Read
- Next:hb_write Write
+ Up:Utilities
+ Previous:Utilities
+ Contents
diff --git a/docs/html/node108.html b/docs/html/node108.html
index 8bc1e0fd..6b42f189 100644
--- a/docs/html/node108.html
+++ b/docs/html/node108.html
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-mm_mat_read -- Read a sparse matrix from a file in the MatrixMarket format
-
+hb_write -- Write a sparse matrix to a file in the Harwell-Boeing format
+
@@ -20,45 +20,45 @@ original version by: Nikos Drakos, CBLU, University of Leeds
-
+
-
-
+
-
-
- Next:mm_vet_read Read
- Up:Utilities
- Previous:hb_write Write
- Next:mm_mat_read Read
+ Up:Utilities
+ Previous:hb_read Read
+ Contents
the sparse matrix to be written.
+
+Type:required.
+
+Specified as: a structured data of type spdatapsb_Tspmat_type.
+
+
b
+
Rigth hand side.
+
+Type: Optional
+
+An array of type real or complex, rank 1 and having the ALLOCATABLE
+attribute; will be allocated and filled in if the input file contains
+a right hand side.
+
filename
-
The name of the file to be read.
+
The name of the file to be written to.
Type:optional.
Specified as: a character variable containing a valid file name, or
--, in which case the default input unit 5 (i.e. standard input
+-, in which case the default output unit 6 (i.e. standard output
in Unix jargon) is used. Default: -.
iunit
@@ -85,6 +101,24 @@ Type:optional.
Specified as: an integer value. Only meaningful if filename is not -.
+
key
+
Matrix key.
+
+Type: Optional
+
+A charachter variable of length 8 holding the
+matrix key as specified by the Harwell-Boeing format and to be
+written to file.
+
+
mtitle
+
Matrix title.
+
+Type: Optional
+
+A charachter variable of length 72 holding the
+matrix title as specified by the Harwell-Boeing format and to be
+written to file.
+
@@ -92,13 +126,6 @@ Specified as: an integer value. Only meaningful if filename is not -On Return
-
a
-
the sparse matrix read from file.
-
-Type:required.
-
-Specified as: a structured data of type spdatapsb_Tspmat_type.
-
iret
Error code.
@@ -109,7 +136,30 @@ An integer value; 0 means no error has been detected.
-
+
+
+
+
+
+
+
+
+
+
+
+ Next:mm_mat_read Read
+ Up:Utilities
+ Previous:hb_read Read
+ Contents
+
diff --git a/docs/html/node109.html b/docs/html/node109.html
index 477bd497..3931edcc 100644
--- a/docs/html/node109.html
+++ b/docs/html/node109.html
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-mm_vet_read -- Read a dense vector from a file in the MatrixMarket format
-
+mm_mat_read -- Read a sparse matrix from a file in the MatrixMarket format
+
@@ -20,44 +20,45 @@ original version by: Nikos Drakos, CBLU, University of Leeds
-
+
-
-
+
-
-
- Next:mm_mat_write Write
- Up:Utilities
- Previous:mm_mat_read Read
- Next:mm_vet_read Read
+ Up:Utilities
+ Previous:hb_write Write
+ Contents
@@ -91,14 +92,12 @@ Specified as: an integer value. Only meaningful if filename is not -On Return
-
b
-
Rigth hand side(s).
+
a
+
the sparse matrix read from file.
-Type: required
+Type:required.
-An array of type real or complex, rank 2 and having the ALLOCATABLE
-attribute; will be allocated and filled in if the input file contains
-a right hand side, otherwise will be left in the UNALLOCATED state.
+Specified as: a structured data of type spdatapsb_Tspmat_type.
iret
Error code.
diff --git a/docs/html/node11.html b/docs/html/node11.html
index 2f89501f..93acd3ba 100644
--- a/docs/html/node11.html
+++ b/docs/html/node11.html
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-get_local_rows -- Get number of local rows
-
+Methods
+
@@ -20,81 +20,40 @@ original version by: Nikos Drakos, CBLU, University of Leeds
-
+
-
-
+
-
-
- Next:get_local_cols Get
- Up:Descriptor data structure
- Previous:Methods
- Next:get_local_rows Get
+ Up:Descriptor data structure
+ Previous:Descriptor data structure
+ Contents
The number of local rows, i.e. the number of
- rows owned by the current process; as explained in 1,
- it is equal to
-. The returned value is
- specific to the calling process.
-
-
-
-
diff --git a/docs/html/node110.html b/docs/html/node110.html
index 54ddaa1b..b9f2a496 100644
--- a/docs/html/node110.html
+++ b/docs/html/node110.html
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-mm_mat_write -- Write a sparse matrix to a file in the MatrixMarket format
-
+mm_vet_read -- Read a dense vector from a file in the MatrixMarket format
+
@@ -18,46 +18,49 @@ original version by: Nikos Drakos, CBLU, University of Leeds
+
-
+
-
-
+
-
-
- Next:Preconditioner routines
- Up:Utilities
- Previous:mm_vet_read Read
- Next:mm_mat_write Write
+ Up:Utilities
+ Previous:mm_mat_read Read
+ Contents
the sparse matrix to be written.
-
-Type:required.
-
-Specified as: a structured data of type spdatapsb_Tspmat_type.
-
-
mtitle
-
Matrix title.
-
-Type: required
-
-A charachter variable holding a descriptive title for the matrix to be
- written to file.
-
filename
-
The name of the file to be written to.
+
The name of the file to be read.
Type:optional.
Specified as: a character variable containing a valid file name, or
--, in which case the default output unit 6 (i.e. standard output
+-, in which case the default input unit 5 (i.e. standard input
in Unix jargon) is used. Default: -.
iunit
@@ -103,6 +91,15 @@ Specified as: an integer value. Only meaningful if filename is not -On Return
+
b
+
Rigth hand side(s).
+
+Type: required
+
+An array of type real or complex, rank 2 and having the ALLOCATABLE
+attribute; will be allocated and filled in if the input file contains
+a right hand side, otherwise will be left in the UNALLOCATED state.
+
iret
Error code.
diff --git a/docs/html/node111.html b/docs/html/node111.html
index 2abd518e..2837be7c 100644
--- a/docs/html/node111.html
+++ b/docs/html/node111.html
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-Preconditioner routines
-
+mm_mat_write -- Write a sparse matrix to a file in the MatrixMarket format
+
@@ -18,76 +18,102 @@ original version by: Nikos Drakos, CBLU, University of Leeds
-
-
-
+
+
-
-
+
-
-
- Next:psb_precinit Initialize
- Up:userhtml
- Previous:mm_mat_write Write
- Next:Preconditioner routines
+ Up:Utilities
+ Previous:mm_vet_read Read
+ Contents
the sparse matrix to be written.
+
+Type:required.
+
+Specified as: a structured data of type spdatapsb_Tspmat_type.
+
+
mtitle
+
Matrix title.
+
+Type: required
+
+A charachter variable holding a descriptive title for the matrix to be
+ written to file.
+
+
filename
+
The name of the file to be written to.
+
+Type:optional.
+
+Specified as: a character variable containing a valid file name, or
+-, in which case the default output unit 6 (i.e. standard output
+in Unix jargon) is used. Default: -.
+
+
iunit
+
The Fortran file unit number.
-Preconditioner routines
-
+Type:optional.
+
+Specified as: an integer value. Only meaningful if filename is not -.
+
+
-The base PSBLAS library contains the implementation of two simple
-preconditioning techniques:
-
-
-
Diagonal Scaling
-
-
Block Jacobi with ILU(0) factorization
-
-
-The supporting data type and subroutine interfaces are defined in the
-module psb_prec_mod.
+
+
On Return
+
+
+
iret
+
Error code.
+
+Type: required
+
+An integer value; 0 means no error has been detected.
+
+The base PSBLAS library contains the implementation of two simple
+preconditioning techniques:
-
-
-
Type:
-
Asynchronous.
-
-
On Entry
-
-
-
ptype
-
the type of preconditioner.
-Scope: global
-
-Type: required
-
-Intent: in.
-
-Specified as: a character string, see usage notes.
-
-
On Exit
-
-
-
prec
-
Scope: local
-
-Type: required
-
-Intent: inout.
-
-Specified as: a preconditioner data structure precdatapsb_prec_type.
-
-
info
-
Scope: global
-
-Type: required
-
-Intent: out.
-
-Error code: if no error, 0 is returned.
-
-
-Notes
-Legal inputs to this subroutine are interpreted depending on the
- string as follows3:
-
-
NONE
-
No preconditioning, i.e. the preconditioner is just a copy
- operator.
-
-
DIAG
-
Diagonal scaling; each entry of the input vector is
- multiplied by the reciprocal of the sum of the absolute values of
- the coefficients in the corresponding row of matrix ;
-
-
BJAC
-
Precondition by a factorization of the
- block-diagonal of matrix , where block boundaries are determined
- by the data allocation boundaries for each process; requires no
- communication. Only the incomplete factorization is
- currently implemented.
-
-
+
+
Diagonal Scaling
+
+
Block Jacobi with ILU(0) factorization
+
+
+The supporting data type and subroutine interfaces are defined in the
+module psb_prec_mod.
the type of preconditioner.
+Scope: global
Type: required
-Intent: in, target.
+Intent: in.
-Specified as: a sparse matrix data structure spdatapsb_Tspmat_type.
+Specified as: a character string, see usage notes.
+
+
On Exit
+
prec
-
the preconditioner.
-
-Scope: local
+
Scope: local
Type: required
Intent: inout.
-Specified as: an already initialized precondtioner data structure precdatapsb_prec_type
-
-
desc_a
-
the problem communication descriptor.
-Scope: local
-
-Type: required
-
-Intent: in, target.
-
-Specified as: a communication descriptor data structure descdatapsb_desc_type.
+Specified as: a preconditioner data structure precdatapsb_prec_type.
-
amold
-
The desired dynamic type for the internal matrix storage.
-
-Scope: local.
-
-Type: optional.
-
-Intent: in.
-
-Specified as: an object of a class derived from spbasedatapsb_T_base_sparse_mat.
-
-
vmold
-
The desired dynamic type for the internal vector storage.
-
-Scope: local.
+
info
+
Scope: global
-Type: optional.
+Type: required
-Intent: in.
+Intent: out.
-Specified as: an object of a class derived from vbasedatapsb_T_base_vect_type.
-
-
+Error code: if no error, 0 is returned.
-
-
+Notes
+Legal inputs to this subroutine are interpreted depending on the
+ string as follows3:
-
On Return
-
+
NONE
+
No preconditioning, i.e. the preconditioner is just a copy
+ operator.
-
prec
-
the preconditioner.
-
-Scope: local
-
-Type: required
-
-Intent: inout.
-
-Specified as: a precondtioner data structure precdatapsb_prec_type
-
-
info
-
Error code.
-
-Scope: local
-
-Type: required
-
-Intent: out.
-
-An integer value; 0 means no error has been detected.
+
DIAG
+
Diagonal scaling; each entry of the input vector is
+ multiplied by the reciprocal of the sum of the absolute values of
+ the coefficients in the corresponding row of matrix ;
+
+
BJAC
+
Precondition by a factorization of the
+ block-diagonal of matrix , where block boundaries are determined
+ by the data allocation boundaries for each process; requires no
+ communication. Only the incomplete factorization is
+ currently implemented.
diff --git a/docs/html/node114.html b/docs/html/node114.html
index a88fde6f..0d05d317 100644
--- a/docs/html/node114.html
+++ b/docs/html/node114.html
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-psb_precaply -- Preconditioner application routine
-
+psb_precbld -- Builds a preconditioner
+
@@ -20,45 +20,44 @@ original version by: Nikos Drakos, CBLU, University of Leeds
-
+
-
-
+
-
-
- Next:psb_precdescr Prints
- Up:Preconditioner routines
- Previous:psb_precbld Builds
- Next:psb_precaply Preconditioner
+ Up:Preconditioner routines
+ Previous:psb_precinit Initialize
+ Contents
the system sparse matrix.
Scope: local
Type: required
-Intent: in.
+Intent: in, target.
-Specified as: a preconditioner data structure precdatapsb_prec_type.
+Specified as: a sparse matrix data structure spdatapsb_Tspmat_type.
-
x
-
the source vector.
+
prec
+
the preconditioner.
+
Scope: local
Type: required
Intent: inout.
-Specified as: a rank one array or an object of type vdatapsb_T_vect_type.
-
+Specified as: an already initialized precondtioner data structure precdatapsb_prec_type
+
desc_a
-
the problem communication descriptor.
+
the problem communication descriptor.
Scope: local
Type: required
-Intent: in.
+Intent: in, target.
-Specified as: a communication data structure descdatapsb_desc_type.
+Specified as: a communication descriptor data structure descdatapsb_desc_type.
-
trans
-
Scope:
+
amold
+
The desired dynamic type for the internal matrix storage.
-Type: optional
+Scope: local.
+
+Type: optional.
Intent: in.
-Specified as: a character.
+Specified as: an object of a class derived from spbasedatapsb_T_base_sparse_mat.
-
work
-
an optional work space
-Scope: local
+
vmold
+
The desired dynamic type for the internal vector storage.
-Type: optional
+Scope: local.
-Intent: inout.
+Type: optional.
+
+Intent: in.
-Specified as: a double precision array.
+Specified as: an object of a class derived from vbasedatapsb_T_base_vect_type.
+
+
@@ -125,16 +130,17 @@ Specified as: a double precision array.
On Return
-
y
-
the destination vector.
+
prec
+
the preconditioner.
+
Scope: local
Type: required
Intent: inout.
-Specified as: a rank one array or an object of type vdatapsb_T_vect_type.
-
+Specified as: a precondtioner data structure precdatapsb_prec_type
+
info
Error code.
diff --git a/docs/html/node115.html b/docs/html/node115.html
index a81962e6..f72936a0 100644
--- a/docs/html/node115.html
+++ b/docs/html/node115.html
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-psb_precdescr -- Prints a description of current preconditioner
-
+psb_precaply -- Preconditioner application routine
+
@@ -18,53 +18,53 @@ original version by: Nikos Drakos, CBLU, University of Leeds
+
-
+
-
-
+
-
-
- Next:Iterative Methods
- Up:Preconditioner routines
- Previous:psb_precaply Preconditioner
- Next:psb_precdescr Prints
+ Up:Preconditioner routines
+ Previous:psb_precbld Builds
+ Contents
@@ -79,15 +79,72 @@ Intent: in.
Specified as: a preconditioner data structure precdatapsb_prec_type.
-
iout
-
output unit.
+
x
+
the source vector.
Scope: local
-Type: optiona
+Type: required
+
+Intent: inout.
+
+Specified as: a rank one array or an object of type vdatapsb_T_vect_type.
+
+
desc_a
+
the problem communication descriptor.
+Scope: local
+
+Type: required
+
+Intent: in.
+
+Specified as: a communication data structure descdatapsb_desc_type.
+
+
trans
+
Scope:
+
+Type: optional
Intent: in.
-Specified as: an integer number.
+Specified as: a character.
+
+
work
+
an optional work space
+Scope: local
+
+Type: optional
+
+Intent: inout.
+
+Specified as: a double precision array.
+
+
+
+
+
+
On Return
+
+
+
y
+
the destination vector.
+Scope: local
+
+Type: required
+
+Intent: inout.
+
+Specified as: a rank one array or an object of type vdatapsb_T_vect_type.
+
+
info
+
Error code.
+
+Scope: local
+
+Type: required
+
+Intent: out.
+
+An integer value; 0 means no error has been detected.
diff --git a/docs/html/node116.html b/docs/html/node116.html
index 91d965f5..6391df3f 100644
--- a/docs/html/node116.html
+++ b/docs/html/node116.html
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-Iterative Methods
-
+psb_precdescr -- Prints a description of current preconditioner
+
@@ -18,61 +18,80 @@ original version by: Nikos Drakos, CBLU, University of Leeds
-
-
-
+
+
-
-
+
-
-
- Next:psb_krylov Krylov
- Up:userhtml
- Previous:psb_precdescr Prints
- Next:Iterative Methods
+ Up:Preconditioner routines
+ Previous:psb_precaply Preconditioner
+ Contents
-In this chapter we provide routines for preconditioners and iterative
-methods. The interfaces for Krylov subspace methods are available in
-the module psb_krylov_mod.
+
-This subroutine is a driver that provides a general interface for all
-the Krylov-Subspace family methods implemented in PSBLAS version 2.
-
-
-The stopping criterion is the normwise backward error, in the infinity
-norm, i.e. the iteration is stopped when
-
-
-
-
-
-
-
-
-or the 2-norm residual reduction
-
-
-
-
-
-
-
-
-according to the value passed through the istop argument (see
-later). In the above formulae, is the tentative solution and
- the corresponding residual at the -th iteration.
-
-
a string that defines the iterative method to be
- used. Supported values are:
-
-
CG:
-
the Conjugate Gradient method;
-
-
-
CGS:
-
the Conjugate Gradient Stabilized method;
+In this chapter we provide routines for preconditioners and iterative
+methods. The interfaces for Krylov subspace methods are available in
+the module psb_krylov_mod.
-
-
BICG:
-
the Bi-Conjugate Gradient method;
-
-
-
BICGSTAB:
-
the Bi-Conjugate Gradient Stabilized method;
-
-
-
BICGSTABL:
-
the Bi-Conjugate Gradient Stabilized method with restarting;
-
-
-
RGMRES:
-
the Generalized Minimal Residual method with restarting.
-
-
-
-
-
a
-
the local portion of global sparse matrix
-.
-
-Scope: local
-
-Type: required
-
-Intent: in.
-
-Specified as: a structured data of type spdatapsb_Tspmat_type.
-
-
prec
-
The data structure containing the preconditioner.
-
-Scope: local
-
-Type: required
-
-Intent: in.
-
-Specified as: a structured data of type precdatapsb_prec_type.
-
-
b
-
The RHS vector.
-
-Scope: local
-
-Type: required
-
-Intent: in.
-
-Specified as: a rank one array or an object of type vdatapsb_T_vect_type.
-
-
x
-
The initial guess.
-
-Scope: local
-
-Type: required
-
-Intent: inout.
-
-Specified as: a rank one array or an object of type vdatapsb_T_vect_type.
-
-
eps
-
The stopping tolerance.
-
-Scope: global
-
-Type: required
-
-Intent: in.
-
-Specified as: a real number.
-
-
desc_a
-
contains data structures for communications.
-
-Scope: local
-
-Type: required
-
-Intent: in.
-
-Specified as: a structured data of type descdatapsb_desc_type.
-
-
itmax
-
The maximum number of iterations to perform.
-
-Scope: global
-
-Type: optional
-
-Intent: in.
-
-Default: .
-
-Specified as: an integer variable .
-
-
itrace
-
If print out an informational message about
- convergence every iterations.
-
-Scope: global
-
-Type: optional
-
-Intent: in.
-
-
irst
-
An integer specifying the restart parameter.
-
-Scope: global
-
-Type: optional.
-
-Intent: in.
-
-Values: . This is employed for the BiCGSTABL or RGMRES
-methods, otherwise it is ignored.
-
-
-
-
istop
-
An integer specifying the stopping criterion.
-
-Scope: global
-
-Type: optional.
-
-Intent: in.
-
-Values: 1: use the normwise backward error, 2: use the scaled 2-norm
-of the residual. Default: 2.
-
-
On Return
-
-
-
x
-
The computed solution.
-
-Scope: local
-
-Type: required
-
-Intent: inout.
-
-Specified as: a rank one array or an object of type vdatapsb_T_vect_type.
-
-
iter
-
The number of iterations performed.
-
-Scope: global
-
-Type: optional
-
-Intent: out.
-
-Returned as: an integer variable.
-
-
err
-
The convergence estimate on exit.
-
-Scope: global
-
-Type: optional
-
-Intent: out.
-
-Returned as: a real number.
-
-
cond
-
An estimate of the condition number of matrix ; only
- available with the method.
-
-Scope: global
-
-Type: optional
-
-Intent: out.
-
-Returned as: a real number.
-
-
info
-
Error code.
-
-Scope: local
-
-Type: required
-
-Intent: out.
-
-An integer value; 0 means no error has been detected.
-
- D. Barbieri, V. Cardellini, S. Filippone and D. Rouson
-Design Patterns for Scientific Computations on Sparse Matrices,
- HPSS 2011, Algorithms and Programming Tools for Next-Generation High-Performance Scientific Software, Bordeaux, Sep. 2011
+
+
-G. Bella, S. Filippone, A. De Maio and M. Testa,
-A Simulation Model for Forest Fires,
-in J. Dongarra, K. Madsen, J. Wasniewski, editors,
-Proceedings of PARA 04 Workshop on State of the Art
-in Scientific Computing, pp. 546-553, Lecture Notes in Computer Science,
-Springer, 2005.
-
A. Buttari, D. di Serafino, P. D'Ambra, S. Filippone,
-2LEV-D2P4: a package of high-performance preconditioners,
-Applicable Algebra in Engineering, Communications and Computing,
-Volume 18, Number 3, May, 2007, pp. 223-239
-
P. D'Ambra, S. Filippone, D. Di Serafino
-On the Development of PSBLAS-based Parallel Two-level Schwarz Preconditioners
-
-Applied Numerical Mathematics, Elsevier Science,
-Volume 57, Issues 11-12, November-December 2007, Pages 1181-1196.
+This subroutine is a driver that provides a general interface for all
+the Krylov-Subspace family methods implemented in PSBLAS version 2.
- Dongarra, J. J., DuCroz, J., Hammarling, S. and Hanson, R.,
-An Extended Set of Fortran Basic Linear Algebra Subprograms,
-ACM Trans. Math. Softw. vol. 14, 1-17, 1988.
-
- Dongarra, J., DuCroz, J., Hammarling, S. and Duff, I.,
-A Set of level 3 Basic Linear Algebra Subprograms,
-ACM Trans. Math. Softw. vol. 16, 1-17, 1990.
-
-J. J. Dongarra and R. C. Whaley,
-A User's Guide to the BLACS v. 1.1,
-Lapack Working Note 94, Tech. Rep. UT-CS-95-281, University of
-Tennessee, March 1995 (updated May 1997).
-
-I. Duff, M. Marrone, G. Radicati and C. Vittoli,
-Level 3 Basic Linear Algebra Subprograms for Sparse Matrices:
-a User Level Interface,
-ACM Transactions on Mathematical Software, 23(3), pp. 379-401, 1997.
-
-I. Duff, M. Heroux and R. Pozo,
-An Overview of the Sparse Basic Linear
-Algebra Subprograms: the New Standard from the BLAS Technical Forum,
-ACM Transactions on Mathematical Software, 28(2), pp. 239-267, 2002.
-
10
+The stopping criterion is the normwise backward error, in the infinity
+norm, i.e. the iteration is stopped when
+
+
+
+
+
+
+
+
+or the 2-norm residual reduction
+
+
+
+
+
+
+
+
+according to the value passed through the istop argument (see
+later). In the above formulae, is the tentative solution and
+ the corresponding residual at the -th iteration.
+
+
-S. Filippone and A. Buttari,
-Object-Oriented Techniques for Sparse Matrix Computations in Fortran 2003,
+Scope: local
-ACM Transactions on Mathematical Software, to appear.
-
-S. Filippone, P. D'Ambra, M. Colajanni,
-Using a Parallel Library of Sparse Linear Algebra in a Fluid Dynamics
-Applications Code on Linux Clusters,
-in G. Joubert, A. Murli, F. Peters, M. Vanneschi, editors,
-Parallel Computing - Advances & Current Issues,
-pp. 441-448, Imperial College Press, 2002.
-
- Gamma, E., Helm, R., Johnson, R., and Vlissides,
- J. 1995.
- Design Patterns: Elements of Reusable Object-Oriented Software.
- Addison-Wesley.
+Type: required
+
+Intent: in.
+
+Specified as: a structured data of type spdatapsb_Tspmat_type.
+
+
prec
+
The data structure containing the preconditioner.
+
+Scope: local
+
+Type: required
+
+Intent: in.
+
+Specified as: a structured data of type precdatapsb_prec_type.
+
+
b
+
The RHS vector.
+
+Scope: local
+
+Type: required
+
+Intent: in.
+
+Specified as: a rank one array or an object of type vdatapsb_T_vect_type.
+
+
x
+
The initial guess.
+
+Scope: local
+
+Type: required
+
+Intent: inout.
+
+Specified as: a rank one array or an object of type vdatapsb_T_vect_type.
+
+
eps
+
The stopping tolerance.
+
+Scope: global
+
+Type: required
+
+Intent: in.
+
+Specified as: a real number.
+
+
desc_a
+
contains data structures for communications.
+
+Scope: local
+
+Type: required
+
+Intent: in.
+
+Specified as: a structured data of type descdatapsb_desc_type.
+
+
itmax
+
The maximum number of iterations to perform.
+
+Scope: global
+
+Type: optional
+
+Intent: in.
+
+Default: .
+
+Specified as: an integer variable .
+
+
itrace
+
If print out an informational message about
+ convergence every iterations.
+
+Scope: global
+
+Type: optional
+
+Intent: in.
+
+
irst
+
An integer specifying the restart parameter.
+
+Scope: global
+
+Type: optional.
+
+Intent: in.
+
+Values: . This is employed for the BiCGSTABL or RGMRES
+methods, otherwise it is ignored.
-Karypis, G. and Kumar, V.,
-METIS: Unstructured Graph Partitioning and Sparse Matrix
- Ordering System.
-Minneapolis, MN 55455: University of Minnesota, Department of
- Computer Science, 1995.
-Internet Address: http://www.cs.umn.edu/~karypis.
-
An integer specifying the stopping criterion.
+
+Scope: global
+
+Type: optional.
+
+Intent: in.
+
+Values: 1: use the normwise backward error, 2: use the scaled 2-norm
+of the residual. Default: 2.
+
+
On Return
-Lawson, C., Hanson, R., Kincaid, D. and Krogh, F.,
- Basic Linear Algebra Subprograms for Fortran usage,
-ACM Trans. Math. Softw. vol. 5, 38-329, 1979.
+
+
x
+
The computed solution.
+
+Scope: local
+
+Type: required
+
+Intent: inout.
+
+Specified as: a rank one array or an object of type vdatapsb_T_vect_type.
+
+
iter
+
The number of iterations performed.
+
+Scope: global
+
+Type: optional
+
+Intent: out.
+
+Returned as: an integer variable.
+
+
err
+
The convergence estimate on exit.
+
+Scope: global
+
+Type: optional
+
+Intent: out.
+
+Returned as: a real number.
+
+
cond
+
An estimate of the condition number of matrix ; only
+ available with the method.
+
+Scope: global
+
+Type: optional
+
+Intent: out.
+
+Returned as: a real number.
+
+
info
+
Error code.
+
+Scope: local
+
+Type: required
+
+Intent: out.
+
+An integer value; 0 means no error has been detected.
+
-Machiels, L. and Deville, M.
-Fortran 90: An entry to object-oriented programming for the solution
- of partial differential equations.
-ACM Trans. Math. Softw. vol. 23, 32-49.
-
-M. Snir, S. Otto, S. Huss-Lederman, D. Walker and J. Dongarra,
-MPI: The Complete Reference. Volume 1 - The MPI Core, second edition,
-MIT Press, 1998.
-
-
+
+
+
+
+
+
+
+
+
+
+
+ Next:Bibliography
+ Up:Iterative Methods
+ Previous:Iterative Methods
+ Contents
+
diff --git a/docs/html/node119.html b/docs/html/node119.html
index 7060aa2f..b69ac18d 100644
--- a/docs/html/node119.html
+++ b/docs/html/node119.html
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-About this document ...
-
+Bibliography
+
@@ -18,52 +18,165 @@ original version by: Nikos Drakos, CBLU, University of Leeds
-
+
+
+
-
-
+
+
-
-
- Up: Next: About this document ...
+ Up:userhtml
- Previous:Bibliography
- Previous:psb_krylov Krylov
+ Contents
-
-
+
+ D. Barbieri, V. Cardellini, S. Filippone and D. Rouson
+Design Patterns for Scientific Computations on Sparse Matrices,
+ HPSS 2011, Algorithms and Programming Tools for Next-Generation High-Performance Scientific Software, Bordeaux, Sep. 2011
+
+
+G. Bella, S. Filippone, A. De Maio and M. Testa,
+A Simulation Model for Forest Fires,
+in J. Dongarra, K. Madsen, J. Wasniewski, editors,
+Proceedings of PARA 04 Workshop on State of the Art
+in Scientific Computing, pp. 546-553, Lecture Notes in Computer Science,
+Springer, 2005.
+
A. Buttari, D. di Serafino, P. D'Ambra, S. Filippone,
+2LEV-D2P4: a package of high-performance preconditioners,
+Applicable Algebra in Engineering, Communications and Computing,
+Volume 18, Number 3, May, 2007, pp. 223-239
+
P. D'Ambra, S. Filippone, D. Di Serafino
+On the Development of PSBLAS-based Parallel Two-level Schwarz Preconditioners
+
+Applied Numerical Mathematics, Elsevier Science,
+Volume 57, Issues 11-12, November-December 2007, Pages 1181-1196.
-
+ Dongarra, J. J., DuCroz, J., Hammarling, S. and Hanson, R.,
+An Extended Set of Fortran Basic Linear Algebra Subprograms,
+ACM Trans. Math. Softw. vol. 14, 1-17, 1988.
+
+ Dongarra, J., DuCroz, J., Hammarling, S. and Duff, I.,
+A Set of level 3 Basic Linear Algebra Subprograms,
+ACM Trans. Math. Softw. vol. 16, 1-17, 1990.
+
+J. J. Dongarra and R. C. Whaley,
+A User's Guide to the BLACS v. 1.1,
+Lapack Working Note 94, Tech. Rep. UT-CS-95-281, University of
+Tennessee, March 1995 (updated May 1997).
+
+I. Duff, M. Marrone, G. Radicati and C. Vittoli,
+Level 3 Basic Linear Algebra Subprograms for Sparse Matrices:
+a User Level Interface,
+ACM Transactions on Mathematical Software, 23(3), pp. 379-401, 1997.
+
+I. Duff, M. Heroux and R. Pozo,
+An Overview of the Sparse Basic Linear
+Algebra Subprograms: the New Standard from the BLAS Technical Forum,
+ACM Transactions on Mathematical Software, 28(2), pp. 239-267, 2002.
+
+S. Filippone and M. Colajanni,
+PSBLAS: A Library for Parallel Linear Algebra
+Computation on Sparse Matrices,
+
+ACM Transactions on Mathematical Software, 26(4), pp. 527-550, 2000.
+
+S. Filippone, P. D'Ambra, M. Colajanni,
+Using a Parallel Library of Sparse Linear Algebra in a Fluid Dynamics
+Applications Code on Linux Clusters,
+in G. Joubert, A. Murli, F. Peters, M. Vanneschi, editors,
+Parallel Computing - Advances & Current Issues,
+pp. 441-448, Imperial College Press, 2002.
+
+Karypis, G. and Kumar, V.,
+METIS: Unstructured Graph Partitioning and Sparse Matrix
+ Ordering System.
+Minneapolis, MN 55455: University of Minnesota, Department of
+ Computer Science, 1995.
+Internet Address: http://www.cs.umn.edu/~karypis.
+
+Machiels, L. and Deville, M.
+Fortran 90: An entry to object-oriented programming for the solution
+ of partial differential equations.
+ACM Trans. Math. Softw. vol. 23, 32-49.
+
+M. Snir, S. Otto, S. Huss-Lederman, D. Walker and J. Dongarra,
+MPI: The Complete Reference. Volume 1 - The MPI Core, second edition,
+MIT Press, 1998.
+
+
-The translation was initiated by Salvatore Filippone on 2012-04-16
diff --git a/docs/html/node12.html b/docs/html/node12.html
index 32eab5c9..f196940c 100644
--- a/docs/html/node12.html
+++ b/docs/html/node12.html
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-get_local_cols -- Get number of local cols
-
+get_local_rows -- Get number of local rows
+
@@ -20,54 +20,54 @@ original version by: Nikos Drakos, CBLU, University of Leeds
-
+
-
-
+
-
-
- Next:get_global_rows Get
- Up:Descriptor data structure
- Previous:get_local_rows Get
- Next:get_local_cols Get
+ Up:Descriptor data structure
+ Previous:Methods
+ Contents
the communication descriptor.
@@ -81,17 +81,16 @@ Scope: local.
Function value
-
The number of local cols, i.e. the number of
- indices used by the current process, including both local and halo
- indices; as explained in 1,
- it is equal to
. The
- returned value is specific to the calling process.
+ WIDTH="70" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
+ SRC="img10.png"
+ ALT="$\vert{\cal I}_i\vert + \vert{\cal B}_i\vert$">. The returned value is
+ specific to the calling process.
+The translation was initiated by Salvatore Filippone on 2012-04-17
+
+
+
+
diff --git a/docs/html/node13.html b/docs/html/node13.html
index 3402b788..72c02d97 100644
--- a/docs/html/node13.html
+++ b/docs/html/node13.html
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-get_global_rows -- Get number of global rows
-
+get_local_cols -- Get number of local cols
+
@@ -20,44 +20,44 @@ original version by: Nikos Drakos, CBLU, University of Leeds
-
+
-
-
+
-
-
- Next:get_global_cols Get
- Up:Descriptor data structure
- Previous:get_local_cols Get
- Next:get_global_rows Get
+ Up:Descriptor data structure
+ Previous:get_local_rows Get
+ Contents
The number of global rows, i.e. the size of the
- global index space.
+
The number of local cols, i.e. the number of
+ indices used by the current process, including both local and halo
+ indices; as explained in 1,
+ it is equal to
+. The
+ returned value is specific to the calling process.
diff --git a/docs/html/node14.html b/docs/html/node14.html
index 89e00849..24667baf 100644
--- a/docs/html/node14.html
+++ b/docs/html/node14.html
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-get_global_cols -- Get number of global cols
-
+get_global_rows -- Get number of global rows
+
@@ -18,55 +18,56 @@ original version by: Nikos Drakos, CBLU, University of Leeds
+
-
+
-
-
+
-
-
- Next:get_context Get communication context
- Up:Descriptor data structure
- Previous:get_global_rows Get
- Next:get_global_cols Get
+ Up:Descriptor data structure
+ Previous:get_local_cols Get
+ Contents
the communication descriptor.
@@ -80,8 +81,8 @@ Scope: local.
Function value
-
The number of global cols; usually this is equal
- to the number of global rows.
+
The number of global rows, i.e. the size of the
+ global index space.
diff --git a/docs/html/node15.html b/docs/html/node15.html
index e2ee16b1..d56f398c 100644
--- a/docs/html/node15.html
+++ b/docs/html/node15.html
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-get_context--Get communication context
-
+get_global_cols -- Get number of global cols
+
@@ -18,46 +18,45 @@ original version by: Nikos Drakos, CBLU, University of Leeds
-
-
-
+
+
-
-
+
-
-
- Next:psb_cd_get_large_threshold Get
- Up:Data Structures and Classes
- Previous:get_global_cols Get
- Next:get_context Get communication context
+ Up:Descriptor data structure
+ Previous:get_global_rows Get
+ Contents
the new threshold for communication descriptors.
-
-Scope: global.
-
-Type: required.
-
-Intent: in.
-
-Specified as: an integer value greater than zero.
+
Function value
+
The current value for the size threshold.
+
+
-Note: the threshold value is only queried by the library at the time a
-call to psb_cdall is executed, therefore changing the threshold
-has no effect on communication descriptors that have already been
-initialized. Moreover the threshold must have the same value on all
-processes.
Fetch halo elements from neighbouring processes;
-
-
psb_sum_
-
Sum overlapped elements
-
-
psb_avg_
-
Average overlapped elements
+
Type:
+
Synchronous.
-
psb_comm_halo_
-
Exchange data based on the halo_index
- list;
+
On Entry
+
-
psb_comm_ext_
-
Exchange data based on the ext_index
- list;
-
-
psb_comm_ovr_
-
Exchange data based on the ovrlap_index
- list;
-
-
psb_comm_mov_
-
Exchange data based on the ovr_mst_idx
- list;
-
-
+
ith
+
the new threshold for communication descriptors.
+
+Scope: global.
+
+Type: required.
+
+Intent: in.
+
+Specified as: an integer value greater than zero.
+Note: the threshold value is only queried by the library at the time a
+call to psb_cdall is executed, therefore changing the threshold
+has no effect on communication descriptors that have already been
+initialized. Moreover the threshold must have the same value on all
+processes.
diff --git a/docs/html/node19.html b/docs/html/node19.html
index 1e980d73..c6d964fe 100644
--- a/docs/html/node19.html
+++ b/docs/html/node19.html
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-Sparse Matrix class
-
+Named Constants
+
@@ -18,181 +18,81 @@ original version by: Nikos Drakos, CBLU, University of Leeds
-
-
-
+
+
-
-
+
-
-
- Next:Methods
- Up:Data Structures and Classes
- Previous:Named Constants
- Next:Sparse Matrix class
+ Up:get_context Get communication context
+ Previous:psb_cd_set_large_threshold Set
+ Contents
-
-
+
+
-Sparse Matrix class
-
-The spdatapsb_Tspmat_type class
-contains all information about the local portion of the sparse matrix and
-its storage mode. Its design is
-based on the STATE design pattern [13] as detailed
-in [11]; the type declaration is shown in
-figure 4 where T is a placeholder for the
-data type and precision variants
+Named Constants
+
-
S
-
Single precision real;
+
psb_none_
+
Generic no-op;
-
D
-
Double precision real;
+
psb_nohalo_
+
Do not fetch halo elements;
-
C
-
Single precision complex;
+
psb_halo_
+
Fetch halo elements from neighbouring processes;
-
Z
-
Double precision complex.
+
psb_sum_
+
Sum overlapped elements
-
-The actual data is contained in the polymorphic component a%a
-of type spbasedatapsb_T_base_sparse_mat; its
-specific layout can be chosen dynamically among the predefined types,
-or an entirely new storage layout can be implemented and passed to the
-library at runtime via the psb_spasb routine.
-
-
-
-
Figure 4:
- The PSBLAS defined data type that
- contains a sparse matrix.
-
-
-
-
- type :: psb_Tspmat_type
-
- class(psb_T_base_sparse_mat), allocatable :: a
-
- end type psb_Tspmat_type
-
-
-
-
-
-
-The following very common formats are precompiled in PSBLAS and thus
-are always available:
-
-
psb_T_coo_sparse_mat
-
Coordinate storage;
+
psb_avg_
+
Average overlapped elements
-
psb_T_csr_sparse_mat
-
Compressed storage by rows;
+
psb_comm_halo_
+
Exchange data based on the halo_index
+ list;
-
psb_T_csc_sparse_mat
-
Compressed storage by columns;
+
psb_comm_ext_
+
Exchange data based on the ext_index
+ list;
-
-The inner sparse matrix has an associated state, which can take the
-following values:
-
-
Build:
-
State entered after the first allocation, and before the
- first assembly; in this state it is possible to add nonzero entries.
-
-
Assembled:
-
State entered after the assembly; computations using
- the sparse matrix, such as matrix-vector products, are only possible
- in this state;
+
psb_comm_ovr_
+
Exchange data based on the ovrlap_index
+ list;
-
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.
+
psb_comm_mov_
+
Exchange data based on the ovr_mst_idx
+ list;
+
+
-The only storage variant supporting the build state is COO; all other
-variants are obtained by conversion to/from it.
The PSBLAS library version 3 is implemented in
the Fortran 2003 [17] programming language, with reuse and/or
+ HREF="node119.html#metcalf">17] programming language, with reuse and/or
adaptation of existing Fortran 77 and Fortran 95 software, plus a
handful of C routines.
@@ -81,11 +81,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 [11]; other
+ HREF="node119.html#Sparse03">11]; other
works discussing advanced programming in Fortran 2003
include [1,18]; sufficient support for
+ HREF="node119.html#DesPat:11">1,18]; 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).
@@ -94,7 +94,7 @@ Previous approaches have been based on mixing Fortran 95, with its
support for object-based design, with other languages; these have
been advocated by a number of authors,
e.g. [16]. Moreover, the Fortran 95 facilities for dynamic
+ HREF="node119.html#machiels">16]. Moreover, the Fortran 95 facilities for dynamic
memory management and interface overloading greatly enhance the
usability of the PSBLAS
subroutines. In this way, the library can take care of runtime memory
@@ -105,12 +105,12 @@ implementation or compilation time.
The presentation of the
PSBLAS library follows the general structure of the proposal for
serial Sparse BLAS [8,9], which in its turn is based on the
+ HREF="node119.html#sblas97">8,9], which in its turn is based on the
proposal for BLAS on dense matrices [15,5,6].
+ HREF="node119.html#BLAS1">15,5,6].
The applicability of sparse iterative solvers to many different areas
@@ -144,26 +144,26 @@ computational fluid dynamics applications.
+The spdatapsb_Tspmat_type class
+contains all information about the local portion of the sparse matrix and
+its storage mode. Its design is
+based on the STATE design pattern [13] as detailed
+in [11]; the type declaration is shown in
+figure 4 where T is a placeholder for the
+data type and precision variants
+
+
S
+
Single precision real;
+
+
D
+
Double precision real;
+
+
C
+
Single precision complex;
+
+
Z
+
Double precision complex.
+
+
+The actual data is contained in the polymorphic component a%a
+of type spbasedatapsb_T_base_sparse_mat; its
+specific layout can be chosen dynamically among the predefined types,
+or an entirely new storage layout can be implemented and passed to the
+library at runtime via the psb_spasb routine.
+
+
+
+
Figure 4:
+ The PSBLAS defined data type that
+ contains a sparse matrix.
+
+
+
+
+ type :: psb_Tspmat_type
+
+ class(psb_T_base_sparse_mat), allocatable :: a
+
+ end type psb_Tspmat_type
+
+
+
+
+
+
+The following very common formats are precompiled in PSBLAS and thus
+are always available:
+
+
psb_T_coo_sparse_mat
+
Coordinate storage;
+
+
psb_T_csr_sparse_mat
+
Compressed storage by rows;
+
+
psb_T_csc_sparse_mat
+
Compressed storage by columns;
+
+
+The inner sparse matrix has an associated state, which can take the
+following values:
+
+
Build:
+
State entered after the first allocation, and before the
+ first assembly; in this state it is possible to add nonzero entries.
+
+
Assembled:
+
State entered after the assembly; computations using
+ the sparse matrix, such as matrix-vector products, are only possible
+ in this state;
+
+
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.
+
+
+The only storage variant supporting the build state is COO; all other
+variants are obtained by conversion to/from it.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Next:Methods
+ Up:Data Structures and Classes
+ Previous:Named Constants
+ Contents
+
diff --git a/docs/html/node21.html b/docs/html/node21.html
index de71e506..c72eb73b 100644
--- a/docs/html/node21.html
+++ b/docs/html/node21.html
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-get_nrows -- Get number of rows in a sparse matrix
-
+Methods
+
@@ -20,72 +20,40 @@ original version by: Nikos Drakos, CBLU, University of Leeds
-
+
-
-
+
-
-
- Next:get_ncols Get
- Up:Sparse Matrix class
- Previous:Methods
- Next:get_nrows Get
+ Up:Sparse Matrix class
+ Previous:Sparse Matrix class
+ Contents
diff --git a/docs/html/node22.html b/docs/html/node22.html
index 0d132dc8..d88d2f3b 100644
--- a/docs/html/node22.html
+++ b/docs/html/node22.html
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-get_ncols -- Get number of columns in a sparse matrix
-
+get_nrows -- Get number of rows in a sparse matrix
+
@@ -20,44 +20,44 @@ original version by: Nikos Drakos, CBLU, University of Leeds
-
+
-
-
+
-
-
- Next:get_nnzeros Get
- Up:Sparse Matrix class
- Previous:get_nrows Get
- Next:get_ncols Get
+ Up:Sparse Matrix class
+ Previous:Methods
+ Contents
diff --git a/docs/html/node23.html b/docs/html/node23.html
index b6da4a85..ad347d89 100644
--- a/docs/html/node23.html
+++ b/docs/html/node23.html
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-get_nnzeros -- Get number of nonzero elements in a sparse matrix
-
+get_ncols -- Get number of columns in a sparse matrix
+
@@ -20,45 +20,44 @@ original version by: Nikos Drakos, CBLU, University of Leeds
-
+
-
-
+
-
-
- Next:get_size Get
- Up:Sparse Matrix class
- Previous:get_ncols Get
- Next:get_nnzeros Get
+ Up:Sparse Matrix class
+ Previous:get_nrows Get
+ Contents
The number of nonzero elements stored in sparse matrix a.
+
The number of columns of sparse matrix a.
-
-Notes
-
-
-
The function value is specific to the storage format of matrix
- a; some storage formats employ padding, thus the returned
- value for the same matrix may be different for different storage choices.
-
-
-
diff --git a/docs/html/node24.html b/docs/html/node24.html
index 850bc087..0789665c 100644
--- a/docs/html/node24.html
+++ b/docs/html/node24.html
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-get_size -- Get maximum number of nonzero elements in a sparse matrix
-
+get_nnzeros -- Get number of nonzero elements in a sparse matrix
+
@@ -20,45 +20,45 @@ original version by: Nikos Drakos, CBLU, University of Leeds
-
+
-
-
+
-
-
- Next:sizeof Get
- Up:Sparse Matrix class
- Previous:get_nnzeros Get
- Next:get_size Get
+ Up:Sparse Matrix class
+ Previous:get_ncols Get
+ Contents
The maximum number of nonzero elements that can
- be stored in sparse matrix a using its current memory allocation.
+
The number of nonzero elements stored in sparse matrix a.
+
+Notes
+
+
+
The function value is specific to the storage format of matrix
+ a; some storage formats employ padding, thus the returned
+ value for the same matrix may be different for different storage choices.
+
+
+
diff --git a/docs/html/node25.html b/docs/html/node25.html
index 2151abc4..f8430abc 100644
--- a/docs/html/node25.html
+++ b/docs/html/node25.html
@@ -7,10 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-sizeof -- Get memory occupation in bytes
-of a sparse matrix
-
+get_size -- Get maximum number of nonzero elements in a sparse matrix
+
@@ -22,45 +20,45 @@ of a sparse matrix">
-
+
-
-
+
-
-
- Next:get_fmt Short
- Up:Sparse Matrix class
- Previous:get_size Get
- Next:sizeof Get
+ Up:Sparse Matrix class
+ Previous:get_nnzeros Get
+ Contents
The maximum number of nonzero elements that can
+ be stored in sparse matrix a using its current memory allocation.
diff --git a/docs/html/node26.html b/docs/html/node26.html
index d592e6d8..c6abf81e 100644
--- a/docs/html/node26.html
+++ b/docs/html/node26.html
@@ -7,8 +7,10 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-get_fmt -- Short description of the dynamic type
-
+sizeof -- Get memory occupation in bytes
+of a sparse matrix
+
@@ -20,44 +22,45 @@ original version by: Nikos Drakos, CBLU, University of Leeds
-
+
-
-
+
-
-
- Next:is_bld, is_upd, is_asb
- Up:Sparse Matrix class
- Previous:sizeof Get
- Next:get_fmt Short
+ Up:Sparse Matrix class
+ Previous:get_size Get
+ Contents
A short string describing the dynamic type of
- the matrix. Predefined values include NULL, COO,
- CSR and CSC.
+
The memory occupation in bytes.
diff --git a/docs/html/node27.html b/docs/html/node27.html
index e918ba8d..6f75ccd9 100644
--- a/docs/html/node27.html
+++ b/docs/html/node27.html
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-is_bld, is_upd, is_asb -- Status check
-
+get_fmt -- Short description of the dynamic type
+
@@ -20,46 +20,44 @@ original version by: Nikos Drakos, CBLU, University of Leeds
-
+
-
-
+
-
-
- Next:Named Constants
- Up:Sparse Matrix class
- Previous:get_fmt Short
- Next:is_bld, is_upd, is_asb
+ Up:Sparse Matrix class
+ Previous:sizeof Get
+ Contents
+if (a%is_bld()) then
+if (a%is_upd()) then
+if (a%is_asb()) then
+
+
+
-
psb_dupl_ovwrt_
-
Duplicate coefficients should be overwritten
- (i.e. ignore duplications)
-
-
psb_dupl_add_
-
Duplicate coefficients should be added;
+
Type:
+
Asynchronous.
-
psb_dupl_err_
-
Duplicate coefficients should trigger an error conditino
+
On Entry
+
-
psb_upd_dflt_
-
Default update strategy for matrix coefficients;
-
-
psb_upd_srch_
-
Update strategy based on search into the data structure;
+
a
+
the sparse matrix
+
+Scope: local
+
+
+
+
+
+
On Return
+
-
psb_upd_perm_
-
Update strategy based on additional
- permutation data (see tools routine description).
+
Function value
+
A logical value indicating whether the
+ matrix is in the Build, Update or Assembled state, respectively.
diff --git a/docs/html/node29.html b/docs/html/node29.html
index dffb7400..2d19df44 100644
--- a/docs/html/node29.html
+++ b/docs/html/node29.html
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-Dense Vector Data Structure
-
+Named Constants
+
@@ -18,147 +18,68 @@ original version by: Nikos Drakos, CBLU, University of Leeds
-
-
-
+
+
-
-
+
-
-
- Next:Methods
- Up:Data Structures and Classes
- Previous:Named Constants
- Next:Dense Vector Data Structure
+ Up:Sparse Matrix class
+ Previous:is_bld, is_upd, is_asb
+ Contents
-
-
+
+
-Dense Vector Data Structure
-
-The vdatapsb_T_vect_type data structure
-encapsulates the dense vectors in a way similar to sparse matrices,
-i.e. including a base type vbasedata psb_T_base_vect_type.
-The user will not, in general, access the vector components directly,
-but rather via the routines of sec. 6. Among other
-simple things, we define here an extraction method that can be used to
-get a full copy of the part of the vector stored on the local
-process.
-
-
-The type declaration is shown in
-figure 5 where T is a placeholder for the
-data type and precision variants
+Named Constants
+
-
I
-
Integer;
+
psb_dupl_ovwrt_
+
Duplicate coefficients should be overwritten
+ (i.e. ignore duplications)
+
+
psb_dupl_add_
+
Duplicate coefficients should be added;
-
S
-
Single precision real;
+
psb_dupl_err_
+
Duplicate coefficients should trigger an error conditino
-
D
-
Double precision real;
+
psb_upd_dflt_
+
Default update strategy for matrix coefficients;
-
C
-
Single precision complex;
+
psb_upd_srch_
+
Update strategy based on search into the data structure;
-
Z
-
Double precision complex.
+
psb_upd_perm_
+
Update strategy based on additional
+ permutation data (see tools routine description).
-The actual data is contained in the polymorphic component v%v;
-the separation between the application and the actual data is
-essential for cases where it is necessary to link to data storage made
-available elsewhere outside the direct control of the
-compiler/application, e.g. data stored in a graphics accelerator's
-private memory.
-
-
-
-
Figure 5:
- The PSBLAS defined data type that
- contains a dense vector.
-
-
-
-
- type psb_T_base_vect_type
- TYPE(KIND_), allocatable :: v(:)
- end type psb_T_base_vect_type
-
- type psb_T_vect_type
- class(psb_T_base_vect_type), allocatable :: v
- end type psb_T_vect_type
-
@@ -78,14 +78,14 @@ 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 [7].
+ HREF="node119.html#BLACS">7].
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. 7.
+further details on our communication layer see Sec. 7.
-
+
Figure 1:
PSBLAS library components hierarchy.
@@ -134,7 +134,7 @@ equation indices to processes.
In particular it is consistent with the
usage of graph partitioning tools commonly available in the
literature, e.g. METIS [14].
+ HREF="node119.html#METIS">14].
Dense vectors conform to sparse
matrices, that is, the entries of a vector follow the same distribution
of the matrix rows.
@@ -154,38 +154,43 @@ bottleneck would make this option unattractive in most cases.
Subsections
+The vdatapsb_T_vect_type data structure
+encapsulates the dense vectors in a way similar to sparse matrices,
+i.e. including a base type vbasedata psb_T_base_vect_type.
+The user will not, in general, access the vector components directly,
+but rather via the routines of sec. 6. Among other
+simple things, we define here an extraction method that can be used to
+get a full copy of the part of the vector stored on the local
+process.
+
+
+The type declaration is shown in
+figure 5 where T is a placeholder for the
+data type and precision variants
+
+
I
+
Integer;
+
+
S
+
Single precision real;
+
+
D
+
Double precision real;
+
+
C
+
Single precision complex;
+
+
Z
+
Double precision complex.
+
+
+The actual data is contained in the polymorphic component v%v;
+the separation between the application and the actual data is
+essential for cases where it is necessary to link to data storage made
+available elsewhere outside the direct control of the
+compiler/application, e.g. data stored in a graphics accelerator's
+private memory.
+
+
+
+
Figure 5:
+ The PSBLAS defined data type that
+ contains a dense vector.
+
+
+
+
+ type psb_T_base_vect_type
+ TYPE(KIND_), allocatable :: v(:)
+ end type psb_T_base_vect_type
+
+ type psb_T_vect_type
+ class(psb_T_base_vect_type), allocatable :: v
+ end type psb_T_vect_type
+
diff --git a/docs/html/node32.html b/docs/html/node32.html
index 61b7a9e0..9ff87361 100644
--- a/docs/html/node32.html
+++ b/docs/html/node32.html
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-get_ncols -- Get number of columns in a sparse matrix
-
+get_nrows -- Get number of rows in a dense vector
+
@@ -20,41 +20,71 @@ original version by: Nikos Drakos, CBLU, University of Leeds
-
+
-
-
+
-
-
- Next:sizeof Get
- Up:Dense Vector Data Structure
- Previous:get_nrows Get
- Next:get_ncols Get
+ Up:Dense Vector Data Structure
+ Previous:Methods
+ Contents
diff --git a/docs/html/node33.html b/docs/html/node33.html
index 2a905ce4..b1a38c2e 100644
--- a/docs/html/node33.html
+++ b/docs/html/node33.html
@@ -7,10 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-sizeof -- Get memory occupation in bytes
-of a dense vector matrix
-
+get_ncols -- Get number of columns in a sparse matrix
+
@@ -22,72 +20,41 @@ of a dense vector matrix">
-
+
-
-
+
-
-
- Next:get_vect Get
- Up:Dense Vector Data Structure
- Previous:get_ncols Get
- Next:sizeof Get
+ Up:Dense Vector Data Structure
+ Previous:get_nrows Get
+ Contents
diff --git a/docs/html/node34.html b/docs/html/node34.html
index c6d784f9..a4d7d073 100644
--- a/docs/html/node34.html
+++ b/docs/html/node34.html
@@ -7,8 +7,10 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-get_vect -- Get a copy of the vector contents
-
+sizeof -- Get memory occupation in bytes
+of a dense vector matrix
+
@@ -18,45 +20,47 @@ original version by: Nikos Drakos, CBLU, University of Leeds
+
-
+
-
-
+
-
-
- Next:Preconditioner data structure
- Up:Dense Vector Data Structure
- Previous:sizeof Get
- Next:get_vect Get
+ Up:Dense Vector Data Structure
+ Previous:get_ncols Get
+ Contents
An allocatable array holding a copy of the dense
- vector contents.
+
The memory occupation in bytes.
diff --git a/docs/html/node35.html b/docs/html/node35.html
index c22c353a..d5b6dec9 100644
--- a/docs/html/node35.html
+++ b/docs/html/node35.html
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-Preconditioner data structure
-
+get_vect -- Get a copy of the vector contents
+
@@ -18,70 +18,72 @@ original version by: Nikos Drakos, CBLU, University of Leeds
-
-
+
+
-
-
+
-
-
- Next:Computational routines
- Up:Data Structures and Classes
- Previous:get_vect Get
- Next:Preconditioner data structure
+ Up:Dense Vector Data Structure
+ Previous:sizeof Get
+ Contents
-
-
-
-Preconditioner data structure
-
-Our base library offers support for simple well known preconditioners
-like Diagonal Scaling or Block Jacobi with incomplete
-factorization ILU(0).
+
-A preconditioner is held in the precdata psb_prec_type data structure reported in
-figure 6. The psb_prec_type
-data type may contain a simple preconditioning matrix with the
-associated communication descriptor.The internal preconditioner is allocated appropriately with the
-dynamic type corresponding to the desired preconditioner.
-
-
-
-
Figure 6:
-The PSBLAS defined data type that contains a preconditioner.
-
-
-
- type psb_Tprec_type
- class(psb_T_base_prec_type), allocatable :: prec
- end type psb_Tprec_type
-
-
-
-
-
+extv = v%get_vect()
+
+
+
+
+
Type:
+
Asynchronous.
+
+
On Entry
+
+
+
v
+
the dense vector
+
+Scope: local
+
+
+
+
+
+
On Return
+
+
+
Function value
+
An allocatable array holding a copy of the dense
+ vector contents.
+
+
diff --git a/docs/html/node36.html b/docs/html/node36.html
index 6bfb0c1f..204ce4f7 100644
--- a/docs/html/node36.html
+++ b/docs/html/node36.html
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-Computational routines
-
+Preconditioner data structure
+
@@ -18,77 +18,72 @@ original version by: Nikos Drakos, CBLU, University of Leeds
-
-
-
+
+
-
-
+
-
-
- Next:psb_geaxpby General
- Up:userhtml
- Previous:Preconditioner data structure
- Next:Computational routines
+ Up:Data Structures and Classes
+ Previous:get_vect Get
+ Contents
+Our base library offers support for simple well known preconditioners
+like Diagonal Scaling or Block Jacobi with incomplete
+factorization ILU(0).
-
-
-Subsections
+A preconditioner is held in the precdata psb_prec_type data structure reported in
+figure 6. The psb_prec_type
+data type may contain a simple preconditioning matrix with the
+associated communication descriptor.The internal preconditioner is allocated appropriately with the
+dynamic type corresponding to the desired preconditioner.
-
the scalar .
-
-Scope: global
-
-Type: required
-
-Intent: in.
-
-Specified as: a number of the data type indicated in Table 1.
-
-
x
-
the local portion of global dense matrix
-.
-
-Scope: local
-
-Type: required
-
-Intent: in.
-
-Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type
-containing numbers of type
-specified in Table 1. The rank of must be the same of .
-
-
beta
-
the scalar .
-
-Scope: global
-
-Type: required
-
-Intent: in.
-
-Specified as: a number of the data type indicated in Table 1.
-
-
y
-
the local portion of the global dense matrix
-.
-
-Scope: local
-
-Type: required
-
-Intent: inout.
-
-Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type containing numbers of the type
-indicated in Table 1. The rank of must be the same of .
-
-
desc_a
-
contains data structures for communications.
-
-Scope: local
-
-Type: required
-
-Intent: in.
-
-Specified as: an object of type descdatapsb_desc_type.
-
-
-
-
-
-
-
-
On Return
-
-
-
y
-
the local portion of result submatrix .
-
-Scope: local
-
-Type: required
-
-Intent: inout.
-
-Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type containing numbers of the type
-indicated in Table 1.
-
-
info
-
Error code.
-
-Scope: local
-
-Type: required
-
-Intent: out.
-
-An integer value; 0 means no error has been detected.
-
-This function computes dot product between two vectors and
-.
-
-If and are real vectors
-it computes dot-product as:
-
-
-
-
-
-
-
-
-Else if and are complex vectors then it computes dot-product as:
+This subroutine is an interface to the computational kernel for
+dense matrix sum:
-psb_gedot(x, y, desc_a, info)
+call psb_geaxpby(alpha, x, beta, y, desc_a, info)
+
+
-
+
-
Table 2:
+
Table 1:
Data types
, ,
-
Function
+ ALT="$y$">, ,
+
Subroutine
Short Precision Real
-
psb_gedot
+
psb_geaxpby
Long Precision Real
-
psb_gedot
+
psb_geaxpby
Short Precision Complex
-
psb_gedot
+
psb_geaxpby
Long Precision Complex
-
psb_gedot
+
psb_geaxpby
@@ -162,6 +130,20 @@ Data types
On Entry
+
alpha
+
the scalar .
+
+Scope: global
+
+Type: required
+
+Intent: in.
+
+Specified as: a number of the data type indicated in Table 1.
+
x
the local portion of global dense matrix
required
Intent: in.
-Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type
-containing numbers of type specified in
-Table 2. The rank of psb_T_vect_type
+containing numbers of type
+specified in Table 1. The rank of must be the same of 2. The rank of .
+
beta
+
the scalar .
+
+Scope: global
+
+Type: required
+
+Intent: in.
+
+Specified as: a number of the data type indicated in Table 1.
+
y
-
the local portion of global dense matrix
+
the local portion of the global dense matrix
local
Type: required
-Intent: in.
+Intent: inout.
-Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type
-containing numbers of type specified in
-Table 2. The rank of psb_T_vect_type containing numbers of the type
+indicated in Table 1. The rank of must be the same of psb_desc_type.
+
+
+
+
On Return
-
Function value
-
is the dot product of subvectors and y
+
the local portion of result submatrix .
-Scope: global
+Scope: local
-Specified as: a number of the data type indicated in Table 2.
+Type: required
+
+Intent: inout.
+
+Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type containing numbers of the type
+indicated in Table 1.
info
Error code.
@@ -253,26 +254,26 @@ An integer value; 0 means no error has been detected.
-This subroutine computes a series of dot products among the columns of
-two dense matrices and
+.
+
+If and :
+ ALT="$y$"> are real vectors
+it computes dot-product as:
-If the matrices are complex, then the
-usual convention applies, i.e. the conjugate transpose of is
-used. If and are of rank one, then is a scalar, else it
-is a rank one array.
+ ALT="$y$"> are complex vectors then it computes dot-product as:
+
+
+
+
+
+
+
+
-call psb_gedots(res, x, y, desc_a, info)
+psb_gedot(x, y, desc_a, info)
-
+
-
Table 3:
+
Table 2:
Data types
, , ,
-
Subroutine
+
Function
Short Precision Real
-
psb_gedots
+
psb_gedot
Long Precision Real
-
psb_gedots
+
psb_gedot
Short Precision Complex
-
psb_gedots
+
psb_gedot
Long Precision Complex
-
psb_gedots
+
psb_gedot
@@ -152,7 +167,7 @@ Data types
.
+ ALT="$x$">.
Scope: local
@@ -162,7 +177,7 @@ Intent: in.
Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type
containing numbers of type specified in
-Table 3. The rank of 2. The rank of must be the same of in.
Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type
containing numbers of type specified in
-Table 3. The rank of 2. The rank of must be the same of required
Intent: in.
Specified as: an object of type descdatapsb_desc_type.
+
+
On Return
-
res
+
Function value
is the dot product of subvectors psb_desc_type.
Scope: global
-Intent: out.
-
-Specified as: a number or a rank-one array of the data type indicated
-in Table 2.
+Specified as: a number of the data type indicated in Table 2.
info
Error code.
@@ -239,26 +253,26 @@ An integer value; 0 means no error has been detected.
@@ -126,8 +126,8 @@ Overlap points do not usually exist in the basic data
distributions; however they are a feature of Domain Decomposition
Schwarz preconditioners which are the subject of related research
work [4,3].
+ HREF="node119.html#2007c">4,3].
We denote the sets of internal, boundary and halo points for a given
@@ -166,7 +166,7 @@ local rows) is
-
-
-
-
- Next: Next: Library contents
- Up: Up: General overview
- Previous: Previous: General overview
- Contents
diff --git a/docs/html/node40.html b/docs/html/node40.html
index f02d997a..ca4b9f9e 100644
--- a/docs/html/node40.html
+++ b/docs/html/node40.html
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-else if is a complex vector then it computes the infinity-norm as:
-
-
-
-
-
-
-
-
+ ALT="$x$"> is
+used. If and are of rank one, then is a scalar, else it
+is a rank one array.
-psb_geamax(x, desc_a, info)
+call psb_gedots(res, x, y, desc_a, info)
-
-
-
+
-
Table 4:
+
Table 3:
Data types
-
,
-
Function
+ ALT="$x$">,
+
Subroutine
Short Precision Real
-
Short Precision Real
-
psb_geamax
+
psb_gedots
Long Precision Real
-
Long Precision Real
-
psb_geamax
+
psb_gedots
-
Short Precision Real
-
Short Precision Complex
-
psb_geamax
+
Short Precision Complex
+
psb_gedots
-
Long Precision Real
-
Long Precision Complex
-
psb_geamax
+
Long Precision Complex
+
psb_gedots
@@ -163,7 +153,6 @@ Data types
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">.
-
Scope: local
@@ -171,9 +160,38 @@ Type: required
Intent: in.
-Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type
+Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type
containing numbers of type specified in
-Table 4.
+Table 3. The rank of must be the same of .
+
+
y
+
the local portion of global dense matrix
+.
+
+Scope: local
+
+Type: required
+
+Intent: in.
+
+Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type
+containing numbers of type specified in
+Table 3. The rank of must be the same of .
desc_a
contains data structures for communications.
@@ -185,21 +203,25 @@ Type: required
Intent: in.
Specified as: an object of type descdatapsb_desc_type.
-
-
On Return
-
Function value
-
is the infinity norm of subvector res
+
is the dot product of subvectors .
+ ALT="$x$"> and .
Scope: global
-Specified as: a long precision real number.
+Intent: out.
+
+Specified as: a number or a rank-one array of the data type indicated
+in Table 2.
info
Error code.
@@ -217,26 +239,26 @@ An integer value; 0 means no error has been detected.
-This subroutine computes a series of infinity norms on the columns of
-a dense matrix :
+ ALT="$x$">.
+
+If is a real vector
+it computes infinity norm as:
+
+
+
+
+
+
+
+
+else if is a complex vector then it computes the infinity-norm as:
@@ -138,6 +163,7 @@ Data types
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">.
+
Scope: local
@@ -145,9 +171,9 @@ Type: required
Intent: in.
-Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type
+Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type
containing numbers of type specified in
-Table 5.
+Table 4.
desc_a
contains data structures for communications.
@@ -159,21 +185,21 @@ Type: required
Intent: in.
Specified as: an object of type descdatapsb_desc_type.
+
+
On Return
-
res
-
is the infinity norm of the columns of Function value
+
is the infinity norm of subvector .
Scope: global
-Intent: out.
-
-Specified as: a number or a rank-one array of long precision real numbers.
+Specified as: a long precision real number.
info
Error code.
@@ -191,26 +217,26 @@ An integer value; 0 means no error has been detected.
@@ -162,7 +138,6 @@ Data types
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">.
-
Scope: local
@@ -172,7 +147,7 @@ Intent: in.
Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type
containing numbers of type specified in
-Table 6.
+Table 5.
desc_a
contains data structures for communications.
@@ -184,21 +159,21 @@ Type: required
Intent: in.
Specified as: an object of type descdatapsb_desc_type.
-
-
On Return
-
Function value
-
is the 1-norm of vector res
+
is the infinity norm of the columns of .
Scope: global
-Specified as: a long precision real number.
+Intent: out.
+
+Specified as: a number or a rank-one array of long precision real numbers.
info
Error code.
@@ -216,26 +191,26 @@ An integer value; 0 means no error has been detected.
@@ -192,7 +172,7 @@ Intent: in.
Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type
containing numbers of type specified in
-Table 7.
+Table 6.
desc_a
contains data structures for communications.
@@ -210,17 +190,14 @@ Specified as: an object of type descdatapsb_desc_type.
On Return
-
res
-
contains the 1-norm of (the columns of) Function value
+
is the 1-norm of vector .
Scope: global
-Intent: out.
-
-Short as: a long precision real number.
Specified as: a long precision real number.
info
@@ -239,26 +216,26 @@ An integer value; 0 means no error has been detected.
-This function computes the 2-norm of a vector :
+
+
+
+
+
+
+
+
+This function computes the 1-norm of a vector .
@@ -64,77 +84,82 @@ This function computes the 2-norm of a vector is a real vector
-it computes 2-norm as:
+ ALT="$x$"> is a real vector
+it computes 1-norm as:
@@ -161,7 +181,8 @@ psb_genrm2(x, desc_a, info)
.
+ ALT="$x$">.
+
Scope: local
@@ -169,9 +190,9 @@ Type: required
Intent: in.
-Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type
+Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type
containing numbers of type specified in
-Table 8.
+Table 7.
desc_a
contains data structures for communications.
@@ -189,17 +210,18 @@ Specified as: an object of type descdatapsb_desc_type.
On Return
-
Function Value
-
is the 2-norm of subvector res
+
contains the 1-norm of (the columns of) .
Scope: global
-Type: required
+Intent: out.
-Specified as: a long precision real number.
+Short as: a long precision real number.
+Specified as: a long precision real number.
info
Error code.
@@ -217,26 +239,26 @@ An integer value; 0 means no error has been detected.
@@ -137,8 +161,7 @@ Data types
.
-
+ ALT="$x$">.
Scope: local
@@ -146,9 +169,9 @@ Type: required
Intent: in.
-Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type
+Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type
containing numbers of type specified in
-Table 9.
+Table 8.
desc_a
contains data structures for communications.
@@ -166,17 +189,17 @@ Specified as: an object of type descdatapsb_desc_type.
On Return
-
res
-
contains the 1-norm of (the columns of) Function Value
+
is the 2-norm of subvector .
Scope: global
-Intent: out.
+Type: required
-Specified as: a long precision real number.
+Specified as: a long precision real number.
info
Error code.
@@ -194,26 +217,26 @@ An integer value; 0 means no error has been detected.
the local portion of global dense matrix
.
+ WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
+ SRC="img20.png"
+ ALT="$x$">.
+
Scope: local
-Type: required
+Type: required
Intent: in.
-Specified as: an object of type spdatapsb_Tspmat_type.
+Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type
+containing numbers of type specified in
+Table 9.
desc_a
contains data structures for communications.
@@ -162,19 +160,23 @@ Type: required
Intent: in.
Specified as: an object of type descdatapsb_desc_type.
+
+
On Return
-
Function value
-
is the 1-norm of sparse submatrix .
+
res
+
contains the 1-norm of (the columns of) .
Scope: global
-Specified as: a long precision real number.
+Intent: out.
+
+Specified as: a long precision real number.
info
Error code.
@@ -192,26 +194,26 @@ An integer value; 0 means no error has been detected.
-This function computes the infinity-norm of a matrix :
@@ -66,14 +66,14 @@ This function computes the infinity-norm of a matrix
+ WIDTH="97" HEIGHT="28" BORDER="0"
+ SRC="img42.png"
+ ALT="\begin{displaymath}nrm1 \leftarrow \Vert A\Vert _1 \end{displaymath}">
@@ -167,7 +167,7 @@ Specified as: an object of type descdatapsb_desc_type.
Function value
-
is the infinity-norm of sparse submatrix is the 1-norm of sparse submatrix .
@@ -192,26 +192,26 @@ An integer value; 0 means no error has been detected.
the scalar .
-
-Scope: global
-
-Type: required
-
-Intent: in.
-
-Specified as: a number of the data type indicated in
-Table 12.
-
a
-
the local portion of the sparse matrix
+
the local portion of the global sparse matrix
in.
Specified as: an object of type spdatapsb_Tspmat_type.
-
x
-
the local portion of global dense matrix
-.
-
-
-Scope: local
-
-Type: required
-
-Intent: in.
-
-Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type
-containing numbers of type specified in
-Table 12. The rank of must be the same of .
-
-
beta
-
the scalar .
-
-Scope: global
-
-Type: required
-
-Intent: in.
-
-Specified as: a number of the data type indicated in Table 12.
-
-
y
-
the local portion of global dense matrix
-.
-
-
-Scope: local
-
-Type: required
-
-Intent: inout.
-
-Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type
-containing numbers of type specified in
-Table 12. The rank of must be the same of .
-
desc_a
contains data structures for communications.
@@ -313,74 +163,18 @@ Intent: in.
Specified as: an object of type descdatapsb_desc_type.
-Scope: global
-
-Type: optional
-
-Intent: in.
-
-Default:
-
-Specified as: a character variable.
-
-
-
-
work
-
work array.
-
-Scope: local
-
-Type: optional
-
-Intent: inout.
-
-Specified as: a rank one array of the same type of and with
-the TARGET attribute.
-
-
-
On Return
-
y
-
the local portion of result matrix .
-
-Scope: local
-
-Type: required
+
Function value
+
is the infinity-norm of sparse submatrix .
-Intent: inout.
+Scope: global
-Specified as: an array of rank one or two
-containing numbers of type specified in
-Table 12.
+Specified as: a long precision real number.
info
Error code.
@@ -398,26 +192,26 @@ An integer value; 0 means no error has been detected.
-This subroutine computes the Triangular System Solve:
+This subroutine computes the Sparse Matrix by Dense Matrix Product:
-
-
+
+
+
-
-
+
+
+
+(1)
+
+
+
+
+
+
+
+
+
+(2)
+
+
+
+
+
+
+
+
+
+(3)
+
+
where:
@@ -107,50 +140,34 @@ where:
-
is the global sparse block triangular submatrix
+
is the global sparse matrix
-
-
-
is the scaling diagonal matrix.
+ SRC="img1.png"
+ ALT="$A$">
-
-
-call psb_spsm(alpha, t, x, beta, y, desc_a, info)
-call psb_spsm(alpha, t, x, beta, y, desc_a, info,&
- & trans, unit, choice, diag, work)
-
-
-
+
-
Table 13:
+
Table 12:
Data types
, , , , , ,
Subroutine
Short Precision Real
-
psb_spsm
+
psb_spmm
Long Precision Real
-
psb_spsm
+
psb_spmm
Short Precision Complex
-
psb_spsm
+
psb_spmm
Long Precision Complex
-
psb_spsm
+
psb_spmm
@@ -178,6 +195,13 @@ Data types
+
+
+call psb_spmm(alpha, a, x, beta, y, desc_a, info)
+call psb_spmm(alpha, a, x, beta, y,desc_a, info, &
+ & trans, work)
+
+
Type:
@@ -199,14 +223,14 @@ Type: required
Intent: in.
Specified as: a number of the data type indicated in
-Table 13.
+Table 12.
-
t
-
the global portion of the sparse matrix
+
a
+
the local portion of the sparse matrix
.
+ SRC="img1.png"
+ ALT="$A$">.
Scope: local
@@ -214,8 +238,7 @@ Type: required
Intent: in.
-Specified as: an object type specified in
-§ 3.
+Specified as: an object of type spdatapsb_Tspmat_type.
x
the local portion of global dense matrix
@@ -233,7 +256,7 @@ Intent: in.
Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type
containing numbers of type specified in
-Table 13. The rank of 12. The rank of must be the same of required
Intent: in.
-Specified as: a number of the data type indicated in Table 13.
+Specified as: a number of the data type indicated in Table 12.
y
the local portion of global dense matrix
@@ -271,7 +294,7 @@ Intent: inout.
Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type
containing numbers of type specified in
-Table 13. The rank of 12. The rank of must be the same of in.
Specified as: an object of type descdatapsb_desc_type.
Scope: global
@@ -315,82 +340,11 @@ Default:
Specified as: a character variable.
-
-
unitd
-
specify with trans the operation to perform.
-
-
unitd = 'U'
-
the operation is with no scaling
-
-
unitd = 'L'
-
the operation is with left scaling
-
-
unitd = 'R'
-
the operation is with right scaling.
-
-
-Scope: global
-
-Type: optional
-
-Intent: in.
-
-Default:
-
-Specified as: a character variable.
-
-
choice
-
specifies the update of overlap elements to be performed
- on exit:
-
-
-
psb_none_
-
-
-
psb_sum_
-
-
-
psb_avg_
-
-
-
psb_square_root_
-
-
-Scope: global
-
-Type: optional
-
-Intent: in.
-
-Default: psb_avg_
-
-Specified as: an integer variable.
-
-
diag
-
the diagonal scaling matrix.
-
-Scope: local
-
-Type: optional
-
-Intent: in.
-
-Default:
-
-
-Specified as: a rank one array containing numbers of the type
-indicated in Table 13.
+
+
work
-
a work array.
+
work array.
Scope: local
@@ -401,8 +355,11 @@ Intent: inout.
Specified as: a rank one array of the same type of with the
-TARGET attribute.
+ ALT="$x$"> and with
+the TARGET attribute.
@@ -410,12 +367,10 @@ TARGET attribute.
y
-
the local portion of global dense matrix
-the local portion of result matrix .
-
+ ALT="$y$">.
Scope: local
@@ -425,7 +380,7 @@ Intent: inout.
Specified as: an array of rank one or two
containing numbers of type specified in
-Table 13.
+Table 12.
info
Error code.
@@ -443,26 +398,26 @@ An integer value; 0 means no error has been detected.
@@ -123,12 +123,12 @@ internally defined in the PSBLAS software package:
sp: the routine is related to sparse data,
cd: the routine is related to communication descriptor
- (see 3).
+ (see 3).
For example the psb_geins, psb_spins and
- psb_cdins perform the same action (see 6) on
+ psb_cdins perform the same action (see 6) on
dense matrices, sparse matrices and communication descriptors
respectively.
Interface overloading allows the usage of the same subroutine
@@ -169,26 +169,26 @@ whose current value is 3.0.0
-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 6.
+
-
-
+This subroutine computes the Triangular System Solve:
+
+
+
+
+
+
+
+
+
+where:
+
+
+
is the global dense matrix
+
+
+
is the global dense matrix
+
+
+
is the global sparse block triangular submatrix
+
+
+
is the scaling diagonal matrix.
+
+
+
+
+
+call psb_spsm(alpha, t, x, beta, y, desc_a, info)
+call psb_spsm(alpha, t, x, beta, y, desc_a, info,&
+ & trans, unit, choice, diag, work)
+
+
+
+
+
+
+
Table 13:
+Data types
+
+
+
+
, , , , ,
+
Subroutine
+
+
Short Precision Real
+
psb_spsm
+
+
Long Precision Real
+
psb_spsm
+
+
Short Precision Complex
+
psb_spsm
+
+
Long Precision Complex
+
psb_spsm
+
+
+
+
+
+
+
+
+
+
+
Type:
+
Synchronous.
+
+
On Entry
+
+
+
alpha
+
the scalar .
+
+Scope: global
+
+Type: required
+
+Intent: in.
+
+Specified as: a number of the data type indicated in
+Table 13.
+
+
t
+
the global portion of the sparse matrix
+.
+
+Scope: local
+
+Type: required
+
+Intent: in.
+
+Specified as: an object type specified in
+§ 3.
+
+
x
+
the local portion of global dense matrix
+.
+
+
+Scope: local
+
+Type: required
+
+Intent: in.
+
+Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type
+containing numbers of type specified in
+Table 13. The rank of must be the same of .
+
+
beta
+
the scalar .
+
+Scope: global
+
+Type: required
+
+Intent: in.
+
+Specified as: a number of the data type indicated in Table 13.
+
+
y
+
the local portion of global dense matrix
+.
+
+
+Scope: local
+
+Type: required
+
+Intent: inout.
+
+Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type
+containing numbers of type specified in
+Table 13. The rank of must be the same of .
+
+
desc_a
+
contains data structures for communications.
+
+Scope: local
+
+Type: required
+
+Intent: in.
+
+Specified as: an object of type descdatapsb_desc_type.
+
+
trans
+
specify with unitd the operation to perform.
+
+
trans = 'N'
+
the operation is with no transposed matrix
+
+
trans = 'T'
+
the operation is with transposed matrix.
+
+
trans = 'C'
+
the operation is with conjugate transposed matrix.
+
+
+Scope: global
+
+Type: optional
+
+Intent: in.
+
+Default:
+
+Specified as: a character variable.
+
+
unitd
+
specify with trans the operation to perform.
+
+
unitd = 'U'
+
the operation is with no scaling
+
+
unitd = 'L'
+
the operation is with left scaling
+
+
unitd = 'R'
+
the operation is with right scaling.
+
+
+Scope: global
+
+Type: optional
+
+Intent: in.
+
+Default:
+
+Specified as: a character variable.
+
+
choice
+
specifies the update of overlap elements to be performed
+ on exit:
+
+
+
psb_none_
+
+
+
psb_sum_
+
+
+
psb_avg_
+
+
+
psb_square_root_
+
+
+Scope: global
+
+Type: optional
+
+Intent: in.
+
+Default: psb_avg_
+
+Specified as: an integer variable.
+
+
diag
+
the diagonal scaling matrix.
+
+Scope: local
+
+Type: optional
+
+Intent: in.
+
+Default:
+
+
+Specified as: a rank one array containing numbers of the type
+indicated in Table 13.
+
+
work
+
a work array.
+
+Scope: local
+
+Type: optional
+
+Intent: inout.
+
+Specified as: a rank one array of the same type of with the
+TARGET attribute.
+
+
+
+
On Return
+
+
+
y
+
the local portion of global dense matrix
+.
+
+
+Scope: local
+
+Type: required
+
+Intent: inout.
+
+Specified as: an array of rank one or two
+containing numbers of type specified in
+Table 13.
+
+
info
+
Error code.
+
+Scope: local
+
+Type: required
+
+Intent: out.
+
+An integer value; 0 means no error has been detected.
+
+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 6.
-
-
Type:
-
Synchronous.
-
-
On Entry
-
-
-
x
-
global dense matrix .
-
-Scope: local
-
-Type: required
-
-Intent: inout.
-
-Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type
-containing numbers of type specified in
-Table 14.
-
-
desc_a
-
contains data structures for communications.
-
-Scope: local
-
-Type: required
-
-Intent: in.
-
-Specified as: a structured data of type descdatapsb_desc_type.
-
-
alpha
-
the scalar .
-
-Scope: global
-
-Type: optional
-
-Intent: in.
-
-Default:
-
-Specified as: a number of the data type indicated in Table 14.
-
-
work
-
the work array.
-
-Scope: local
-
-Type: optional
-
-Intent: inout.
-
-Specified as: a rank one array of the same type of .
-
-
data
-
index list selector.
-
-Scope: global
-
-Type: optional
-
-Specified as: an integer. Values:psb_comm_halo_,psb_comm_mov_,
-psb_comm_ext_, default: psb_comm_halo_. Chooses the
-index list on which to base the data exchange.
-
-
-
-
On Return
-
-
-
x
-
global dense result matrix .
-
-Scope: local
-
-Type: required
-
-Intent: inout.
-
-Returned as: a rank one or two array
-containing numbers of type specified in
-Table 14.
-
-
info
-
the local portion of result submatrix .
-
-Scope: local
-
-Type: required
-
-Intent: out.
-
-An integer value that contains an error code.
-
-
-
-
-
-
Figure 7:
-Sample discretization mesh.
-
-
-
-
-
-
-
-
-
-
-
-
-Usage Example
-Consider the discretization mesh depicted in fig. 7,
-partitioned among two processes as shown by the dashed line; the data
-distribution is such that each process will own 32 entries in the
-index space, with a halo made of 8 entries placed at local indices 33
-through 40. If process 0 assigns an initial value of 1 to its entries
-in the vector, and process 1 assigns a value of 2, then after a
-call to psb_halo the contents of the local vectors will be the
-following:
-
-
-These subroutines applies an overlap operator to the input vector:
+These subroutines gathers the values of the halo
+elements, and (optionally) scale the result:
@@ -162,7 +153,7 @@ Intent: inout.
Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type
containing numbers of type specified in
-Table 15.
+Table 14.
desc_a
contains data structures for communications.
@@ -175,40 +166,24 @@ Intent: in.
Specified as: a structured data of type descdatapsb_desc_type.
-
update
-
Update operator.
-
-
update = psb_none_
-
Do nothing;
-
-
update = psb_add_
-
Sum overlap entries, i.e. apply ;
-
-
update = psb_avg_
-
Average overlap entries, i.e. apply ;
-
-
+
alpha
+
the scalar .
+
Scope: global
-Intent: in.
+Type: optional
-Default:
-
+Intent: in.
-Scope: global
+Default:
-Specified as: a integer variable.
+Specified as: a number of the data type indicated in Table 14.
work
the work array.
@@ -219,10 +194,21 @@ Type: optional
Intent: inout.
-Specified as: a one dimensional array of the same type of .
+ ALT="$x$">.
+
+
data
+
index list selector.
+
+Scope: global
+
+Type: optional
+
+Specified as: an integer. Values:psb_comm_halo_,psb_comm_mov_,
+psb_comm_ext_, default: psb_comm_halo_. Chooses the
+index list on which to base the data exchange.
@@ -241,12 +227,15 @@ Type: required
Intent: inout.
-Specified as: an array of rank one or two
+Returned as: a rank one or two array
containing numbers of type specified in
-Table 15.
+Table 14.
info
-
Error code.
+
the local portion of result submatrix .
Scope: local
@@ -254,80 +243,46 @@ Type: required
Intent: out.
-An integer value; 0 means no error has been detected.
+An integer value that contains an error code.
-
-Notes
-
-
-
If there is no overlap in the data distribution associated with
- the descriptor, no operations are performed;
-
-
The operator performs the reduction sum of overlap
-elements; it is a ``prolongation'' operator that
-replicates overlap elements, accounting for the physical replication
-of data;
-
-
The operator performs a scaling on the overlap elements by
-the amount of replication; thus, when combined with the reduction
-operator, it implements the average of replicated elements over all of
-their instances.
-
-Example of use
-Consider the discretization mesh depicted in fig. 8,
-partitioned among two processes as shown by the dashed lines, with an
-overlap of 1 extra layer with respect to the partition of
-fig. 7; the data
-distribution is such that each process will own 40 entries in the
-index space, with an overlap of 16 entries placed at local indices 25
-through 40; the halo will run from local index 41 through local index 48.. If process 0 assigns an initial value of 1 to its entries
+
+Usage Example
+Consider the discretization mesh depicted in fig. 7,
+partitioned among two processes as shown by the dashed line; the data
+distribution is such that each process will own 32 entries in the
+index space, with a halo made of 8 entries placed at local indices 33
+through 40. If process 0 assigns an initial value of 1 to its entries
in the vector, and process 1 assigns a value of 2, then after a
-call to psb_ovrl with psb_avg_ and a call to
-psb_halo_ the contents of the local vectors will be the
-following (showing a transition among the two subdomains)
-
-
+call to psb_halo the contents of the local vectors will be the
+following:
-These subroutines collect the portions of global dense matrix
-distributed over all process into one single array stored on one
-process.
+These subroutines applies an overlap operator to the input vector:
global dense matrix .
Scope: local
-Type: required
+Type: required
-Intent: in.
+Intent: inout.
Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type
-indicated in Table 16.
+containing numbers of type specified in
+Table 15.
desc_a
contains data structures for communications.
@@ -186,43 +175,75 @@ Intent: in.
Specified as: a structured data of type descdatapsb_desc_type.
-
root
-
The process that holds the global copy. If all
- the processes will have a copy of the global vector.
-
+
update
+
Update operator.
+
+
update = psb_none_
+
Do nothing;
+
+
update = psb_add_
+
Sum overlap entries, i.e. apply ;
+
+
update = psb_avg_
+
Average overlap entries, i.e. apply ;
+
+
Scope: global
-Type: optional
-
Intent: in.
-Specified as: an integer variable
, default .
+ WIDTH="166" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
+ SRC="img65.png"
+ ALT="$update\_type = psb\_avg\_ $">
+
+Scope: global
+
+Specified as: a integer variable.
+
+
work
+
the work array.
+
+Scope: local
+
+Type: optional
+
+Intent: inout.
+
+Specified as: a one dimensional array of the same type of .
+
+
On Return
-
glob_x
-
The array where the local parts must be gathered.
+
x
+
global dense result matrix .
-Scope: global
+Scope: local
-Type: required
+Type: required
-Intent: out.
+Intent: inout.
-Specified as: a rank one or two array with the ALLOCATABLE attribute.
+Specified as: an array of rank one or two
+containing numbers of type specified in
+Table 15.
info
Error code.
@@ -237,29 +258,502 @@ An integer value; 0 means no error has been detected.
+
+Notes
+
+
+
If there is no overlap in the data distribution associated with
+ the descriptor, no operations are performed;
+
+
The operator performs the reduction sum of overlap
+elements; it is a ``prolongation'' operator that
+replicates overlap elements, accounting for the physical replication
+of data;
+
+
The operator performs a scaling on the overlap elements by
+the amount of replication; thus, when combined with the reduction
+operator, it implements the average of replicated elements over all of
+their instances.
+
+
+
+
+
+
+
+
Figure 8:
+Sample discretization mesh.
+
+
+
+
+
+
+
+
+
+
+
+Example of use
+Consider the discretization mesh depicted in fig. 8,
+partitioned among two processes as shown by the dashed lines, with an
+overlap of 1 extra layer with respect to the partition of
+fig. 7; the data
+distribution is such that each process will own 40 entries in the
+index space, with an overlap of 16 entries placed at local indices 25
+through 40; the halo will run from local index 41 through local index 48.. If process 0 assigns an initial value of 1 to its entries
+in the vector, and process 1 assigns a value of 2, then after a
+call to psb_ovrl with psb_avg_ and a call to
+psb_halo_ the contents of the local vectors will be the
+following (showing a transition among the two subdomains)
+
+
-These subroutines scatters the portions of global dense matrix owned
-by a process to all the processes in the processes grid.
+These subroutines collect the portions of global dense matrix
+distributed over all process into one single array stored on one
+process.
The array that must be scattered into local pieces.
+
loc_x
+
the local portion of global dense matrix
+.
-Scope: global
+Scope: local
Type: required
Intent: in.
-Specified as: a rank one or two array.
+Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type
+indicated in Table 16.
desc_a
contains data structures for communications.
@@ -184,7 +191,7 @@ Specified as: a structured data of type descdatapsb_desc_type.
WIDTH="74" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img74.png"
ALT="$root=-1$"> all
- the processes have a copy of the global vector.
+ the processes will have a copy of the global vector.
Scope: global
@@ -206,21 +213,16 @@ Specified as: an integer variable
-
-
+
-
-
- Next:Data management routines
- Up:Communication routines
- Previous:psb_gather Gather
- Next:psb_scatter Scatter
+ Up:Communication routines
+ Previous:psb_ovrl Overlap
+ Contents
diff --git a/docs/html/node55.html b/docs/html/node55.html
index 789becdb..d5a55345 100644
--- a/docs/html/node55.html
+++ b/docs/html/node55.html
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-Data management routines
-
+psb_scatter -- Scatter Global Dense Matrix
+
@@ -18,114 +18,248 @@ original version by: Nikos Drakos, CBLU, University of Leeds
-
-
-
+
+
-
-
+
-
-
- Next:psb_cdall Allocates
- Up:userhtml
- Previous:psb_scatter Scatter
- Next:Data management routines
+ Up:Communication routines
+ Previous:psb_gather Gather
+ Contents
The array that must be scattered into local pieces.
+
+Scope: global
+
+Type: required
+
+Intent: in.
+
+Specified as: a rank one or two array.
+
+
desc_a
+
contains data structures for communications.
+
+Scope: local
+
+Type: required
+
+Intent: in.
+
+Specified as: a structured data of type descdatapsb_desc_type.
+
+
root
+
The process that holds the global copy. If all
+ the processes have a copy of the global vector.
+
+Scope: global
+
+Type: optional
+
+Intent: in.
+
+Specified as: an integer variable
+, default .
+
+
On Return
+
+
+
loc_x
+
the local portion of global dense matrix
+.
+
+Scope: local
+
+Type: required
+
+Intent: out.
+
+Specified as: a rank one or two array containing numbers of the type
+indicated in Table 17.
+
+
info
+
Error code.
+
+Scope: local
+
+Type: required
+
+Intent: out.
+
+An integer value; 0 means no error has been detected.
+
-This subroutine initializes the communication descriptor associated
-with an index space. One of the optional arguments
-parts, vg, vl, nl or repl
-must be specified, thereby choosing
-the specific initialization strategy.
-
-
On Entry
-
-
-
Type:
-
Synchronous.
-
-
icontxt
-
the communication context.
-
-Scope:global.
-
-Type:required.
-
-Intent: in.
-
-Specified as: an integer value.
-
-
vg
-
Data allocation: each index
- is allocated
- to process .
-
-Scope:global.
-
-Type:optional.
-
-Intent: in.
-
-Specified as: an integer array.
-
-
flag
-
Specifies whether entries in are zero- or one-based.
-
-Scope:global.
-
-Type:optional.
-
-Intent: in.
-
-Specified as: an integer value , default .
-
-
-
-
mg
-
the (global) number of rows of the problem.
-
-Scope:global.
-
-Type:optional.
-
-Intent: in.
-
-Specified as: an integer value. It is required if parts or
-repl is specified, it is optional if vg is specified.
-
-
parts
-
the subroutine that defines the partitioning scheme.
-
-Scope:global.
-
-Type:required.
-
-Specified as: a subroutine.
-
-
vl
-
Data allocation: the set of global indices
- belonging to the calling process.
-
-Scope:local.
-
-Type:optional.
-
-Intent: in.
-
-Specified as: an integer array.
-
-
nl
-
Data allocation: in a generalized block-row distribution the
- number of indices belonging to the current process.
-
-Scope:local.
-
-Type:optional.
-
-Intent: in.
-
-Specified as: an integer value. May be specified together with
-vl.
-
-
repl
-
Data allocation: build a replicated index space
- (i.e. all processes own all indices).
-
-Scope:global.
-
-Type:optional.
-
-Intent: in.
-
-Specified as: the logical value .true.
-
-
globalcheck
-
Data allocation: do global checks on the local
- index lists vl
-
-Scope:global.
-
-Type:optional.
-
-Intent: in.
-
-Specified as: a logical value, default: .true.
-
-
lidx
-
Data allocation: the set of local indices
- to be assigned to the global indices .
-
-Scope:local.
-
-Type:optional.
-
-Intent: in.
-
-Specified as: an integer array.
-
-
-
-
-
-
On Return
-
-
-
desc_a
-
the communication descriptor.
-
-Scope:local.
-
-Type:required.
-
-Intent: out.
-
-Specified as: a structured data of type descdatapsb_desc_type.
-
-
info
-
Error code.
+
+
-Scope: local
-
-Type: required
-
-Intent: out.
-
-An integer value; 0 means no error has been detected.
-
One of the optional arguments parts, vg,
- vl, nl or repl must be specified, thereby choosing the
- initialization strategy as follows:
-
-
parts
-
In this case we have a subroutine specifying the mapping
- between global indices and process/local index pairs. If this
- optional argument is specified, then it is mandatory to
- specify the argument mg as well.
- The subroutine must conform to the following interface:
-
The total number of global rows in the mapping;
-
-
-
- The output arguments are:
-
-
nv
-
The number of entries in pv;
-
-
-
pv
-
A vector containing the indices of the processes to
- which the global index should be assigend; each entry must satisfy
-
-; if we have an index assigned to multiple
- processes, i.e. we have an overlap among the subdomains.
-
-
-
-
-
vg
-
In this case the association between an index and a process
- is specified via an integer vector vg(1:mg);
- each index
- is assigned to process .
- The vector vg must be identical on all
- calling processes; its entries may have the ranges
- or according to the value of flag.
- The size may be specified via the optional argument mg;
- the default is to use the entire vector vg, thus having
- mg=size(vg).
-
-
vl
-
In this case we are specifying the list of indices
- vl(1:nl) assigned to the current process; thus, the global
- problem size is given by
- the range of the aggregate of the individual vectors vl specified
- in the calling processes. The size may be specified via the optional
- argument nl; the default is to use the entire vector
- vl, thus having nl=size(vl).
- If globalcheck=.true. the subroutine will check how many
- times each entry in the global index space is
- specified in the input lists vl, thus allowing for the
- presence of overlap in the input, and checking for ``orphan''
- indices. If globalcheck=.false., the subroutine will not
- check for overlap, and may be significantly faster, but the user
- is implicitly guaranteeing that there are neither orphan nor
- overlap indices. The optional argument lidx is available for
- those cases in which the user has already established a
- global-to-local mapping; if it is specified, each index in
- vl(i) will be mapped to the corresponding local index
- lidx(i).
-
-
nl
-
If this argument is specified alone (i.e. without vl)
- the result is a generalized row-block distribution in which each
- process gets assigned a consecutive chunk of global
- indices.
-
-
repl
-
This arguments specifies to replicate all indices on
- all processes. This is a special purpose data allocation that is
- useful in the construction of some multilevel preconditioners.
-
-
-
-
On exit from this routine the descriptor is in the build
- state.
-
-
Calling the routine with vg or parts implies that
- every process will scan the entire index space to figure out the
- local indices.
-
-
Overlapped indices are possible with both parts and
- vl invocations.
-
-
When the subroutine is invoked with vl in
- conjunction with globalcheck=.true., it will perform a scan
- of the index space to search for overlap or orphan indices.
-
-
When the subroutine is invoked with vl in
- conjunction with globalcheck=.false., no index space scan
- will take place. Thus it is the responsibility of the user to make
- sure that the indices specified in vl have neither orphans nor
- overlaps; if this assumption fails, results will be
- unpredictable.
-
-
Orphan and overlap indices are
- impossible by construction when the subroutine is invoked with
- nl (alone), or vg.
-
-This subroutine examines the edges of the graph associated with the
-discretization mesh (and isomorphic to the sparsity pattern of a
-linear system coefficient matrix), storing them as necessary into the
-communication descriptor.
-
-
+This subroutine initializes the communication descriptor associated
+with an index space. One of the optional arguments
+parts, vg, vl, nl or repl
+must be specified, thereby choosing
+the specific initialization strategy.
-
Type:
-
Asynchronous.
-
-
On Entry
+
On Entry
-
nz
-
the number of points being inserted.
+
Type:
+
Synchronous.
+
+
icontxt
+
the communication context.
-Scope: local.
+Scope:global.
-Type: required.
+Type:required.
Intent: in.
Specified as: an integer value.
-
ia
-
the indices of the starting vertex of the edges being inserted.
+
vg
+
Data allocation: each index
+ is allocated
+ to process .
+
+Scope:global.
+
+Type:optional.
+
+Intent: in.
+
+Specified as: an integer array.
+
+
flag
+
Specifies whether entries in are zero- or one-based.
+
+Scope:global.
+
+Type:optional.
+
+Intent: in.
+
+Specified as: an integer value , default .
+
+
+
+
mg
+
the (global) number of rows of the problem.
+
+Scope:global.
+
+Type:optional.
+
+Intent: in.
+
+Specified as: an integer value. It is required if parts or
+repl is specified, it is optional if vg is specified.
+
+
parts
+
the subroutine that defines the partitioning scheme.
+
+Scope:global.
+
+Type:required.
+
+Specified as: a subroutine.
+
+
vl
+
Data allocation: the set of global indices
+ belonging to the calling process.
+
+Scope:local.
+
+Type:optional.
+
+Intent: in.
+
+Specified as: an integer array.
+
+
nl
+
Data allocation: in a generalized block-row distribution the
+ number of indices belonging to the current process.
-Scope: local.
+Scope:local.
+
+Type:optional.
+
+Intent: in.
+
+Specified as: an integer value. May be specified together with
+vl.
+
+
repl
+
Data allocation: build a replicated index space
+ (i.e. all processes own all indices).
+
+Scope:global.
+
+Type:optional.
+
+Intent: in.
-Type: required.
+Specified as: the logical value .true.
+
+
globalcheck
+
Data allocation: do global checks on the local
+ index lists vl
+
+Scope:global.
+
+Type:optional.
Intent: in.
-Specified as: an integer array of length .
+Specified as: a logical value, default: .true.
-
ja
-
the indices of the end vertex of the edges being inserted.
+
lidx
+
Data allocation: the set of local indices
+ to be assigned to the global indices .
-Scope: local.
+Scope:local.
-Type: required.
+Type:optional.
Intent: in.
-Specified as: an integer array of length .
+Specified as: an integer array.
@@ -121,13 +230,13 @@ Specified as: an integer array of length
desc_a
-
the updated communication descriptor.
+
the communication descriptor.
Scope:local.
Type:required.
-Intent: inout.
+Intent: out.
Specified as: a structured data of type descdatapsb_desc_type.
@@ -143,48 +252,193 @@ Intent: out.
An integer value; 0 means no error has been detected.
+
+
Notes
-
This routine may only be called if the descriptor is in the
- build state;
-
-
This routine automatically ignores edges that do not
-insist on the current process, i.e. edges for which neither the starting
-nor the end vertex belong to the current process.
-
-
There exists another interface for this routine
+
One of the optional arguments parts, vg,
+ vl, nl or repl must be specified, thereby choosing the
+ initialization strategy as follows:
+
+
parts
+
In this case we have a subroutine specifying the mapping
+ between global indices and process/local index pairs. If this
+ optional argument is specified, then it is mandatory to
+ specify the argument mg as well.
+ The subroutine must conform to the following interface:
-which will digest all entries in ja and add them to the
-communication requirements.
+ The input arguments are:
+
+
glob_index
+
The global index to be mapped;
+
+
+
np
+
The number of processes in the mapping;
+
+
+
mg
+
The total number of global rows in the mapping;
+
+
+
+ The output arguments are:
+
+
nv
+
The number of entries in pv;
+
+
+
pv
+
A vector containing the indices of the processes to
+ which the global index should be assigend; each entry must satisfy
+
+; if we have an index assigned to multiple
+ processes, i.e. we have an overlap among the subdomains.
+
+
+
+
+
vg
+
In this case the association between an index and a process
+ is specified via an integer vector vg(1:mg);
+ each index
+ is assigned to process .
+ The vector vg must be identical on all
+ calling processes; its entries may have the ranges
+ or according to the value of flag.
+ The size may be specified via the optional argument mg;
+ the default is to use the entire vector vg, thus having
+ mg=size(vg).
+
+
vl
+
In this case we are specifying the list of indices
+ vl(1:nl) assigned to the current process; thus, the global
+ problem size is given by
+ the range of the aggregate of the individual vectors vl specified
+ in the calling processes. The size may be specified via the optional
+ argument nl; the default is to use the entire vector
+ vl, thus having nl=size(vl).
+ If globalcheck=.true. the subroutine will check how many
+ times each entry in the global index space is
+ specified in the input lists vl, thus allowing for the
+ presence of overlap in the input, and checking for ``orphan''
+ indices. If globalcheck=.false., the subroutine will not
+ check for overlap, and may be significantly faster, but the user
+ is implicitly guaranteeing that there are neither orphan nor
+ overlap indices. The optional argument lidx is available for
+ those cases in which the user has already established a
+ global-to-local mapping; if it is specified, each index in
+ vl(i) will be mapped to the corresponding local index
+ lidx(i).
+
+
nl
+
If this argument is specified alone (i.e. without vl)
+ the result is a generalized row-block distribution in which each
+ process gets assigned a consecutive chunk of global
+ indices.
+
+
repl
+
This arguments specifies to replicate all indices on
+ all processes. This is a special purpose data allocation that is
+ useful in the construction of some multilevel preconditioners.
+
+
+
+
On exit from this routine the descriptor is in the build
+ state.
+
+
Calling the routine with vg or parts implies that
+ every process will scan the entire index space to figure out the
+ local indices.
+
+
Overlapped indices are possible with both parts and
+ vl invocations.
+
+
When the subroutine is invoked with vl in
+ conjunction with globalcheck=.true., it will perform a scan
+ of the index space to search for overlap or orphan indices.
+
+
When the subroutine is invoked with vl in
+ conjunction with globalcheck=.false., no index space scan
+ will take place. Thus it is the responsibility of the user to make
+ sure that the indices specified in vl have neither orphans nor
+ overlaps; if this assumption fails, results will be
+ unpredictable.
+
+
Orphan and overlap indices are
+ impossible by construction when the subroutine is invoked with
+ nl (alone), or vg.
+This subroutine examines the edges of the graph associated with the
+discretization mesh (and isomorphic to the sparsity pattern of a
+linear system coefficient matrix), storing them as necessary into the
+communication descriptor.
+
Type:
-
Synchronous.
+
Asynchronous.
On Entry
-
desc_a
-
the communication descriptor.
+
nz
+
the number of points being inserted.
-Scope:local.
+Scope: local.
-Type:required.
+Type: required.
-Intent: inout.
+Intent: in.
-Specified as: a structured data of type descdatapsb_desc_type.
+Specified as: an integer value.
+
+
ia
+
the indices of the starting vertex of the edges being inserted.
+
+Scope: local.
+
+Type: required.
+
+Intent: in.
+
+Specified as: an integer array of length .
+
+
ja
+
the indices of the end vertex of the edges being inserted.
+
+Scope: local.
+
+Type: required.
+
+Intent: in.
+
+Specified as: an integer array of length .
@@ -87,7 +121,7 @@ Specified as: a structured data of type descdatapsb_desc_type.
desc_a
-
the communication descriptor.
+
the updated communication descriptor.
Scope:local.
@@ -112,13 +146,47 @@ An integer value; 0 means no error has been detected.
Notes
-
On exit from this routine the descriptor is in the assembled
- state.
+
This routine may only be called if the descriptor is in the
+ build state;
+
+
This routine automatically ignores edges that do not
+insist on the current process, i.e. edges for which neither the starting
+nor the end vertex belong to the current process.
+
+
There exists another interface for this routine
+
+call psb_cdins(nz, ja, desc_a, info)
+
+which will digest all entries in ja and add them to the
+communication requirements.
the communication descriptor.
Scope:local.
Type:required.
-Intent: in.
+Intent: inout.
Specified as: a structured data of type descdatapsb_desc_type.
-
-
@@ -88,14 +86,14 @@ Specified as: a structured data of type descdatapsb_desc_type.
On Return
-
desc_out
-
the communication descriptor copy.
+
desc_a
+
the communication descriptor.
Scope:local.
Type:required.
-Intent: out.
+Intent: inout.
Specified as: a structured data of type descdatapsb_desc_type.
@@ -111,6 +109,13 @@ Intent: out.
An integer value; 0 means no error has been detected.
+Notes
+
+
+
On exit from this routine the descriptor is in the assembled
+ state.
+
+
diff --git a/docs/html/node6.html b/docs/html/node6.html
index af78326b..d5f1b8da 100644
--- a/docs/html/node6.html
+++ b/docs/html/node6.html
@@ -18,7 +18,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds
-
+
@@ -26,33 +26,35 @@ original version by: Nikos Drakos, CBLU, University of Leeds
-
-
-
-
- Next:Programming model
- Up: Next: User-defined index mappings
+ Up:General overview
- Previous: Previous: Library contents
- Contents
the communication descriptor.
Scope:local.
Type:required.
-Intent: inout.
+Intent: in.
Specified as: a structured data of type descdatapsb_desc_type.
+
+
@@ -86,6 +88,17 @@ Specified as: a structured data of type descdatapsb_desc_type.
On Return
+
desc_out
+
the communication descriptor copy.
+
+Scope:local.
+
+Type:required.
+
+Intent: out.
+
+Specified as: a structured data of type descdatapsb_desc_type.
+
info
Error code.
diff --git a/docs/html/node61.html b/docs/html/node61.html
index 96bbcfe6..b709dcf4 100644
--- a/docs/html/node61.html
+++ b/docs/html/node61.html
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-psb_cdbldext -- Build an extended communication descriptor
-
+psb_cdfree -- Frees a communication descriptor
+
@@ -20,51 +20,47 @@ original version by: Nikos Drakos, CBLU, University of Leeds
-
+
-
-
+
-
-
- Next:psb_spall Allocates
- Up:Data management routines
- Previous:psb_cdfree Frees
- Next:psb_cdbldext Build
+ Up:Data management routines
+ Previous:psb_cdcpy Copies
+ Contents
-This subroutine builds an extended communication descriptor, based on
-the input descriptor desc_a and on the stencil specified
-through the input sparse matrix a.
Type:
Synchronous.
@@ -72,54 +68,16 @@ through the input sparse matrix a.
On Entry
-
a
-
A sparse matrix
-Scope:local.
-
-Type:required.
-
-Intent: in.
-
-Specified as: a structured data type.
-
desc_a
-
the communication descriptor.
+
the communication descriptor to be freed.
Scope:local.
Type:required.
-Intent: in.
-
-Specified as: a structured data of type spdatapsb_Tspmat_type.
-
-
nl
-
the number of additional layers desired.
-
-Scope:global.
-
-Type:required.
-
-Intent: in.
-
-Specified as: an integer value .
-
-
extype
-
the kind of estension required.
-
-Scope:global.
-
-Type:optional .
-
-Intent: in.
+Intent: inout.
-Specified as: an integer value
-psb_ovt_xhal_, psb_ovt_asov_, default: psb_ovt_xhal_
-
-
+Specified as: a structured data of type descdatapsb_desc_type.
@@ -128,17 +86,6 @@ Specified as: an integer value
On Return
-
desc_out
-
the extended communication descriptor.
-
-Scope:local.
-
-Type:required.
-
-Intent: inout.
-
-Specified as: a structured data of type descdatapsb_desc_type.
-
info
Error code.
@@ -153,48 +100,7 @@ An integer value; 0 means no error has been detected.
-Notes
-
-
-
Specifying psb_ovt_xhal_ for the extype argument
- the user will obtain a descriptor for a domain partition in which
- the additional layers are fetched as part of an (extended) halo;
- however the index-to-process mapping is identical to that of the
- base descriptor;
-
-
Specifying psb_ovt_asov_ for the extype argument
- the user will obtain a descriptor with an overlapped decomposition:
- the additional layer is aggregated to the local subdomain (and thus
- is an overlap), and a new halo extending beyond the last additional
- layer is formed.
-
+This subroutine builds an extended communication descriptor, based on
+the input descriptor desc_a and on the stencil specified
+through the input sparse matrix a.
A sparse matrix
+Scope:local.
+
+Type:required.
+
+Intent: in.
+
+Specified as: a structured data type.
+
desc_a
the communication descriptor.
@@ -77,19 +91,35 @@ Type:required.
Intent: in.
-Specified as: a structured data of type descdatapsb_desc_type.
+Specified as: a structured data of type spdatapsb_Tspmat_type.
+
+
nl
+
the number of additional layers desired.
+
+Scope:global.
+
+Type:required.
+
+Intent: in.
+
+Specified as: an integer value .
-
nnz
-
An estimate of the number of nonzeroes in the local
- part of the assembled matrix.
+
extype
+
the kind of estension required.
-Scope: global.
+Scope:global.
-Type: optional.
+Type:optional .
Intent: in.
-Specified as: an integer value.
+Specified as: an integer value
+psb_ovt_xhal_, psb_ovt_asov_, default: psb_ovt_xhal_
+
+
@@ -98,16 +128,16 @@ Specified as: an integer value.
On Return
-
a
-
the matrix to be allocated.
+
desc_out
+
the extended communication descriptor.
-Scope:local
+Scope:local.
-Type:required
+Type:required.
-Intent: out.
+Intent: inout.
-Specified as: a structured data of type spdatapsb_Tspmat_type.
+Specified as: a structured data of type descdatapsb_desc_type.
info
Error code.
@@ -121,47 +151,48 @@ Intent: out.
An integer value; 0 means no error has been detected.
+
+
Notes
-
On exit from this routine the sparse matrix is in the build
- state.
-
-
The descriptor may be in either the build or assembled state.
+
Specifying psb_ovt_xhal_ for the extype argument
+ the user will obtain a descriptor for a domain partition in which
+ the additional layers are fetched as part of an (extended) halo;
+ however the index-to-process mapping is identical to that of the
+ base descriptor;
-
Providing a good estimate for the number of nonzeroes in
- the assembled matrix may substantially improve performance in the
- matrix build phase, as it will reduce or eliminate the need for
- (potentially multiple) data reallocations.
+
Specifying psb_ovt_asov_ for the extype argument
+ the user will obtain a descriptor with an overlapped decomposition:
+ the additional layer is aggregated to the local subdomain (and thus
+ is an overlap), and a new halo extending beyond the last additional
+ layer is formed.
-call psb_spins(nz, ia, ja, val, a, desc_a, info [,local])
+call psb_spall(a, desc_a, info, nnz)
Type:
-
Asynchronous.
+
Synchronous.
On Entry
-
nz
-
the number of elements to be inserted.
-
-Scope:local.
-
-Type:required.
-
-Intent: in.
-
-Specified as: an integer scalar.
-
-
ia
-
the row indices of the elements to be inserted.
-
-Scope:local.
-
-Type:required.
-
-Intent: in.
-
-Specified as: an integer array of size .
-
-
ja
-
the column indices of the elements to be inserted.
+
desc_a
+
the communication descriptor.
Scope:local.
@@ -103,51 +77,19 @@ Type:required.
Intent: in.
-Specified as: an integer array of size .
+Specified as: a structured data of type descdatapsb_desc_type.
-
val
-
the elements to be inserted.
+
nnz
+
An estimate of the number of nonzeroes in the local
+ part of the assembled matrix.
-Scope:local.
+Scope: global.
-Type:required.
+Type: optional.
Intent: in.
-Specified as: an array of size . Must be of the same type and kind
-of the aspk component of the sparse matrix .
-
-
desc_a
-
The communication descriptor.
-
-Scope: local.
-
-Type: required.
-
-Intent: inout.
-
-Specified as: a variable of type descdatapsb_desc_type.
-
-
local
-
Whether the entries in the indices vectors ia,
- ja are already in local numbering.
-
-Scope:local.
-
-Type:optional.
-
-Specified as: a logical value; default: .false..
-
-
the matrix into which elements will be inserted.
+
the matrix to be allocated.
Scope:local
Type:required
-Intent: inout.
+Intent: out.
Specified as: a structured data of type spdatapsb_Tspmat_type.
-
desc_a
-
The communication descriptor.
-
-Scope: local.
-
-Type: required.
-
-Intent: inout.
-
-Specified as: a variable of type descdatapsb_desc_type.
-
info
Error code.
@@ -190,59 +121,47 @@ Intent: out.
An integer value; 0 means no error has been detected.
-
-
Notes
-
On entry to this routine the descriptor may be in either the
- build or assembled state.
-
-
On entry to this routine the sparse matrix may be in either the
- build or update state.
-
-
If the descriptor is in the build state, then the sparse matrix
- must also be in the build state; the action of the routine is to
- (implicitly) call psb_cdins to add entries to the sparsity
- pattern; each sparse matrix entry implicitly defines a graph edge,
- that is passed to the descriptor routine for the appropriate
- processing.
-
-
Any coefficients from matrix rows not assigned to the calling
- process are silently ignored;
+
On exit from this routine the sparse matrix is in the build
+ state.
-
If the descriptor is in the assembled state, then any entries in
- the sparse matrix that would generate additional communication
- requirements will be ignored;
+
The descriptor may be in either the build or assembled state.
-
If the matrix is in the update state, any entries in positions
- that were not present in the original matrix will be ignored.
+
Providing a good estimate for the number of nonzeroes in
+ the assembled matrix may substantially improve performance in the
+ matrix build phase, as it will reduce or eliminate the need for
+ (potentially multiple) data reallocations.
-call psb_spasb(a, desc_a, info, afmt, upd, dupl, mold)
+call psb_spins(nz, ia, ja, val, a, desc_a, info [,local])
Type:
-
Synchronous.
+
Asynchronous.
On Entry
-
desc_a
-
the communication descriptor.
+
nz
+
the number of elements to be inserted.
Scope:local.
@@ -77,52 +78,76 @@ Type:required.
Intent: in.
-Specified as: a structured data of type descdatapsb_desc_type.
+Specified as: an integer scalar.
-
afmt
-
the storage format for the sparse matrix.
+
ia
+
the row indices of the elements to be inserted.
-Scope: local.
+Scope:local.
-Type: optional.
+Type:required.
Intent: in.
-Specified as: an array of characters. Defalt: 'CSR'.
+Specified as: an integer array of size .
-
upd
-
Provide for updates to the matrix coefficients.
+
ja
+
the column indices of the elements to be inserted.
-Scope: global.
+Scope:local.
-Type: optional.
+Type:required.
Intent: in.
-Specified as: integer, possible values: psb_upd_srch_, psb_upd_perm_
+Specified as: an integer array of size .
-
dupl
-
How to handle duplicate coefficients.
+
val
+
the elements to be inserted.
-Scope: global.
+Scope:local.
-Type: optional.
+Type:required.
Intent: in.
-Specified as: integer, possible values: psb_dupl_ovwrt_,
-psb_dupl_add_, psb_dupl_err_.
+Specified as: an array of size . Must be of the same type and kind
+of the aspk component of the sparse matrix .
-
mold
-
The desired dynamic type for the internal matrix storage.
+
desc_a
+
The communication descriptor.
-Scope: local.
+Scope: local.
-Type: optional.
+Type: required.
-Intent: in.
+Intent: inout.
+
+Specified as: a variable of type descdatapsb_desc_type.
+
+
local
+
Whether the entries in the indices vectors ia,
+ ja are already in local numbering.
-Specified as: an object of a class derived from spbasedatapsb_T_base_sparse_mat.
+Scope:local.
+
+Type:optional.
+
+Specified as: a logical value; default: .false..
+
+
@@ -132,7 +157,7 @@ Specified as: an object of a class derived from spbasedatapsb_T_base_sparse_
a
-
the matrix to be assembled.
+
the matrix into which elements will be inserted.
Scope:local
@@ -142,6 +167,17 @@ Intent: inout.
Specified as: a structured data of type spdatapsb_Tspmat_type.
+
desc_a
+
The communication descriptor.
+
+Scope: local.
+
+Type: required.
+
+Intent: inout.
+
+Specified as: a variable of type descdatapsb_desc_type.
+
info
Error code.
@@ -159,51 +195,54 @@ An integer value; 0 means no error has been detected.
Notes
-
On entry to this routine the descriptor must be in the
- assembled state, i.e. psb_cdasb must already have been called.
+
On entry to this routine the descriptor may be in either the
+ build or assembled state.
-
The sparse matrix may be in either the build or update state;
+
On entry to this routine the sparse matrix may be in either the
+ build or update state.
-
Duplicate entries are detected and handled in both build and
- update state, with the exception of the error action that is only
- taken in the build state, i.e. on the first assembly;
+
If the descriptor is in the build state, then the sparse matrix
+ must also be in the build state; the action of the routine is to
+ (implicitly) call psb_cdins to add entries to the sparsity
+ pattern; each sparse matrix entry implicitly defines a graph edge,
+ that is passed to the descriptor routine for the appropriate
+ processing.
-
If the update choice is psb_upd_perm_, then subsequent
- calls to psb_spins to update the matrix must be arranged in
- such a way as to produce exactly the same sequence of coefficient
- values as encountered at the first assembly;
+
Any coefficients from matrix rows not assigned to the calling
+ process are silently ignored;
-
The output storage format need not be the same on all
- processes;
+
If the descriptor is in the assembled state, then any entries in
+ the sparse matrix that would generate additional communication
+ requirements will be ignored;
-
On exit from this routine the matrix is in the assembled state,
- and thus is suitable for the computational routines.
+
If the matrix is in the update state, any entries in positions
+ that were not present in the original matrix will be ignored.
the matrix to be freed.
-
-Scope:local
-
-Type:required
-
-Intent: inout.
-
-Specified as: a structured data of type spdatapsb_Tspmat_type.
-
desc_a
the communication descriptor.
@@ -90,6 +79,51 @@ Intent: in.
Specified as: a structured data of type descdatapsb_desc_type.
+
afmt
+
the storage format for the sparse matrix.
+
+Scope: local.
+
+Type: optional.
+
+Intent: in.
+
+Specified as: an array of characters. Defalt: 'CSR'.
+
+
upd
+
Provide for updates to the matrix coefficients.
+
+Scope: global.
+
+Type: optional.
+
+Intent: in.
+
+Specified as: integer, possible values: psb_upd_srch_, psb_upd_perm_
+
+
dupl
+
How to handle duplicate coefficients.
+
+Scope: global.
+
+Type: optional.
+
+Intent: in.
+
+Specified as: integer, possible values: psb_dupl_ovwrt_,
+psb_dupl_add_, psb_dupl_err_.
+
+
mold
+
The desired dynamic type for the internal matrix storage.
+
+Scope: local.
+
+Type: optional.
+
+Intent: in.
+
+Specified as: an object of a class derived from spbasedatapsb_T_base_sparse_mat.
+
@@ -97,6 +131,17 @@ Specified as: a structured data of type descdatapsb_desc_type.
On Return
+
a
+
the matrix to be assembled.
+
+Scope:local
+
+Type:required
+
+Intent: inout.
+
+Specified as: a structured data of type spdatapsb_Tspmat_type.
+
info
Error code.
@@ -111,7 +156,56 @@ An integer value; 0 means no error has been detected.
-
+Notes
+
+
+
On entry to this routine the descriptor must be in the
+ assembled state, i.e. psb_cdasb must already have been called.
+
+
The sparse matrix may be in either the build or update state;
+
+
Duplicate entries are detected and handled in both build and
+ update state, with the exception of the error action that is only
+ taken in the build state, i.e. on the first assembly;
+
+
If the update choice is psb_upd_perm_, then subsequent
+ calls to psb_spins to update the matrix must be arranged in
+ such a way as to produce exactly the same sequence of coefficient
+ values as encountered at the first assembly;
+
+
The output storage format need not be the same on all
+ processes;
+
+
On exit from this routine the matrix is in the assembled state,
+ and thus is suitable for the computational routines.
+
@@ -68,52 +69,38 @@ call psb_geall(x, desc_a, info, n, lb)
On Entry
-
desc_a
-
The communication descriptor.
+
a
+
the matrix to be reinitialized.
-Scope: local
+Scope:local
-Type: required
+Type:required
-Intent: in.
+Intent: inout.
-Specified as: a variable of type descdatapsb_desc_type.
-
-
n
-
The number of columns of the dense matrix to be allocated.
+Specified as: a structured data of type spdatapsb_Tspmat_type.
+
+
desc_a
+
the communication descriptor.
-Scope: local
+Scope:local.
-Type: optional
+Type:required.
Intent: in.
-Specified as: Integer scalar, default . It is not a valid argument if is a
-rank-1 array.
+Specified as: a structured data of type descdatapsb_desc_type.
-
lb
-
The lower bound for the column index range of the dense matrix to be allocated.
+
clear
+
Choose whether to zero out matrix coefficients
-Scope: local
+Scope:local.
-Type: optional
+Type:optional.
Intent: in.
-Specified as: Integer scalar, default . It is not a valid argument if is a
-rank-1 array.
+Default: true.
@@ -122,18 +109,6 @@ rank-1 array.
On Return
-
x
-
The dense matrix to be allocated.
-
-Scope: local
-
-Type: required
-
-Intent: out.
-
-Specified as: a rank one or two array with the ALLOCATABLE attribute
-or an object of type vdatapsb_T_vect_type, of type real, complex or integer.
-
info
Error code.
@@ -146,32 +121,16 @@ Intent: out.
An integer value; 0 means no error has been detected.
+Notes
+
+
+
On exit from this routine the sparse matrix is in the update
+ state.
+
-call psb_geins(m, irw, val, x, desc_a, info [,dupl,local])
+call psb_geall(x, desc_a, info, n, lb)
Type:
-
Asynchronous.
+
Synchronous.
On Entry
-
m
-
Number of rows in to be inserted.
-
-Scope:local.
-
-Type:required.
-
-Intent: in.
-
-Specified as: an integer value.
-
-
irw
-
Indices of the rows to be inserted. Specifically, row
- of will be inserted into the local row corresponding to the
- global row index .
-Scope:local.
-
-Type:required.
-
-Intent: in.
-
-Specified as: an integer array.
-
-
val
-
the dense submatrix to be inserted.
+
desc_a
+
The communication descriptor.
-Scope:local.
+Scope: local
-Type:required.
+Type: required
Intent: in.
-Specified as: a rank 1 or 2 array.
-Specified as: an integer value.
-
-
desc_a
-
the communication descriptor.
+Specified as: a variable of type descdatapsb_desc_type.
+
+
n
+
The number of columns of the dense matrix to be allocated.
-Scope:local.
+Scope: local
-Type:required.
+Type: optional
Intent: in.
-Specified as: a structured data of type descdatapsb_desc_type.
+Specified as: Integer scalar, default . It is not a valid argument if is a
+rank-1 array.
-
dupl
-
How to handle duplicate coefficients.
+
lb
+
The lower bound for the column index range of the dense matrix to be allocated.
-Scope: global.
+Scope: local
-Type: optional.
+Type: optional
Intent: in.
-Specified as: integer, possible values: psb_dupl_ovwrt_,
-psb_dupl_add_.
-
-
local
-
Whether the entries in the index vector irw,
- are already in local numbering.
-
-Scope:local.
-
-Type:optional.
-
-Specified as: a logical value; default: .false..
-
-
+Specified as: Integer scalar, default . It is not a valid argument if is a
+rank-1 array.
The dense matrix to be allocated.
Scope: local
Type: required
-Intent: inout.
+Intent: out.
-Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type, of
-type real, complex or integer.
+Specified as: a rank one or two array with the ALLOCATABLE attribute
+or an object of type vdatapsb_T_vect_type, of type real, complex or integer.
info
Error code.
@@ -182,40 +147,29 @@ An integer value; 0 means no error has been detected.
-
-Notes
-
-
-
Dense vectors/matrices do not have an associated state;
-
-
Duplicate entries are either overwritten or added, there is no
- provision for raising an error condition.
-
Number of rows in to be inserted.
+
+Scope:local.
+
+Type:required.
+
+Intent: in.
+
+Specified as: an integer value.
+
+
irw
+
Indices of the rows to be inserted. Specifically, row
+ of will be inserted into the local row corresponding to the
+ global row index .
+Scope:local.
+
+Type:required.
+
+Intent: in.
+
+Specified as: an integer array.
+
+
val
+
the dense submatrix to be inserted.
+
+Scope:local.
+
+Type:required.
+
+Intent: in.
+
+Specified as: a rank 1 or 2 array.
+Specified as: an integer value.
+
desc_a
-
The communication descriptor.
+
the communication descriptor.
-Scope: local
+Scope:local.
-Type: required
+Type:required.
Intent: in.
-Specified as: a variable of type descdatapsb_desc_type.
-
-
mold
-
The desired dynamic type for the internal vector storage.
+Specified as: a structured data of type descdatapsb_desc_type.
+
+
dupl
+
How to handle duplicate coefficients.
-Scope: local.
+Scope: global.
Type: optional.
Intent: in.
-Specified as: an object of a class derived from vbasedatapsb_T_base_vect_type; this is
-only allowed when is of type vdatapsb_T_vect_type.
+Specified as: integer, possible values: psb_dupl_ovwrt_,
+psb_dupl_add_.
+
+
local
+
Whether the entries in the index vector irw,
+ are already in local numbering.
+
+Scope:local.
+
+Type:optional.
+
+Specified as: a logical value; default: .false..
+
+
@@ -102,7 +158,7 @@ only allowed when
x
-
The dense matrix to be assembled.
+
the output dense matrix.
Scope: local
@@ -110,8 +166,8 @@ Type: required
Intent: inout.
-Specified as: a rank one or two array with the ALLOCATABLE or an
-object of type vdatapsb_T_vect_type, of type real, complex or integer.
+Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type, of
+type real, complex or integer.
info
Error code.
@@ -125,7 +181,43 @@ Intent: out.
An integer value; 0 means no error has been detected.
-
+
+
+Notes
+
+
+
Dense vectors/matrices do not have an associated state;
+
+
Duplicate entries are either overwritten or added, there is no
+ provision for raising an error condition.
+
-The PSBLAS librarary is based on the Single Program Multiple Data
-(SPMD) programming model: each process participating in the
-computation performs the same actions on a chunk of data. Parallelism
-is thus data-driven.
+PSBLAS supports user-defined global to local index mappings, subject
+to the constraints outlined in sec. 2.3:
-
-Because of this structure, many subroutines coordinate their action
-across the various processes, thus providing an implicit
-synchronization point, and therefore must be
-called simultaneously by all processes participating in the
-computation. This is certainly true for the data allocation and
-assembly routines, for all the computational routines and for some of
-the tools routines.
+
+
The set of indices owned locally must be mapped to the set
+
+;
+
+
The set of halo points must be mapped to the set
+
+;
+
+
+but otherwise the mapping is arbitrary. The user application is
+responsible to ensure consistency of this mapping; some errors may be
+catched by the library, but this is not guaranteed.
+The application structure to
+support this usage is as follows:
-
-However there are many cases where no synchronization, and indeed no
-communication among processes, is implied; for instance, all the routines in
-sec. are only acting on the local data structures,
-and thus may be called independently. The most important case is that
-of the coefficient insertion routines: since the number of
-coefficients in the sparse and dense matrices varies among the
-processors, and since the user is free to choose an arbitrary order in
-builiding the matrix entries, these routines cannot imply a
-synchronization.
+
+
Initialize index space with
+ psb_cdall(ictx,desc,info,vl=vl,lidx=lidx) passing the vectors
+ vl(:) containing the set of global indices owned by the
+ current process and lidx(:) containing the corresponding
+ local indices;
+
+
Add the halo points ja(:) and their associated local
+ indices lidx(:) with a(some) call(s) to
+ psb_cdins(nz,ja,desc,info,lidx=lidx);
+
+
Assemble the descriptor with psb_cdasb;
+
+
Build the sparse matrices and vectors, optionally making use in
+ psb_spins and psb_geins of the local argument
+ specifying that the indices in ia, ja and irw,
+ respectively, are already local indices.
+
+
-Throughout this user's guide each subroutine will be clearly indicated
-as:
-
-
Synchronous:
-
must be called simultaneously by all the
- processes in the relevant communication context;
-
The dense matrix to
- be freed.
-
-Scope: local
-
-Type: required
-
-Intent: inout.
-
-Specified as: a rank one or two array with the ALLOCATABLE or an
-object of type vdatapsb_T_vect_type, of type real, complex or integer.
-
-
-
desc_a
The communication descriptor.
@@ -94,6 +79,21 @@ Intent: in.
Specified as: a variable of type descdatapsb_desc_type.
+
mold
+
The desired dynamic type for the internal vector storage.
+
+Scope: local.
+
+Type: optional.
+
+Intent: in.
+
+Specified as: an object of a class derived from vbasedatapsb_T_base_vect_type; this is
+only allowed when is of type vdatapsb_T_vect_type.
+
@@ -101,6 +101,18 @@ Specified as: a variable of type descdatapsb_desc_type.
On Return
+
x
+
The dense matrix to be assembled.
+
+Scope: local
+
+Type: required
+
+Intent: inout.
+
+Specified as: a rank one or two array with the ALLOCATABLE or an
+object of type vdatapsb_T_vect_type, of type real, complex or integer.
+
info
Error code.
@@ -113,8 +125,6 @@ Intent: out.
An integer value; 0 means no error has been detected.
-
-
diff --git a/docs/html/node71.html b/docs/html/node71.html
index 3137eea2..eff0bcc2 100644
--- a/docs/html/node71.html
+++ b/docs/html/node71.html
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-psb_gelp -- Applies a left permutation to a dense matrix
-
+psb_gefree -- Frees a dense matrix
+
@@ -20,99 +20,79 @@ original version by: Nikos Drakos, CBLU, University of Leeds
-
+
-
-
+
-
-
- Next:psb_glob_to_loc Global
- Up:Data management routines
- Previous:psb_gefree Frees
- Next:psb_gelp Applies
+ Up:Data management routines
+ Previous:psb_geasb Assembly
+ Contents
A character that specifies whether to permute or .
+
x
+
The dense matrix to
+ be freed.
Scope: local
Type: required
-Intent: in.
-
-Specified as: a single character with value 'N' for or 'T' for .
-
-
iperm
-
An integer array containing permutation information.
-
-Scope: local
-
-Type: required
+Intent: inout.
-Intent: in.
+Specified as: a rank one or two array with the ALLOCATABLE or an
+object of type vdatapsb_T_vect_type, of type real, complex or integer.
-Specified as: an integer one-dimensional array.
-
-
x
-
The dense matrix to be permuted.
+
+
+
desc_a
+
The communication descriptor.
Scope: local
Type: required
-Intent: inout.
+Intent: in.
-Specified as: a one or two dimensional array.
+Specified as: a variable of type descdatapsb_desc_type.
diff --git a/docs/html/node72.html b/docs/html/node72.html
index 72b56d89..1b733761 100644
--- a/docs/html/node72.html
+++ b/docs/html/node72.html
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-psb_glob_to_loc -- Global to local indices convertion
-
+psb_gelp -- Applies a left permutation to a dense matrix
+
@@ -20,46 +20,45 @@ original version by: Nikos Drakos, CBLU, University of Leeds
-
+
-
-
+
-
-
- Next:psb_loc_to_glob Local
- Up:Data management routines
- Previous:psb_gelp Applies
- Next:psb_glob_to_loc Global
+ Up:Data management routines
+ Previous:psb_gefree Frees
+ Contents
A character that specifies whether to permute or .
Scope: local
Type: required
-Intent: in, inout.
+Intent: in.
-Specified as: a rank one integer array.
+Specified as: a single character with value 'N' for or 'T' for .
-
desc_a
-
the communication descriptor.
+
iperm
+
An integer array containing permutation information.
-Scope:local.
+Scope: local
-Type:required.
+Type: required
Intent: in.
-Specified as: a structured data of type descdatapsb_desc_type.
-
-
iact
-
specifies action to be taken in case of range errors.
-Scope: global
-
-Type: optional
-
-Intent: in.
+Specified as: an integer one-dimensional array.
+
+
x
+
The dense matrix to be permuted.
-Specified as: a character variable Ignore, Warning or
-Abort, default Ignore.
-
-
owned
-
Specfies valid range of input
-Scope: global
+Scope: local
-Type: optional
+Type: required
-Intent: in.
+Intent: inout.
-If true, then only indices strictly owned by the current process are
-considered valid, if false then halo indices are also
-accepted. Default: false.
-
+Specified as: a one or two dimensional array.
+
@@ -122,44 +121,6 @@ accepted. Default: false.
On Return
-
x
-
If is not present,
- then is overwritten with the translated integer indices.
-Scope: global
-
-Type: required
-
-Intent: inout.
-
-Specified as: a rank one integer array.
-
-
y
-
If is present,
- then is overwritten with the translated integer indices, and
- is left unchanged.
-Scope: global
-
-Type: optional
-
-Intent: out.
-
-Specified as: a rank one integer array.
-
info
Error code.
@@ -174,42 +135,7 @@ An integer value; 0 means no error has been detected.
-Notes
-
-
-
If an input index is out of range, then the corresponding output
- index is set to a negative number;
-
-
The default Ignore means that the negative output is the
- only action taken on an out-of-range input.
-
@@ -103,6 +103,18 @@ Intent: in.
Specified as: a character variable Ignore, Warning or
Abort, default Ignore.
+
owned
+
Specfies valid range of input
+Scope: global
+
+Type: optional
+
+Intent: in.
+
+If true, then only indices strictly owned by the current process are
+considered valid, if false then halo indices are also
+accepted. Default: false.
+
@@ -131,7 +143,7 @@ Specified as: a rank one integer array.
If is not present,
+ ALT="$y$"> is present,
then
+
+Notes
+
+
+
If an input index is out of range, then the corresponding output
+ index is set to a negative number;
+
+
The default Ignore means that the negative output is the
+ only action taken on an out-of-range input.
+
An integer vector of indices to be converted.
Scope: local
Type: required
-Intent: in.
+Intent: in, inout.
-Specified as: a scalar integer.
+Specified as: a rank one integer array.
desc_a
the communication descriptor.
@@ -90,6 +92,17 @@ Intent: in.
Specified as: a structured data of type descdatapsb_desc_type.
+
iact
+
specifies action to be taken in case of range errors.
+Scope: global
+
+Type: optional
+
+Intent: in.
+
+Specified as: a character variable Ignore, Warning or
+Abort, default Ignore.
+
@@ -97,32 +110,82 @@ Specified as: a structured data of type descdatapsb_desc_type.
On Return
-
Function value
-
A logical mask which is true if
- x
+
If is not present,
+ then is owned by the current process
-Scope: local
+ ALT="$x$"> is overwritten with the translated integer indices.
+Scope: global
Type: required
+Intent: inout.
+
+Specified as: a rank one integer array.
+
+
y
+
If is not present,
+ then is overwritten with the translated integer indices, and
+ is left unchanged.
+Scope: global
+
+Type: optional
+
Intent: out.
-
+
+Specified as: a rank one integer array.
+
+
info
+
Error code.
+
+Scope: local
+
+Type: required
+
+Intent: out.
+
+An integer value; 0 means no error has been detected.
+
-Notes
-
-
-
This routine returns a .true. value for an index
- that is strictly owned by the current process, excluding the halo
- indices
-
Integer index.
Scope: local
Type: required
-Intent: in, inout.
+Intent: in.
-Specified as: a scalar or a rank one integer array.
+Specified as: a scalar integer.
desc_a
the communication descriptor.
@@ -90,17 +90,6 @@ Intent: in.
Specified as: a structured data of type descdatapsb_desc_type.
-
iact
-
specifies action to be taken in case of range errors.
-Scope: global
-
-Type: optional
-
-Intent: in.
-
-Specified as: a character variable Ignore, Warning or
-Abort, default Ignore.
-
@@ -108,39 +97,26 @@ Specified as: a character variable Ignore, Warning or
On Return
-
y
-
A logical mask which is true for all corresponding entries of
+
Function value
+
A logical mask which is true if
that are owned by the current process
+ ALT="$x$"> is owned by the current process
Scope: local
Type: required
Intent: out.
-
-Specified as: a scalar or rank one logical array.
-
-
info
-
Error code.
-
-Scope: local
-
-Type: required
-
-Intent: out.
-
-An integer value; 0 means no error has been detected.
-
+
Notes
-
This routine returns a .true. value for those indices
- that are strictly owned by the current process, excluding the halo
+
This routine returns a .true. value for an index
+ that is strictly owned by the current process, excluding the halo
indices
diff --git a/docs/html/node76.html b/docs/html/node76.html
index fd9be5d5..334a9307 100644
--- a/docs/html/node76.html
+++ b/docs/html/node76.html
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-psb_is_local
-
+psb_owned_index
+
@@ -20,44 +20,44 @@ original version by: Nikos Drakos, CBLU, University of Leeds
-
+
-
-
+
-
-
- Next:psb_local_index
- Up:Data management routines
- Previous:psb_owned_index
- Next:psb_is_local
+ Up:Data management routines
+ Previous:psb_is_owned
+ Contents
Integer indices.
Scope: local
Type: required
-Intent: in.
+Intent: in, inout.
-Specified as: a scalar integer.
+Specified as: a scalar or a rank one integer array.
desc_a
the communication descriptor.
@@ -90,6 +90,17 @@ Intent: in.
Specified as: a structured data of type descdatapsb_desc_type.
+
iact
+
specifies action to be taken in case of range errors.
+Scope: global
+
+Type: optional
+
+Intent: in.
+
+Specified as: a character variable Ignore, Warning or
+Abort, default Ignore.
+
@@ -97,26 +108,39 @@ Specified as: a structured data of type descdatapsb_desc_type.
On Return
-
Function value
-
A logical mask which is true if
+
y
+
A logical mask which is true for all corresponding entries of
is local to the current process
+ ALT="$x$"> that are owned by the current process
Scope: local
Type: required
Intent: out.
-
+
+Specified as: a scalar or rank one logical array.
+
+
info
+
Error code.
+
+Scope: local
+
+Type: required
+
+Intent: out.
+
+An integer value; 0 means no error has been detected.
+
Notes
-
This routine returns a .true. value for an index
- that is local to the current process, including the halo
+
This routine returns a .true. value for those indices
+ that are strictly owned by the current process, excluding the halo
indices
diff --git a/docs/html/node77.html b/docs/html/node77.html
index 29643d9b..cdaa6257 100644
--- a/docs/html/node77.html
+++ b/docs/html/node77.html
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-psb_local_index
-
+psb_is_local
+
@@ -20,44 +20,44 @@ original version by: Nikos Drakos, CBLU, University of Leeds
-
+
-
-
+
-
-
- Next:psb_get_boundary Extract
- Up:Data management routines
- Previous:psb_is_local
- Next:psb_local_index
+ Up:Data management routines
+ Previous:psb_owned_index
+ Contents
Integer index.
Scope: local
Type: required
-Intent: in, inout.
+Intent: in.
-Specified as: a scalar or a rank one integer array.
+Specified as: a scalar integer.
desc_a
the communication descriptor.
@@ -90,17 +90,6 @@ Intent: in.
Specified as: a structured data of type descdatapsb_desc_type.
-
iact
-
specifies action to be taken in case of range errors.
-Scope: global
-
-Type: optional
-
-Intent: in.
-
-Specified as: a character variable Ignore, Warning or
-Abort, default Ignore.
-
@@ -108,40 +97,27 @@ Specified as: a character variable Ignore, Warning or
On Return
-
y
-
A logical mask which is true for all corresponding entries of
+
Function value
+
A logical mask which is true if
that are local to the current process
+ ALT="$x$"> is local to the current process
Scope: local
Type: required
Intent: out.
-
-Specified as: a scalar or rank one logical array.
-
-
info
-
Error code.
-
-Scope: local
-
-Type: required
-
-Intent: out.
-
-An integer value; 0 means no error has been detected.
-
+
Notes
-
This routine returns a .true. value for those indices
- that are local to the current process, including the halo
- indices.
+
This routine returns a .true. value for an index
+ that is local to the current process, including the halo
+ indices
diff --git a/docs/html/node78.html b/docs/html/node78.html
index 1a52d7e2..41a42cd1 100644
--- a/docs/html/node78.html
+++ b/docs/html/node78.html
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-psb_get_boundary -- Extract list of boundary elements
-
+psb_local_index
+
@@ -20,44 +20,44 @@ original version by: Nikos Drakos, CBLU, University of Leeds
-
+
-
-
+
-
-
- Next:psb_get_overlap Extract
- Up:Data management routines
- Previous:psb_local_index
- Next:psb_get_boundary Extract
+ Up:Data management routines
+ Previous:psb_is_local
+ Contents
Integer indices.
+
+Scope: local
+
+Type: required
+
+Intent: in, inout.
+
+Specified as: a scalar or a rank one integer array.
+
+
desc_a
the communication descriptor.
Scope:local.
@@ -79,6 +90,17 @@ Intent: in.
Specified as: a structured data of type descdatapsb_desc_type.
+
iact
+
specifies action to be taken in case of range errors.
+Scope: global
+
+Type: optional
+
+Intent: in.
+
+Specified as: a character variable Ignore, Warning or
+Abort, default Ignore.
+
@@ -86,19 +108,20 @@ Specified as: a structured data of type descdatapsb_desc_type.
On Return
-
bndel
-
The list of boundary elements on the calling process, in
- local numbering.
-
+
y
+
A logical mask which is true for all corresponding entries of
+ that are local to the current process
Scope: local
Type: required
Intent: out.
-Specified as: a rank one array with the ALLOCATABLE
-attribute, of type integer.
-
+Specified as: a scalar or rank one logical array.
+
info
Error code.
@@ -116,12 +139,9 @@ An integer value; 0 means no error has been detected.
Notes
-
If there are no boundary elements (i.e., if the local part of
- the connectivity graph is self-contained) the output vector is set
- to the ``not allocated'' state.
-
-
Otherwise the size of bndel will be exactly equal to the
- number of boundary elements.
+
This routine returns a .true. value for those indices
+ that are local to the current process, including the halo
+ indices.
diff --git a/docs/html/node79.html b/docs/html/node79.html
index 2fc320ef..9c52e269 100644
--- a/docs/html/node79.html
+++ b/docs/html/node79.html
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-psb_get_overlap -- Extract list of overlap elements
-
+psb_get_boundary -- Extract list of boundary elements
+
@@ -20,44 +20,44 @@ original version by: Nikos Drakos, CBLU, University of Leeds
-
+
-
-
+
-
-
- Next:psb_sp_getrow Extract
- Up:Data management routines
- Previous:psb_get_boundary Extract
- Next:psb_get_overlap Extract
+ Up:Data management routines
+ Previous:psb_local_index
+ Contents
@@ -86,8 +86,8 @@ Specified as: a structured data of type descdatapsb_desc_type.
On Return
-
ovrel
-
The list of overlap elements on the calling process, in
+
bndel
+
The list of boundary elements on the calling process, in
local numbering.
Scope: local
@@ -116,11 +116,12 @@ An integer value; 0 means no error has been detected.
Notes
-
If there are no overlap elements the output vector is set
- to the ``not allocated'' state.
+
If there are no boundary elements (i.e., if the local part of
+ the connectivity graph is self-contained) the output vector is set
+ to the ``not allocated'' state.
-
Otherwise the size of ovrel will be exactly equal to the
- number of overlap elements.
+
Otherwise the size of bndel will be exactly equal to the
+ number of boundary elements.
diff --git a/docs/html/node8.html b/docs/html/node8.html
index 0bf20630..5ac1d581 100644
--- a/docs/html/node8.html
+++ b/docs/html/node8.html
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-Data Structures and Classes
-
+Programming model
+
@@ -18,198 +18,104 @@ original version by: Nikos Drakos, CBLU, University of Leeds
-
-
-
+
+
-
-
+
-
-
- Next:Descriptor data structure
- Up:userhtml
- Previous:Programming model
- Next:Data Structures and Classes
+ Up:General overview
+ Previous:User-defined index mappings
+ Contents
+The PSBLAS librarary is based on the Single Program Multiple Data
+(SPMD) programming model: each process participating in the
+computation performs the same actions on a chunk of data. Parallelism
+is thus data-driven.
-In this chapter we illustrate the data structures used for definition of
-routines interfaces. They include data structures for sparse matrices,
-communication descriptors and preconditioners.
+Because of this structure, many subroutines coordinate their action
+across the various processes, thus providing an implicit
+synchronization point, and therefore must be
+called simultaneously by all processes participating in the
+computation. This is certainly true for the data allocation and
+assembly routines, for all the computational routines and for some of
+the tools routines.
+
-All the data types and the basic subroutine interfaces related to
-descriptors and sparse matrices are defined in
-the module psb_base_mod; this will have to be included by every
-user subroutine that makes use of the library. The preconditioners are
-defined in the module psb_prec_mod
+However there are many cases where no synchronization, and indeed no
+communication among processes, is implied; for instance, all the routines in
+sec. are only acting on the local data structures,
+and thus may be called independently. The most important case is that
+of the coefficient insertion routines: since the number of
+coefficients in the sparse and dense matrices varies among the
+processors, and since the user is free to choose an arbitrary order in
+builiding the matrix entries, these routines cannot imply a
+synchronization.
-Integer, real and complex data types are parametrized with a kind type
-defined in the library as follows:
+Throughout this user's guide each subroutine will be clearly indicated
+as:
-
psb_spk_
-
Kind parameter for short precision real and complex
- data; corresponds to a REAL declaration and is
- normally 4 bytes;
-
-
psb_dpk_
-
Kind parameter for long precision real and complex
- data; corresponds to a DOUBLE PRECISION declaration and is
- normally 8 bytes;
-
-
psb_ipk_
-
Kind parameter for integer data;
- with default build options this is a 4 bytes integer, but there is
- (highly) experimental support for 8-bytes integers;
+
Synchronous:
+
must be called simultaneously by all the
+ processes in the relevant communication context;
-
psb_mpik_
-
Kind parameter for 4-bytes integer data, as is
- always used by MPI;
-
-
psb_long_int_k_
-
Kind parameter for long (8 bytes) integers,
- which are always used by the sizeof methods.
+
Asynchronous:
+
may be called in a totally independent manner.
-Together with the classes attributes we also discuss their
-methods. Most methods detailed here only act on the local variable,
-i.e. their action is purely local and asynchronous unless otherwise
-stated.
-The list of methods here is not completely exhaustive; many methods,
-especially those that alter the contents of the various objects, are
-usually not needed by the end-user, and therefore are described in the
-developer's documentation.
the communication descriptor.
-Scope:local
-
-Type:required
-
-Intent: in.
-
-Specified as: an integer .
-
-
a
-
the matrix from which to get rows.
-
-Scope:local
-
-Type:required
-
-Intent: in.
-
-Specified as: a structured data of type spdatapsb_Tspmat_type.
-
-
append
-
Whether to append or overwrite existing output.
-
-Scope:local
-
-Type:optional
-
-Intent: in.
-
-Specified as: a logical value default: false (overwrite).
-
-
nzin
-
Input size to be appended to.
-
-Scope:local
-
-Type:optional
-
-Intent: in.
-
-Specified as: an integer . When append is true, specifies how many
-entries in the output vectors are already filled.
-
-
lrw
-
The last row to be extracted.
-
-Scope:local
+Scope:local.
-Type:optional
+Type:required.
Intent: in.
-Specified as: an integer , default: .
-
-
+Specified as: a structured data of type descdatapsb_desc_type.
@@ -146,50 +86,19 @@ Specified as: an integer On Return
-
nz
-
the number of elements returned by this call.
+
ovrel
+
The list of overlap elements on the calling process, in
+ local numbering.
-Scope:local.
+Scope: local
-Type:required.
+Type: required
Intent: out.
-Returned as: an integer scalar.
-
-
ia
-
the row indices.
-
-Scope:local.
-
-Type:required.
-
-Intent: inout.
-
-Specified as: an integer array with the ALLOCATABLE attribute.
-
-
ja
-
the column indices of the elements to be inserted.
-
-Scope:local.
-
-Type:required.
-
-Intent: inout.
-
-Specified as: an integer array with the ALLOCATABLE attribute.
-
-
val
-
the elements to be inserted.
-
-Scope:local.
-
-Type:required.
-
-Intent: inout.
-
-Specified as: a real array with the ALLOCATABLE attribute.
-
+Specified as: a rank one array with the ALLOCATABLE
+attribute, of type integer.
+
info
Error code.
@@ -207,51 +116,16 @@ An integer value; 0 means no error has been detected.
Notes
-
The output is always the size of the output generated by
- the current call; thus, if append=.true., the total output
- size will be , with the newly extracted coefficients stored in
- entries nzin+1:nzin+nz of the array arguments;
+
If there are no overlap elements the output vector is set
+ to the ``not allocated'' state.
-
When append=.true. the output arrays are reallocated as
- necessary;
-
-
The row and column indices are returned in the local numbering
- scheme; if the global numbering is desired, the user may employ the
- psb_loc_to_glob routine on the output.
+
Otherwise the size of ovrel will be exactly equal to the
+ number of overlap elements.
The (first) row to be extracted.
+
+Scope:local
+
+Type:required
+
+Intent: in.
+
+Specified as: an integer .
+
a
-
A sparse matrix
-.
+
the matrix from which to get rows.
-Scope: local
+Scope:local
-Type: required
+Type:required
Intent: in.
Specified as: a structured data of type spdatapsb_Tspmat_type.
-
desc_a
-
Communication descriptor.
+
append
+
Whether to append or overwrite existing output.
-Scope: local
+Scope:local
+
+Type:optional
+
+Intent: in.
+
+Specified as: a logical value default: false (overwrite).
+
+
nzin
+
Input size to be appended to.
-Type: required
+Scope:local
+
+Type:optional
Intent: in.
-Specified as: a structured data of type descdatapsb_desc_type.
+Specified as: an integer . When append is true, specifies how many
+entries in the output vectors are already filled.
-
prec
-
Scope: local
+
lrw
+
The last row to be extracted.
+
+Scope:local
-Type: required
+Type:optional
Intent: in.
-Specified as: a preconditioner data structure precdatapsb_prec_type.
+Specified as: an integer , default: .
+
+
+
+
+
+
On Return
-
Function value
-
The memory occupation of the object specified in
- the calling sequence, in bytes.
+
nz
+
the number of elements returned by this call.
+
+Scope:local.
+
+Type:required.
+
+Intent: out.
+
+Returned as: an integer scalar.
+
+
ia
+
the row indices.
+
+Scope:local.
+
+Type:required.
+
+Intent: inout.
+
+Specified as: an integer array with the ALLOCATABLE attribute.
+
+
ja
+
the column indices of the elements to be inserted.
+
+Scope:local.
+
+Type:required.
+
+Intent: inout.
+
+Specified as: an integer array with the ALLOCATABLE attribute.
+
+
val
+
the elements to be inserted.
+
+Scope:local.
+
+Type:required.
+
+Intent: inout.
+
+Specified as: a real array with the ALLOCATABLE attribute.
+
+
info
+
Error code.
Scope: local
-Returned as: an integer(psb_long_int_k_) number.
+Type: required
+
+Intent: out.
+
+An integer value; 0 means no error has been detected.
-
+Notes
+
+
+
The output is always the size of the output generated by
+ the current call; thus, if append=.true., the total output
+ size will be , with the newly extracted coefficients stored in
+ entries nzin+1:nzin+nz of the array arguments;
+
+
When append=.true. the output arrays are reallocated as
+ necessary;
+
+
The row and column indices are returned in the local numbering
+ scheme; if the global numbering is desired, the user may employ the
+ psb_loc_to_glob routine on the output.
+
-These serial routines sort a sequence into ascending or
-descending order. The argument meaning is identical for the three
-calls; the only difference is the algorithm used to accomplish the
-task (see Usage Notes below).
Type:
Asynchronous.
-
On Entry
+
On Entry
-
x
-
The sequence to be sorted.
+
a
+
A sparse matrix
+.
-Type:required.
+Scope: local
-Specified as: an integer, real or complex array of rank 1.
-
-
ix
-
A vector of indices.
+Type: required
-Type:optional.
+Intent: in.
-Specified as: an integer array of (at least) the same size as .
+Specified as: a structured data of type spdatapsb_Tspmat_type.
-
dir
-
The desired ordering.
+
desc_a
+
Communication descriptor.
-Type:optional.
+Scope: local
-Specified as: an integer value:
+Type: required
+
+Intent: in.
+
+Specified as: a structured data of type descdatapsb_desc_type.
-
flag
-
Whether to keep the original values in .
+
prec
+
Scope: local
-Type:optional.
+Type: required
-Specified as: an integer value psb_sort_ovw_idx_ or
-psb_sort_keep_idx_; default psb_sort_ovw_idx_.
-
-
+Intent: in.
+
+Specified as: a preconditioner data structure precdatapsb_prec_type.
-
-
-
-
On Return
-
x
-
The sequence of values, in the chosen ordering.
+
Function value
+
The memory occupation of the object specified in
+ the calling sequence, in bytes.
-Type:required.
+Scope: local
-Specified as: an integer, real or complex array of rank 1.
-
-
ix
-
A vector of indices.
-
-Type: Optional
-
-An integer array of rank 1, whose entries are moved to the same
-position as the corresponding entries in .
+Returned as: an integer(psb_long_int_k_) number.
-
-
-Notes
-
-
-
For integer or real data the sorting can be performed in the up/down direction, on the
- natural or absolute values;
-
-
For complex data the sorting can be done in a lexicographic
- order (i.e.: sort on the real part with ties broken according to
- the imaginary part) or on the absolute values;
-
-
The routines return the items in the chosen ordering; the
- output difference is the handling of ties (i.e. items with an
- equal value) in the original input. With the merge-sort algorithm
- ties are preserved in the same relative order as they had in the
- original sequence, while this is not guaranteed for quicksort or
- heapsort;
-
-
If
- then the entries in
- where is the size of are initialized to
-; thus, upon return from the subroutine, for each
- index we have in the position that the item
- occupied in the original data sequence;
-
-
If
- the routine will assume that
- the entries in have already been initialized by the user;
-
-
The three sorting algorithms have a similar expected
- running time; in the average case quicksort will be the
- fastest and merge-sort the slowest. However note that:
-
-
-
The worst case running time for quicksort is ; the algorithm
- implemented here follows the well-known median-of-three heuristics,
- but the worst case may still apply;
-
-
The worst case running time for merge-sort and heap-sort is
- as the average case;
-
-
The merge-sort algorithm is implemented to take advantage of
- subsequences that may be already in the desired ordering prior to
- the subroutine call; this situation is relatively common when
- dealing with groups of indices of sparse matrix entries, thus
- merge-sort is the preferred choice when a sorting is needed
- by other routines in the library.
-
+These serial routines sort a sequence into ascending or
+descending order. The argument meaning is identical for the three
+calls; the only difference is the algorithm used to accomplish the
+task (see Usage Notes below).
+
+
Type:
+
Asynchronous.
+
+
On Entry
+
+
+
x
+
The sequence to be sorted.
+
+Type:required.
+
+Specified as: an integer, real or complex array of rank 1.
+
+
ix
+
A vector of indices.
+
+Type:optional.
+
+Specified as: an integer array of (at least) the same size as .
+
+
dir
+
The desired ordering.
+
+Type:optional.
+
+Specified as: an integer value:
Whether to keep the original values in .
+
+Type:optional.
+
+Specified as: an integer value psb_sort_ovw_idx_ or
+psb_sort_keep_idx_; default psb_sort_ovw_idx_.
+
+
+
+
+
+
+
+
On Return
+
+
+
x
+
The sequence of values, in the chosen ordering.
+
+Type:required.
-Parallel environment routines
-
+Specified as: an integer, real or complex array of rank 1.
+
+
ix
+
A vector of indices.
+
+Type: Optional
+
+An integer array of rank 1, whose entries are moved to the same
+position as the corresponding entries in .
+
For integer or real data the sorting can be performed in the up/down direction, on the
+ natural or absolute values;
+
+
For complex data the sorting can be done in a lexicographic
+ order (i.e.: sort on the real part with ties broken according to
+ the imaginary part) or on the absolute values;
+
+
The routines return the items in the chosen ordering; the
+ output difference is the handling of ties (i.e. items with an
+ equal value) in the original input. With the merge-sort algorithm
+ ties are preserved in the same relative order as they had in the
+ original sequence, while this is not guaranteed for quicksort or
+ heapsort;
+
+
If
+ then the entries in
+ where is the size of are initialized to
+; thus, upon return from the subroutine, for each
+ index we have in the position that the item
+ occupied in the original data sequence;
+
+
If
+ the routine will assume that
+ the entries in have already been initialized by the user;
+
+
The three sorting algorithms have a similar expected
+ running time; in the average case quicksort will be the
+ fastest and merge-sort the slowest. However note that:
+
+
+
The worst case running time for quicksort is ; the algorithm
+ implemented here follows the well-known median-of-three heuristics,
+ but the worst case may still apply;
+
+
The worst case running time for merge-sort and heap-sort is
+ as the average case;
+
+
The merge-sort algorithm is implemented to take advantage of
+ subsequences that may be already in the desired ordering prior to
+ the subroutine call; this situation is relatively common when
+ dealing with groups of indices of sparse matrix entries, thus
+ merge-sort is the preferred choice when a sorting is needed
+ by other routines in the library.
+
-This subroutine initializes the PSBLAS parallel environment, defining
-a virtual parallel machine.
-
-
Type:
-
Synchronous.
-
-
On Entry
-
-
-
np
-
Number of processes in the PSBLAS virtual parallel machine.
-
-Scope: global.
-
-Type: optional.
-
-Intent: in.
-
-Specified as: an integer value. Default: use all available processes.
-
-
basectxt
-
the initial communication context. The new context
- will be defined from the processes participating in the initial one.
+
+
-Scope: global.
-
-Type: optional.
-
-Intent: in.
-
-Specified as: an integer value. Default: use MPI_COMM_WORLD.
-
-
ids
-
Identities of the processes to use for the new context; the
- argument is ignored when np is not specified. This allows the
- processes in the new environment to be in an order different from the
- original one.
-
-Scope: global.
-
-Type: optional.
-
-Intent: in.
-
-Specified as: an integer array. Default: use the indices .
-
-
+Parallel environment routines
+
-
-
On Return
-
-
-
icontxt
-
the communication context identifying the virtual
- parallel machine. Note that this is always a duplicate of
- basectxt, so that library communications are completely
- separated from other communication operations.
-
-Scope: global.
-
-Type: required.
-
-Intent: out.
-
-Specified as: an integer variable.
-
-
-
-
-Notes
-
-
-
A call to this routine must precede any other PSBLAS call.
-
-
It is an error to specify a value for greater than the
- number of processes available in the underlying base parallel
- environment.
-
-This subroutine returns information about the PSBLAS parallel environment, defining
+This subroutine initializes the PSBLAS parallel environment, defining
a virtual parallel machine.
Type:
-
Asynchronous.
+
Synchronous.
On Entry
-
icontxt
-
the communication context identifying the virtual
- parallel machine.
+
np
+
Number of processes in the PSBLAS virtual parallel machine.
Scope: global.
-Type: required.
+Type: optional.
Intent: in.
-Specified as: an integer variable.
+Specified as: an integer value. Default: use all available processes.
+
+
basectxt
+
the initial communication context. The new context
+ will be defined from the processes participating in the initial one.
+
+Scope: global.
+
+Type: optional.
+
+Intent: in.
+
+Specified as: an integer value. Default: use MPI_COMM_WORLD.
+
+
ids
+
Identities of the processes to use for the new context; the
+ argument is ignored when np is not specified. This allows the
+ processes in the new environment to be in an order different from the
+ original one.
+
+Scope: global.
+
+Type: optional.
+
+Intent: in.
+
+Specified as: an integer array. Default: use the indices .
@@ -90,24 +117,11 @@ Specified as: an integer variable.
On Return
-
iam
-
Identifier of current process in the PSBLAS virtual parallel machine.
-
-Scope: local.
-
-Type: required.
-
-Intent: out.
-
-Specified as: an integer value.
-
-
np
-
Number of processes in the PSBLAS virtual parallel machine.
+
icontxt
+
the communication context identifying the virtual
+ parallel machine. Note that this is always a duplicate of
+ basectxt, so that library communications are completely
+ separated from other communication operations.
Scope: global.
@@ -115,56 +129,48 @@ Type: required.
Intent: out.
-Specified as: an integer variable.
+Specified as: an integer variable.
+
Notes
-
For processes in the virtual parallel machine the identifier
- will satisfy
-;
+
A call to this routine must precede any other PSBLAS call.
-
If the user has requested on psb_init a number of
- processes less than the total available in the parallel execution
- environment, the remaining processes will have on return ;
- the only call involving icontxt that any such process may
- execute is to psb_exit.
+
It is an error to specify a value for greater than the
+ number of processes available in the underlying base parallel
+ environment.
-This subroutine exits from the PSBLAS parallel virtual machine.
+This subroutine returns information about the PSBLAS parallel environment, defining
+a virtual parallel machine.
Type:
-
Synchronous.
+
Asynchronous.
On Entry
@@ -82,67 +83,88 @@ Intent: in.
Specified as: an integer variable.
-
close
-
Whether to close all data structures related to the
- virtual parallel machine, besides those associated with icontxt.
+
+
+
+
+
On Return
+
+
+
iam
+
Identifier of current process in the PSBLAS virtual parallel machine.
+
+Scope: local.
+
+Type: required.
+
+Intent: out.
+
+Specified as: an integer value.
+
+
np
+
Number of processes in the PSBLAS virtual parallel machine.
Scope: global.
-Type: optional.
+Type: required.
-Intent: in.
+Intent: out.
-Specified as: a logical variable, default value: true.
-
+Specified as: an integer variable.
Notes
-
This routine may be called even if a previous call to
- psb_info has returned with For processes in the virtual parallel machine the identifier
+ will satisfy
+;
+
+
If the user has requested on psb_init a number of
+ processes less than the total available in the parallel execution
+ environment, the remaining processes will have on return ; indeed, it it is the only
- routine that may be called with argument icontxt in this
- situation.
-
-
A call to this routine with close=.true. implies a call
- to MPI_Finalize, after which no parallel routine may be called.
-
-
If the user whishes to use multiple communication contexts in the
- same program, or to enter and exit multiple times into the parallel
- environment, this routine may be called to
- selectively close the contexts with close=.false., while on
- the last call it should be called with close=.true. to
- shutdown in a clean way the entire parallel environment.
+ ALT="$iam=-1$">;
+ the only call involving icontxt that any such process may
+ execute is to psb_exit.
-This subroutine returns the MPI communicator associated with a PSBLAS context
+This subroutine exits from the PSBLAS parallel virtual machine.
Type:
-
Asynchronous.
+
Synchronous.
On Entry
@@ -81,26 +82,69 @@ Intent: in.
Specified as: an integer variable.
-
-
-
-
-
On Return
-
-
-
icomm
-
The MPI communicator associated with the PSBLAS virtual parallel machine.
+
close
+
Whether to close all data structures related to the
+ virtual parallel machine, besides those associated with icontxt.
Scope: global.
-Type: required.
+Type: optional.
+
+Intent: in.
-Intent: out.
-
+Specified as: a logical variable, default value: true.
+
-
+Notes
+
+
+
This routine may be called even if a previous call to
+ psb_info has returned with ; indeed, it it is the only
+ routine that may be called with argument icontxt in this
+ situation.
+
+
A call to this routine with close=.true. implies a call
+ to MPI_Finalize, after which no parallel routine may be called.
+
+
If the user whishes to use multiple communication contexts in the
+ same program, or to enter and exit multiple times into the parallel
+ environment, this routine may be called to
+ selectively close the contexts with close=.false., while on
+ the last call it should be called with close=.true. to
+ shutdown in a clean way the entire parallel environment.
+
-This subroutine returns the MPI rank of the PSBLAS process
+This subroutine returns the MPI communicator associated with a PSBLAS context
Type:
Asynchronous.
@@ -84,22 +81,6 @@ Intent: in.
Specified as: an integer variable.
-
id
-
Identifier of a process in the PSBLAS virtual parallel machine.
-
-Scope: local.
-
-Type: required.
-
-Intent: in.
-
-Specified as: an integer value.
-
@@ -107,13 +88,10 @@ Specified as: an integer value.
-This function returns a wall clock timer. The resolution of the timer
-is dependent on the underlying parallel environment implementation.
+This subroutine returns the MPI rank of the PSBLAS process
Type:
Asynchronous.
-
On Exit
+
On Entry
-
Function value
-
the elapsed time in seconds.
+
icontxt
+
the communication context identifying the virtual
+ parallel machine.
-Returned as: a real(psb_dpk_) variable.
+Scope: global.
+
+Type: required.
+
+Intent: in.
+
+Specified as: an integer variable.
+
+
id
+
Identifier of a process in the PSBLAS virtual parallel machine.
+
+Scope: local.
+
+Type: required.
+
+Intent: in.
+
+Specified as: an integer value.
+
+
+
+
+
+
On Return
+
+
rank
+
The MPI rank associated with the PSBLAS process .
+
+Scope: local.
+
+Type: required.
+
+Intent: out.
+
diff --git a/docs/html/node9.html b/docs/html/node9.html
index d8cd0512..ae8052ae 100644
--- a/docs/html/node9.html
+++ b/docs/html/node9.html
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-All the general matrix informations and elements to be
-exchanged among processes are stored within a data structure of the
-type descdatapsb_desc_type.
-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.
+Data Structures and Classes
+
-The data structure itself psb_desc_type can be treated as an
-opaque object handled via the tools routines of
-Sec. 6 or the query routines detailed below;
-nevertheless we include here a description for the curious
-reader.
-
+In this chapter we illustrate the data structures used for definition of
+routines interfaces. They include data structures for sparse matrices,
+communication descriptors and preconditioners.
-First we describe the psb_indx_map type. This is a data
-structure that keeps track of a certain number of basic issues such
-as:
-
-
-
The value of the communication/MPI context;
-
-
The number of indices in the index space, i.e. global number of
- rows and columns of a sparse matrix;
-
-
The local set of indices, including:
-
-
-
The number of local indices (and local rows);
-
-
The number of halo indices (and therefore local columns);
-
-
The global indices corresponding to the local ones.
-
-
-
-
-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:
-
-
-
For a given set of local indices, find the corresponding indices
- in the global numbering;
-
-
For a given set of global indices, find the corresponding
- indices in the local numbering, if any, or return an invalid
-
-
Add a global index to the set of halo indices;
-
-
Find the process owner of each member of a set of global
- indices.
-
-
-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 6).
+All the data types and the basic subroutine interfaces related to
+descriptors and sparse matrices are defined in
+the module psb_base_mod; this will have to be included by every
+user subroutine that makes use of the library. The preconditioners are
+defined in the module psb_prec_mod
-The descriptor contents are as follows:
+Integer, real and complex data types are parametrized with a kind type
+defined in the library as follows:
-
indxmap
-
A polymorphic variable of a type that is any
- extension of the indx_map type described above.
-
-
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:
-
-
-
Process identifier;
-
-
Number of points to be received;
-
-
Indices of points to be received;
-
-
Number of points to be sent;
-
-
Indices of points to be sent;
-
-
-The list may contain an arbitrary number of groups; its end is marked
-by a -1.
-
-Specified as: an allocatable integer array of rank one.
-
-
ext_index
-
A list of element indices to be exchanged to
- implement the mapping between a base descriptor and a descriptor
- with overlap.
-
-
ovrlap_index
-
A list of the overlap elements for the
-current process, organized in groups like the previous vector:
-
-
-
Process identifier;
-
-
Number of points to be received;
-
-
Indices of points to be received;
-
-
Number of points to be sent;
-
-
Indices of points to be sent;
-
-
-The list may contain an arbitrary number of groups; its end is marked
-by a -1.
-
-Specified as: an allocatable integer array of rank one.
-
-
ovr_mst_idx
-
A list to retrieve the value of each
- overlap element from the respective master process.
-
-Specified as: an allocatable integer array of rank one.
+
psb_spk_
+
Kind parameter for short precision real and complex
+ data; corresponds to a REAL declaration and is
+ normally 4 bytes;
-
ovrlap_elem
-
For all overlap points belonging to th
-ecurrent process:
-
-
-
Overlap point index;
-
-
Number of processes sharing that overlap points;
-
-
Index of a ``master'' process:
-
-
-Specified as: an allocatable integer array of rank two.
+
psb_dpk_
+
Kind parameter for long precision real and complex
+ data; corresponds to a DOUBLE PRECISION declaration and is
+ normally 8 bytes;
-
bnd_elem
-
A list of all boundary points, i.e. points
- that have a connection with other processes.
+
psb_ipk_
+
Kind parameter for integer data;
+ with default build options this is a 4 bytes integer, but there is
+ (highly) experimental support for 8-bytes integers;
-
-The Fortran 2003 declaration for psb_desc_type structures is
-as follows:
-
-
-
-
Figure 3:
-The PSBLAS defined data type that
- contains the communication descriptor.
-A communication descriptor associated with a sparse matrix has a
-state, which can take the following values:
-
-
Build:
-
State entered after the first allocation, and before the
- first assembly; in this state it is possible to add communication
- requirements among different processes.
+
psb_mpik_
+
Kind parameter for 4-bytes integer data, as is
+ always used by MPI;
-
Assembled:
-
State entered after the assembly; computations using
- the associated sparse matrix, such as matrix-vector products, are
- only possible in this state.
+
psb_long_int_k_
+
Kind parameter for long (8 bytes) integers,
+ which are always used by the sizeof methods.
+Together with the classes attributes we also discuss their
+methods. Most methods detailed here only act on the local variable,
+i.e. their action is purely local and asynchronous unless otherwise
+stated.
+The list of methods here is not completely exhaustive; many methods,
+especially those that alter the contents of the various objects, are
+usually not needed by the end-user, and therefore are described in the
+developer's documentation.
@@ -249,40 +111,105 @@ state, which can take the following values:
Subsections
-This subroutine acts as an explicit synchronization point for the PSBLAS
-parallel virtual machine.
+This function returns a wall clock timer. The resolution of the timer
+is dependent on the underlying parallel environment implementation.
Type:
-
Synchronous.
+
Asynchronous.
-
On Entry
+
On Exit
-
icontxt
-
the communication context identifying the virtual
- parallel machine.
+
Function value
+
the elapsed time in seconds.
-Scope: global.
-
-Type: required.
-
-Intent: in.
-
-Specified as: an integer variable.
+Returned as: a real(psb_dpk_) variable.
diff --git a/docs/html/node91.html b/docs/html/node91.html
index 8b80b3ef..a5ac9abf 100644
--- a/docs/html/node91.html
+++ b/docs/html/node91.html
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-psb_abort -- Abort a computation
-
+psb_barrier -- Sinchronization point parallel environment
+
@@ -20,51 +20,53 @@ original version by: Nikos Drakos, CBLU, University of Leeds
-
+
-
-
+
-
-
- Next:psb_bcast Broadcast
- Up:Parallel environment routines
- Previous:psb_barrier Sinchronization
- Next:psb_abort Abort
+ Up:Parallel environment routines
+ Previous:psb_wtime Wall
+ Contents
-This subroutine aborts computation on the parallel virtual machine.
+This subroutine acts as an explicit synchronization point for the PSBLAS
+parallel virtual machine.
Type:
-
Asynchronous.
+
Synchronous.
On Entry
diff --git a/docs/html/node92.html b/docs/html/node92.html
index c692a699..ac22fe2f 100644
--- a/docs/html/node92.html
+++ b/docs/html/node92.html
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-psb_bcast -- Broadcast data
-
+psb_abort -- Abort a computation
+
@@ -20,52 +20,51 @@ original version by: Nikos Drakos, CBLU, University of Leeds
-
+
-
-
+
-
-
- Next:psb_sum Global
- Up:Parallel environment routines
- Previous:psb_abort Abort
- Next:psb_bcast Broadcast
+ Up:Parallel environment routines
+ Previous:psb_barrier Sinchronization
+ Contents
-This subroutine implements a broadcast operation based on the
-underlying communication library.
+This subroutine aborts computation on the parallel virtual machine.
Type:
-
Synchronous.
+
Asynchronous.
On Entry
@@ -82,81 +81,10 @@ Intent: in.
Specified as: an integer variable.
-
dat
-
On the root process, the data to be broadcast.
-
-Scope: global.
-
-Type: required.
-
-Intent: inout.
-
-Specified as: an integer, real or complex variable, which may be a
-scalar, or a rank 1 or 2 array, or a character or logical variable,
-which may be a scalar or rank 1 array. Type, kind, rank and size must agree on all processes.
-
-
root
-
Root process holding data to be broadcast.
-
-Scope: global.
-
-Type: optional.
-
-Intent: in.
-
-Specified as: an integer value
-, default 0
-
-
On Return
-
-
-
dat
-
On processes other than root, the data to be broadcast.
-
-Scope: global.
-
-Type: required.
-
-Intent: inout.
-
-Specified as: an integer, real or complex variable, which may be a
-scalar, or a rank 1 or 2 array, or a character or logical scalar. Type, kind, rank and size must agree on all processes.
-
-This subroutine implements a sum reduction operation based on the
+This subroutine implements a broadcast operation based on the
underlying communication library.
Type:
@@ -83,7 +83,7 @@ Intent: in.
Specified as: an integer variable.
dat
-
The local contribution to the global sum.
+
On the root process, the data to be broadcast.
Scope: global.
@@ -92,14 +92,11 @@ Type: required.
Intent: inout.
Specified as: an integer, real or complex variable, which may be a
-scalar, or a rank 1 or 2 array. Type, kind, rank and size must agree on all processes.
+scalar, or a rank 1 or 2 array, or a character or logical variable,
+which may be a scalar or rank 1 array. Type, kind, rank and size must agree on all processes.
root
-
Process to hold the final sum, or to make it available
- on all processes.
+
Root process holding data to be broadcast.
Scope: global.
@@ -108,12 +105,12 @@ Type: optional.
Intent: in.
Specified as: an integer value
, default -1.
-This subroutine implements a maximum valuereduction
-operation based on the underlying communication library.
+This subroutine implements a sum reduction operation based on the
+underlying communication library.
Type:
Synchronous.
@@ -83,19 +83,19 @@ Intent: in.
Specified as: an integer variable.
dat
-
The local contribution to the global maximum.
+
The local contribution to the global sum.
-Scope: local.
+Scope: global.
Type: required.
Intent: inout.
-Specified as: an integer or real variable, which may be a
+Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array. Type, kind, rank and size must agree on all processes.
-This subroutine implements a minimum value reduction
+This subroutine implements a maximum valuereduction
operation based on the underlying communication library.
Type:
@@ -83,7 +83,7 @@ Intent: in.
Specified as: an integer variable.
dat
-
The local contribution to the global minimum.
+
The local contribution to the global maximum.
Scope: local.
@@ -91,11 +91,11 @@ Type: required.
Intent: inout.
-Specified as: an integer or real variable, which may be a
+Specified as: an integer or real variable, which may be a
scalar, or a rank 1 or 2 array. Type, kind, rank and size must agree on all processes.
-This subroutine implements a maximum absolute value reduction
+This subroutine implements a minimum value reduction
operation based on the underlying communication library.
Type:
@@ -83,7 +83,7 @@ Intent: in.
Specified as: an integer variable.
dat
-
The local contribution to the global maximum.
+
The local contribution to the global minimum.
Scope: local.
@@ -91,7 +91,7 @@ Type: required.
Intent: inout.
-Specified as: an integer, real or complex variable, which may be a
+Specified as: an integer or real variable, which may be a
scalar, or a rank 1 or 2 array. Type, kind, rank and size must agree on all processes.
-This subroutine implements a minimum absolute value reduction
+This subroutine implements a maximum absolute value reduction
operation based on the underlying communication library.
Type:
@@ -83,7 +83,7 @@ Intent: in.
Specified as: an integer variable.
-call psb_snd(icontxt, dat, dst, m)
+call psb_amn(icontxt, dat, root)
-This subroutine sends a packet of data to a destination.
+This subroutine implements a minimum absolute value reduction
+operation based on the underlying communication library.
Type:
-
Synchronous: see usage notes.
+
Synchronous.
On Entry
@@ -82,65 +83,38 @@ Intent: in.
Specified as: an integer variable.
dat
-
The data to be sent.
+
The local contribution to the global minimum.
Scope: local.
Type: required.
-Intent: in.
+Intent: inout.
Specified as: an integer, real or complex variable, which may be a
-scalar, or a rank 1 or 2 array, or a character or logical scalar. Type, kind and rank must agree on sender and receiver process; if is
-not specified, size must agree as well.
+scalar, or a rank 1 or 2 array. Type, kind, rank and size must agree on all processes.
-
dst
-
Destination process.
+
root
+
Process to hold the final value, or to make it available
+ on all processes.
Scope: global.
-Type: required.
+Type: optional.
Intent: in.
Specified as: an integer value
.
+ WIDTH="165" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
+ SRC="img124.png"
+ ALT="$-1<= root <= np-1$">, default -1.
-
m
-
Number of rows.
-
-Scope: global.
-
-Type: Optional.
-
-Intent: in.
-
-Specified as: an integer value
-.
-
-When is a rank 2 array, specifies the number of rows to be sent
-independently of the leading dimension ; must have the
-same value on sending and receiving processes.
-
@@ -148,43 +122,57 @@ same value on sending and receiving processes.
On Return
+
dat
+
On destination process(es), the result of the minimum operation.
+
+Scope: global.
+
+Type: required.
+
+Intent: inout.
+
+Specified as: an integer, real or complex variable, which may be a
+scalar, or a rank 1 or 2 array.
+
+Type, kind, rank and size must agree on all processes.
+
Notes
-
This subroutine implies a synchronization, but only between the
- calling process and the destination process .
+
The dat argument is both input and output, and its
+ value may be changed even on processes different from the final
+ result destination.
+
+
The dat argument may also be a long integer scalar.
-call psb_rcv(icontxt, dat, src, m)
+call psb_snd(icontxt, dat, dst, m)
-This subroutine receives a packet of data to a destination.
+This subroutine sends a packet of data to a destination.
Type:
-
Synchronous: see usage notes.
+
Synchronous: see usage notes.
On Entry
@@ -80,8 +81,24 @@ Intent: in.
Specified as: an integer variable.
-
src
-
Source process.
+
dat
+
The data to be sent.
+
+Scope: local.
+
+Type: required.
+
+Intent: in.
+
+Specified as: an integer, real or complex variable, which may be a
+scalar, or a rank 1 or 2 array, or a character or logical scalar. Type, kind and rank must agree on sender and receiver process; if is
+not specified, size must agree as well.
+
+
dst
+
Destination process.
Scope: global.
@@ -90,12 +107,12 @@ Type: required.
Intent: in.
Specified as: an integer value
.
+ WIDTH="145" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
+ SRC="img126.png"
+ ALT="$0<= dst <= np-1$">.
m
Number of rows.
@@ -131,22 +148,6 @@ same value on sending and receiving processes.
On Return
-
dat
-
The data to be received.
-
-Scope: local.
-
-Type: required.
-
-Intent: inout.
-
-Specified as: an integer, real or complex variable, which may be a
-scalar, or a rank 1 or 2 array, or a character or logical scalar. Type, kind and rank must agree on sender and receiver process; if is
-not specified, size must agree as well.
-
@@ -154,36 +155,36 @@ not specified, size must agree as well.
This subroutine implies a synchronization, but only between the
- calling process and the source process .
+ calling process and the destination process .