This subroutine is an interface to the computational kernel for dense matrix sum:
call psb_geaxpby(alpha, x, beta, y, desc_a, info)
x, y, α, β | Subroutine |
Short Precision Real | psb_geaxpby |
Long Precision Real | psb_geaxpby |
Short Precision Complex | psb_geaxpby |
Long Precision Complex | psb_geaxpby |
Type:
Synchronous.
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 x.
Scope: local
Type: required
Intent: in.
Specified as: a rank one or two array or an object of type
psb_T_vect_type containing numbers of type specified in Table 1. The
rank of x must be the same of y.
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 y.
Scope: local
Type: required
Intent: inout.
Specified as: a rank one or two array or an object of type
psb_T_vect_type containing numbers of the type indicated in Table 1.
The rank of y must be the same of x.
desc_a
contains data structures for communications.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_desc_type.
On Return
y
the local portion of result submatrix y.
Scope: local
Type: required
Intent: inout.
Specified as: a rank one or two array or an object of type
psb_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 x and y.
If x and y are real vectors it computes dot-product as:
Else if x and y are complex vectors then it computes dot-product as:
psb_gedot(x, y, desc_a, info [,global])
dot, x, y | Function |
Short Precision Real | psb_gedot |
Long Precision Real | psb_gedot |
Short Precision Complex | psb_gedot |
Long Precision Complex | psb_gedot |
Type:
Synchronous.
On Entry
x
the local portion of global dense matrix x.
Scope: local
Type: required
Intent: in.
Specified as: a rank one or two array or an object of type
psb_T_vect_type containing numbers of type specified in Table 2. The
rank of x must be the same of y.
y
the local portion of global dense matrix y.
Scope: local
Type: required
Intent: in.
Specified as: a rank one or two array or an object of type
psb_T_vect_type containing numbers of type specified in Table 2. The
rank of y must be the same of x.
desc_a
contains data structures for communications.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_desc_type.
global
Specifies whether the computation should include the global reduction
across all processes.
Scope: global
Type: optional.
Intent: in.
Specified as: a logical scalar. Default: global=.true.
On Return
Function value
is the dot product of vectors x and y.
Scope: global unless the optional variable global=.false.
has been
specified
Specified as: a number of the data type indicated in Table 2.
info
Error code.
Scope: local
Type: required
Intent: out.
An integer value; 0 means no error has been detected.
Notes
The computation of a global result requires a global communication, which entails a significant overhead. It may be necessary and/or advisable to compute multiple dot products at the same time; in this case, it is possible to improve the runtime efficiency by using the following scheme:
vres(1) = psb_gedot(x1,y1,desc_a,info,global=.false.) vres(2) = psb_gedot(x2,y2,desc_a,info,global=.false.) vres(3) = psb_gedot(x3,y3,desc_a,info,global=.false.) call psb_sum(ctxt,vres(1:3))
In this way the global communication, which for small sizes is a latency-bound operation, is invoked only once.
This subroutine computes a series of dot products among the columns of two dense matrices x and y:
If the matrices are complex, then the usual convention applies, i.e. the conjugate transpose of x is used. If x and y are of rank one, then res is a scalar, else it is a rank one array.
call psb_gedots(res, x, y, desc_a, info)
res, x, y | Subroutine |
Short Precision Real | psb_gedots |
Long Precision Real | psb_gedots |
Short Precision Complex | psb_gedots |
Long Precision Complex | psb_gedots |
Type:
Synchronous.
On Entry
x
the local portion of global dense matrix x.
Scope: local
Type: required
Intent: in.
Specified as: a rank one or two array or an object of type
psb_T_vect_type containing numbers of type specified in Table 3. The
rank of x must be the same of y.
y
the local portion of global dense matrix y.
Scope: local
Type: required
Intent: in.
Specified as: a rank one or two array or an object of type
psb_T_vect_type containing numbers of type specified in Table 3. The
rank of y must be the same of x.
desc_a
contains data structures for communications.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_desc_type.
On Return
res
is the dot product of vectors x and y.
Scope: global
Intent: out.
Specified as: a number or a rank-one array of the data type indicated in
Table 2.
info
Error code.
Scope: local
Type: required
Intent: out.
An integer value; 0 means no error has been detected.
This function computes the infinity-norm of a vector x.
If x is a real vector it computes infinity norm as:
else if x is a complex vector then it computes the infinity-norm as:
psb_geamax(x, desc_a, info [,global])
psb_normi(x, desc_a, info [,global])
amax | x | Function |
Short Precision Real | Short Precision Real | psb_geamax |
Long Precision Real | Long Precision Real | psb_geamax |
Short Precision Real | Short Precision Complex | psb_geamax |
Long Precision Real | Long Precision Complex | psb_geamax |
Type:
Synchronous.
On Entry
x
the local portion of global dense matrix x.
Scope: local
Type: required
Intent: in.
Specified as: a rank one or two array or an object of type
psb_T_vect_type containing numbers of type specified in Table 4.
desc_a
contains data structures for communications.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_desc_type.
global
Specifies whether the computation should include the global reduction
across all processes.
Scope: global
Type: optional.
Intent: in.
Specified as: a logical scalar. Default: global=.true.
On Return
Function value
is the infinity norm of vector x.
Scope: global unless the optional variable global=.false.
has been
specified
Specified as: a long precision real number.
info
Error code.
Scope: local
Type: required
Intent: out.
An integer value; 0 means no error has been detected.
Notes
The computation of a global result requires a global communication, which entails a significant overhead. It may be necessary and/or advisable to compute multiple norms at the same time; in this case, it is possible to improve the runtime efficiency by using the following scheme:
vres(1) = psb_geamax(x1,desc_a,info,global=.false.) vres(2) = psb_geamax(x2,desc_a,info,global=.false.) vres(3) = psb_geamax(x3,desc_a,info,global=.false.) call psb_amx(ctxt,vres(1:3))
In this way the global communication, which for small sizes is a latency-bound operation, is invoked only once.
This subroutine computes a series of infinity norms on the columns of a dense matrix x:
call psb_geamaxs(res, x, desc_a, info)
res | x | Subroutine |
Short Precision Real | Short Precision Real | psb_geamaxs |
Long Precision Real | Long Precision Real | psb_geamaxs |
Short Precision Real | Short Precision Complex | psb_geamaxs |
Long Precision Real | Long Precision Complex | psb_geamaxs |
Type:
Synchronous.
On Entry
x
the local portion of global dense matrix x.
Scope: local
Type: required
Intent: in.
Specified as: a rank one or two array or an object of type
psb_T_vect_type containing numbers of type specified in Table 5.
desc_a
contains data structures for communications.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_desc_type.
On Return
res
is the infinity norm of the columns of x.
Scope: global
Intent: out.
Specified as: a number or a rank-one array of long precision real numbers.
info
Error code.
Scope: local
Type: required
Intent: out.
An integer value; 0 means no error has been detected.
This function computes the 1-norm of a vector x.
If x is a real vector it computes 1-norm as:
else if x is a complex vector then it computes 1-norm as:
psb_geasum(x, desc_a, info [,global])
psb_norm1(x, desc_a, info [,global])
asum | x | Function |
Short Precision Real | Short Precision Real | psb_geasum |
Long Precision Real | Long Precision Real | psb_geasum |
Short Precision Real | Short Precision Complex | psb_geasum |
Long Precision Real | Long Precision Complex | psb_geasum |
Type:
Synchronous.
On Entry
x
the local portion of global dense matrix x.
Scope: local
Type: required
Intent: in.
Specified as: a rank one or two array or an object of type
psb_T_vect_type containing numbers of type specified in Table 6.
desc_a
contains data structures for communications.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_desc_type.
global
Specifies whether the computation should include the global reduction
across all processes.
Scope: global
Type: optional.
Intent: in.
Specified as: a logical scalar. Default: global=.true.
On Return
Function value
is the 1-norm of vector x.
Scope: global unless the optional variable global=.false.
has been
specified
Specified as: a long precision real number.
info
Error code.
Scope: local
Type: required
Intent: out.
An integer value; 0 means no error has been detected.
Notes
The computation of a global result requires a global communication, which entails a significant overhead. It may be necessary and/or advisable to compute multiple norms at the same time; in this case, it is possible to improve the runtime efficiency by using the following scheme:
vres(1) = psb_geasum(x1,desc_a,info,global=.false.) vres(2) = psb_geasum(x2,desc_a,info,global=.false.) vres(3) = psb_geasum(x3,desc_a,info,global=.false.) call psb_sum(ctxt,vres(1:3))
In this way the global communication, which for small sizes is a latency-bound operation, is invoked only once.
This subroutine computes a series of 1-norms on the columns of a dense matrix x:
This function computes the 1-norm of a vector x.
If x is a real vector it computes 1-norm as:
else if x is a complex vector then it computes 1-norm as:
call psb_geasums(res, x, desc_a, info)
res | x | Subroutine |
Short Precision Real | Short Precision Real | psb_geasums |
Long Precision Real | Long Precision Real | psb_geasums |
Short Precision Real | Short Precision Complex | psb_geasums |
Long Precision Real | Long Precision Complex | psb_geasums |
Type:
Synchronous.
On Entry
x
the local portion of global dense matrix x.
Scope: local
Type: required
Intent: in.
Specified as: a rank one or two array or an object of type
psb_T_vect_type containing numbers of type specified in Table 7.
desc_a
contains data structures for communications.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_desc_type.
On Return
res
contains the 1-norm of (the columns of) x.
Scope: global
Intent: out.
Short as: a long precision real number. Specified as: a long precision real
number.
info
Error code.
Scope: local
Type: required
Intent: out.
An integer value; 0 means no error has been detected.
This function computes the 2-norm of a vector x.
If x is a real vector it computes 2-norm as:
else if x is a complex vector then it computes 2-norm as:
nrm2 | x | Function |
Short Precision Real | Short Precision Real | psb_genrm2 |
Long Precision Real | Long Precision Real | psb_genrm2 |
Short Precision Real | Short Precision Complex | psb_genrm2 |
Long Precision Real | Long Precision Complex | psb_genrm2 |
psb_genrm2(x, desc_a, info [,global])
psb_norm2(x, desc_a, info [,global])
Type:
Synchronous.
On Entry
x
the local portion of global dense matrix x.
Scope: local
Type: required
Intent: in.
Specified as: a rank one or two array or an object of type
psb_T_vect_type containing numbers of type specified in Table 8.
desc_a
contains data structures for communications.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_desc_type.
global
Specifies whether the computation should include the global reduction
across all processes.
Scope: global
Type: optional.
Intent: in.
Specified as: a logical scalar. Default: global=.true.
On Return
Function Value
is the 2-norm of vector x.
Scope: global unless the optional variable global=.false.
has been
specified
Type: required
Specified as: a long precision real number.
info
Error code.
Scope: local
Type: required
Intent: out.
An integer value; 0 means no error has been detected.
Notes
The computation of a global result requires a global communication, which entails a significant overhead. It may be necessary and/or advisable to compute multiple norms at the same time; in this case, it is possible to improve the runtime efficiency by using the following scheme:
vres(1) = psb_genrm2(x1,desc_a,info,global=.false.) vres(2) = psb_genrm2(x2,desc_a,info,global=.false.) vres(3) = psb_genrm2(x3,desc_a,info,global=.false.) call psb_nrm2(ctxt,vres(1:3))
In this way the global communication, which for small sizes is a latency-bound operation, is invoked only once.
This subroutine computes a series of 2-norms on the columns of a dense matrix x:
call psb_genrm2s(res, x, desc_a, info)
res | x | Subroutine |
Short Precision Real | Short Precision Real | psb_genrm2s |
Long Precision Real | Long Precision Real | psb_genrm2s |
Short Precision Real | Short Precision Complex | psb_genrm2s |
Long Precision Real | Long Precision Complex | psb_genrm2s |
Type:
Synchronous.
On Entry
x
the local portion of global dense matrix x.
Scope: local
Type: required
Intent: in.
Specified as: a rank one or two array or an object of type
psb_T_vect_type containing numbers of type specified in Table 9.
desc_a
contains data structures for communications.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_desc_type.
On Return
res
contains the 1-norm of (the columns of) x.
Scope: global
Intent: out.
Specified as: a long precision real number.
info
Error code.
Scope: local
Type: required
Intent: out.
An integer value; 0 means no error has been detected.
This function computes the 1-norm of a matrix A:
where:
A
represents the global matrix A
A | Function |
Short Precision Real | psb_spnrm1 |
Long Precision Real | psb_spnrm1 |
Short Precision Complex | psb_spnrm1 |
Long Precision Complex | psb_spnrm1 |
psb_spnrm1(A, desc_a, info) psb_norm1(A, desc_a, info)
Type:
Synchronous.
On Entry
a
the local portion of the global sparse matrix A.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_Tspmat_type.
desc_a
contains data structures for communications.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_desc_type.
On Return
Function value
is the 1-norm of sparse submatrix A.
Scope: global
Specified as: a long precision real number.
info
Error code.
Scope: local
Type: required
Intent: out.
An integer value; 0 means no error has been detected.
This function computes the infinity-norm of a matrix A:
where:
A
represents the global matrix A
A | Function |
Short Precision Real | psb_spnrmi |
Long Precision Real | psb_spnrmi |
Short Precision Complex | psb_spnrmi |
Long Precision Complex | psb_spnrmi |
psb_spnrmi(A, desc_a, info) psb_normi(A, desc_a, info)
Type:
Synchronous.
On Entry
a
the local portion of the global sparse matrix A.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_Tspmat_type.
desc_a
contains data structures for communications.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_desc_type.
On Return
Function value
is the infinity-norm of sparse submatrix A.
Scope: global
Specified as: a long precision real number.
info
Error code.
Scope: local
Type: required
Intent: out.
An integer value; 0 means no error has been detected.
This subroutine computes the Sparse Matrix by Dense Matrix Product:
(1) |
(2) |
(3) |
where:
x
is the global dense matrix x:,:
y
is the global dense matrix y:,:
A
is the global sparse matrix A
A, x, y, α, β | Subroutine |
Short Precision Real | psb_spmm |
Long Precision Real | psb_spmm |
Short Precision Complex | psb_spmm |
Long Precision Complex | psb_spmm |
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:
Synchronous.
On Entry
alpha
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 A.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_Tspmat_type.
x
the local portion of global dense matrix x.
Scope: local
Type: required
Intent: in.
Specified as: a rank one or two array or an object of type
psb_T_vect_type containing numbers of type specified in Table 12. The
rank of x must be the same of y.
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 y.
Scope: local
Type: required
Intent: inout.
Specified as: a rank one or two array or an object of type
psb_T_vect_type containing numbers of type specified in Table 12. The
rank of y must be the same of x.
desc_a
contains data structures for communications.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_desc_type.
trans
indicates what kind of operation to perform.
trans = N
the operation is specified by equation 1
trans = T
the operation is specified by equation 2
trans = C
the operation is specified by equation 3
Scope: global
Type: optional
Intent: in.
Default: trans = N
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 x and y with the TARGET
attribute.
On Return
y
the local portion of result matrix y.
Scope: local
Type: required
Intent: inout.
Specified as: an array of rank one or two containing numbers of type specified
in Table 12.
info
Error code.
Scope: local
Type: required
Intent: out.
An integer value; 0 means no error has been detected.
This subroutine computes the Triangular System Solve:
where:
x
is the global dense matrix x:,:
y
is the global dense matrix y:,:
T
is the global sparse block triangular submatrix T
D
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)
T, x, y, D, α, β | 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 T.
Scope: local
Type: required
Intent: in.
Specified as: an object type specified in § 3.
x
the local portion of global dense matrix x.
Scope: local
Type: required
Intent: in.
Specified as: a rank one or two array or an object of type
psb_T_vect_type containing numbers of type specified in Table 13. The
rank of x must be the same of y.
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 y.
Scope: local
Type: required
Intent: inout.
Specified as: a rank one or two array or an object of type
psb_T_vect_type containing numbers of type specified in Table 13. The
rank of y must be the same of x.
desc_a
contains data structures for communications.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_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: trans = N
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: unitd = U
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: diag(1) = 1(noscaling)
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 x with the TARGET
attribute.
On Return
y
the local portion of global dense matrix y.
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.
This function computes the entrywise product between two vectors x and y
psb_gemlt(x, y, desc_a, info)
dot, x, y | Function |
Short Precision Real | psb_gemlt |
Long Precision Real | psb_gemlt |
Short Precision Complex | psb_gemlt |
Long Precision Complex | psb_gemlt |
Type:
Synchronous.
On Entry
x
the local portion of global dense vector x.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_T_vect_type containing numbers of
type specified in Table 2.
y
the local portion of global dense vector y.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_T_vect_type containing numbers of
type specified in Table 2.
desc_a
contains data structures for communications.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_desc_type.
On Return
y
the local portion of result submatrix y.
Scope: local
Type: required
Intent: inout.
Specified as: an object of type psb_T_vect_type containing numbers of
the type indicated in Table 14.
info
Error code.
Scope: local
Type: required
Intent: out.
An integer value; 0 means no error has been detected.
This function computes the entrywise division between two vectors x and y
psb_gediv(x, y, desc_a, info, [flag)
∕, x, y | Function |
Short Precision Real | psb_gediv |
Long Precision Real | psb_gediv |
Short Precision Complex | psb_gediv |
Long Precision Complex | psb_gediv |
Type:
Synchronous.
On Entry
x
the local portion of global dense vector x.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_T_vect_type containing numbers of
type specified in Table 2.
y
the local portion of global dense vector y.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_T_vect_type containing numbers of
type specified in Table 2.
desc_a
contains data structures for communications.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_desc_type.
flag
check if any of the y(i) = 0, and in case returns error halting the
computation.
Scope: local
Type: optional Intent: in.
Specified as: the logical value flag=.true.
On Return
x
the local portion of result submatrix x.
Scope: local
Type: required
Intent: inout.
Specified as: an object of type psb_T_vect_type containing numbers of
the type indicated in Table 14.
info
Error code.
Scope: local
Type: required
Intent: out.
An integer value; 0 means no error has been detected.
This function computes the entrywise inverse of a vector x and puts it into y
psb_geinv(x, y, desc_a, info, [flag)
∕, x, y | Function |
Short Precision Real | psb_geinv |
Long Precision Real | psb_geinv |
Short Precision Complex | psb_geinv |
Long Precision Complex | psb_geinv |
Type:
Synchronous.
On Entry
x
the local portion of global dense vector x.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_T_vect_type containing numbers of
type specified in Table 2.
desc_a
contains data structures for communications.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_desc_type.
flag
check if any of the x(i) = 0, and in case returns error halting the
computation.
Scope: local
Type: optional Intent: in.
Specified as: the logical value flag=.true.
On Return
y
the local portion of result submatrix x.
Scope: local
Type: required
Intent: out.
Specified as: an object of type psb_T_vect_type containing numbers of
the type indicated in Table 16.
info
Error code.
Scope: local
Type: required
Intent: out.
An integer value; 0 means no error has been detected.