Developer Reference

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

p?gesv

Computes the solution to the system of linear equations with a square distributed matrix and multiple right-hand sides.

Syntax

void
psgesv
(
MKL_INT
*n
,
MKL_INT
*nrhs
,
float
*a
,
MKL_INT
*ia
,
MKL_INT
*ja
,
MKL_INT
*desca
,
MKL_INT
*ipiv
,
float
*b
,
MKL_INT
*ib
,
MKL_INT
*jb
,
MKL_INT
*descb
,
MKL_INT
*info
);
void
pdgesv
(
MKL_INT
*n
,
MKL_INT
*nrhs
,
double
*a
,
MKL_INT
*ia
,
MKL_INT
*ja
,
MKL_INT
*desca
,
MKL_INT
*ipiv
,
double
*b
,
MKL_INT
*ib
,
MKL_INT
*jb
,
MKL_INT
*descb
,
MKL_INT
*info
);
void
pcgesv
(
MKL_INT
*n
,
MKL_INT
*nrhs
,
MKL_Complex8
*a
,
MKL_INT
*ia
,
MKL_INT
*ja
,
MKL_INT
*desca
,
MKL_INT
*ipiv
,
MKL_Complex8
*b
,
MKL_INT
*ib
,
MKL_INT
*jb
,
MKL_INT
*descb
,
MKL_INT
*info
);
void
pzgesv
(
MKL_INT
*n
,
MKL_INT
*nrhs
,
MKL_Complex16
*a
,
MKL_INT
*ia
,
MKL_INT
*ja
,
MKL_INT
*desca
,
MKL_INT
*ipiv
,
MKL_Complex16
*b
,
MKL_INT
*ib
,
MKL_INT
*jb
,
MKL_INT
*descb
,
MKL_INT
*info
);
Include Files
  • mkl_scalapack.h
Description
The
p?gesv
function
computes the solution to a real or complex system of linear equations
sub(
A
)*
X
= sub(
B
)
, where
sub(
A
) =
A
(
ia:ia+n-1
,
ja:ja+n-1
)
is an
n
-by-
n
distributed matrix and
X
and
sub(
B
) =
B
(
ib:ib+n-1
,
jb:jb+nrhs-1
)
are
n
-by-
nrhs
distributed matrices.
The
LU
decomposition with partial pivoting and row interchanges is used to factor sub(
A
) as
sub(
A
) =
P
*
L
*
U
, where
P
is a permutation matrix,
L
is unit lower triangular, and
U
is upper triangular.
L
and
U
are stored in sub(
A
). The factored form of sub(
A
) is then used to solve the system of equations
sub(
A
)*
X
= sub(
B
)
.
Input Parameters
n
(global) The number of rows and columns to be operated on, that is, the order of the distributed submatrix
sub(
A
) (
n
0)
.
nrhs
(global) The number of right hand sides, that is, the number of columns of the distributed submatrices
B
and
X
(
nrhs
0)
.
a
,
b
(local)
Pointers into the local memory to arrays of local size
a
:
lld_a
*
LOCc
(
ja
+
n
-1)
and
b
:
lld_b
*
LOCc
(
jb+nrhs-1
)
, respectively.
On entry, the array
a
contains the local pieces of the
n
-by-
n
distributed matrix sub(
A
) to be factored.
On entry, the array
b
contains the right hand side distributed matrix sub(
B
).
ia
,
ja
(global) The row and column indices in the global matrix
A
indicating the first row and the first column of sub(
A
), respectively.
desca
(global and local) array of size
dlen_
. The array descriptor for the distributed matrix
A
.
ib
,
jb
(global) The row and column indices in the global matrix
B
indicating the first row and the first column of sub(
B
), respectively.
descb
(global and local) array of size
dlen_
. The array descriptor for the distributed matrix
B
.
Output Parameters
a
Overwritten by the factors
L
and
U
from the factorization sub(
A
) =
P
*
L
*
U
; the unit diagonal elements of
L
are not stored .
b
Overwritten by the solution distributed matrix
X
.
ipiv
(local) Array of size
LOCr
(
m_a
)+
mb_a
. This array contains the pivoting information. The (local) row
i
of the matrix was interchanged with the (global) row
ipiv
[
i
- 1]
.
This array is tied to the distributed matrix
A
.
info
(global) If
info
=0
, the execution is successful.
info
< 0:
If the
i-
th argument is an array and the
j-
th entry 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
.
info
>
0
:
If
info
=
k
,
U
(
ia+k-1
,
ja+k-1
) is exactly zero. The factorization has been completed, but the factor
U
is exactly singular, so the solution could not be computed.

Product and Performance Information

1

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