Visible to Intel only — GUID: GUID-B62C5B0C-61A4-4EF7-B4EF-E9CD8CBF75F0
Visible to Intel only — GUID: GUID-B62C5B0C-61A4-4EF7-B4EF-E9CD8CBF75F0
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?gesvfunction 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.