Developer Reference

  • 2021.1
  • 12/04/2020
  • Public Content
Contents

p?posv

Solves a symmetric positive definite system of linear equations.

Syntax

void
psposv
(
char
*uplo
,
MKL_INT
*n
,
MKL_INT
*nrhs
,
float
*a
,
MKL_INT
*ia
,
MKL_INT
*ja
,
MKL_INT
*desca
,
float
*b
,
MKL_INT
*ib
,
MKL_INT
*jb
,
MKL_INT
*descb
,
MKL_INT
*info
);
void
pdposv
(
char
*uplo
,
MKL_INT
*n
,
MKL_INT
*nrhs
,
double
*a
,
MKL_INT
*ia
,
MKL_INT
*ja
,
MKL_INT
*desca
,
double
*b
,
MKL_INT
*ib
,
MKL_INT
*jb
,
MKL_INT
*descb
,
MKL_INT
*info
);
void
pcposv
(
char
*uplo
,
MKL_INT
*n
,
MKL_INT
*nrhs
,
MKL_Complex8
*a
,
MKL_INT
*ia
,
MKL_INT
*ja
,
MKL_INT
*desca
,
MKL_Complex8
*b
,
MKL_INT
*ib
,
MKL_INT
*jb
,
MKL_INT
*descb
,
MKL_INT
*info
);
void
pzposv
(
char
*uplo
,
MKL_INT
*n
,
MKL_INT
*nrhs
,
MKL_Complex16
*a
,
MKL_INT
*ia
,
MKL_INT
*ja
,
MKL_INT
*desca
,
MKL_Complex16
*b
,
MKL_INT
*ib
,
MKL_INT
*jb
,
MKL_INT
*descb
,
MKL_INT
*info
);
Include Files
  • mkl_scalapack.h
Description
The
p?posv
function
computes the solution to a real/complex system of linear equations
sub(
A
)*
X
= sub(
B
)
,
where sub(
A
) denotes
A
(
ia
:
ia
+
n
-1,
ja
:
ja
+
n
-1)
and is an
n-
by-
n
symmetric/Hermitian distributed positive definite matrix and
X
and sub(
B
) denoting
B
(
ib
:
ib
+
n
-1,
jb
:
jb
+
nrhs
-1)
are
n
-by-
nrhs
distributed matrices. The Cholesky decomposition is used to factor sub(
A
) as
sub(
A
) =
U
T
*
U
, if
uplo
= 'U'
, or
sub(
A
) =
L
*
L
T
, if
uplo
= 'L'
,
where
U
is an upper triangular matrix and
L
is a lower triangular matrix. The factored form of sub(
A
) is then used to solve the system of equations.
Input Parameters
uplo
(global) Must be
'U'
or
'L'
.
Indicates whether the upper or lower triangular part of sub(
A
) is stored.
n
(global) The order of the distributed matrix sub(
A
)
(
n
0)
.
nrhs
The number of right-hand sides; the number of columns of the distributed matrix sub(
B
)
(
nrhs
0)
.
a
(local)
Pointer into the local memory to an array of size
lld_a
*
LOCc
(
ja
+
n
-1)
. On entry, this array contains the local pieces of the
n
-by-
n
symmetric distributed matrix sub(
A
) to be factored.
If
uplo
= '
U'
, the leading
n
-by-
n
upper triangular part of sub(
A
) contains the upper triangular part of the matrix, and its strictly lower triangular part is not referenced.
If
uplo
= '
L'
, the leading
n
-by-
n
lower triangular part of sub(
A
) contains the lower triangular part of the distributed matrix, and its strictly upper triangular part is not referenced.
ia
,
ja
(global) The row and column indices in the global matrix
A
indicating the first row and the first column of the submatrix
A
, respectively.
desca
(global and local) array of size
dlen_
. The array descriptor for the distributed matrix
A
.
b
(local)
Pointer into the local memory to an array of size
lld_b
*
LOCc
(
jb
+
nrhs
-1)
. On entry, the local pieces of the right hand sides distributed matrix sub(
B
).
ib
,
jb
(global) The row and column indices in the global matrix
B
indicating the first row and the first column of the submatrix
B
, respectively.
descb
(global and local) array of size
dlen_
. The array descriptor for the distributed matrix
B
.
Output Parameters
a
On exit, if
info
= 0
, this array contains the local pieces of the factor
U
or
L
from the Cholesky factorization
sub(
A
) =
U
H
*
U
, or
L*L
H
.
b
On exit, if
info
= 0
, sub(
B
) is overwritten by the solution distributed matrix
X
.
info
(global)
If
info
=0
, the execution is successful.
If
info
< 0
: If the
i
-th argument is an array and the
j
-th entry
, indexed
j
-1,
had an illegal value, then
info
= -(
i
*100+
j
)
, if the
i
-th argument is a scalar and had an illegal value, then
info
= -
i
.
If
info
> 0
: If
info
=
k
, the leading minor of order
k
,
A
(
ia
:
ia
+
k
-1,
ja
:
ja
+
k
-1)
is not positive definite, and the factorization could not be completed, and the solution has not been computed.

Product and Performance Information

1

Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex.