Developer Reference for Intel® oneAPI Math Kernel Library for C
p?gbtrf
Computes the LU factorization of a general n-by-n banded distributed matrix.
Syntax
voidpsgbtrf ( MKL_INT*n , MKL_INT*bwl , MKL_INT*bwu , float*a , MKL_INT*ja , MKL_INT*desca , MKL_INT*ipiv , float*af , MKL_INT*laf , float*work , MKL_INT*lwork , MKL_INT*info );
voidpdgbtrf ( MKL_INT*n , MKL_INT*bwl , MKL_INT*bwu , double*a , MKL_INT*ja , MKL_INT*desca , MKL_INT*ipiv , double*af , MKL_INT*laf , double*work , MKL_INT*lwork , MKL_INT*info );
voidpcgbtrf ( MKL_INT*n , MKL_INT*bwl , MKL_INT*bwu , MKL_Complex8*a , MKL_INT*ja , MKL_INT*desca , MKL_INT*ipiv , MKL_Complex8*af , MKL_INT*laf , MKL_Complex8*work , MKL_INT*lwork , MKL_INT*info );
voidpzgbtrf ( MKL_INT*n , MKL_INT*bwl , MKL_INT*bwu , MKL_Complex16*a , MKL_INT*ja , MKL_INT*desca , MKL_INT*ipiv , MKL_Complex16*af , MKL_INT*laf , MKL_Complex16*work , MKL_INT*lwork , MKL_INT*info );
Include Files
mkl_scalapack.h
Description
psgbtrf pdgbtrf pcgbtrf pzgbtrf The p?gbtrf routine function computes the LU factorization of a general n -by- n real/complex banded distributed matrix A (1: n , ja : ja + n -1) using partial pivoting with row interchanges.
The resulting factorization is not the same factorization as returned from the LAPACK routine function ?gbtrf (Computes the LU factorization of a general m-by-n band matrix.) . Additional permutations are performed on the matrix for the sake of parallelism.
The factorization has the form
A (1: n , ja : ja + n -1) = P * L * U * Q
where P and Q are permutation matrices, and L and U are banded lower and upper triangular matrices, respectively. The matrix Q represents reordering of columns for the sake of parallelism, while P represents reordering of rows for numerical stability using classic partial pivoting.
Product and Performance Information Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex . Notice revision #20201201
Input Parameters
n
(global) The number of rows and columns in the distributed submatrix A (1: n , ja : ja + n -1); n≥ 0 .
bwl
(global) The number of sub-diagonals within the band of A
( 0 ≤ bwl ≤ n-1 ) .
bwu
(global) The number of super-diagonals within the band of A
( 0 ≤ bwu ≤ n-1 ) .
- a
-
(local) REAL for psgbtrf DOUBLE PRECISION for pdgbtrf COMPLEX for pcgbtrf DOUBLE COMPLEX for pzgbtrf .
Pointer into the local memory to an array of local size lld_a * LOCc ( ja + n -1) where
lld_a≥ 2*bwl + 2*bwu +1 . Contains the local pieces of the n -by- n distributed banded matrix A (1: n , ja : ja + n -1) to be factored.
ja
(global) The index in the global matrix A indicating the start of the matrix to be operated on (which may be either all of A or a submatrix of A ).
desca
(global and local) array of size dlen_ . The array descriptor for the distributed matrix A .
If dtype_a = 501 , then dlen_≥ 7 ; else if dtype_a = 1 , then dlen_≥ 9 .
laf
(local) The size of the array af .
Must be laf≥ (nb_a+bwu)*(bwl+bwu)+6*(bwl+bwu)*(bwl+2*bwu) .
If laf is not large enough, an error code will be returned and the minimum acceptable size will be returned in af [0] .
- work
-
(local) Same type as a . Workspace array of size lwork .
lwork
(local or global) The size of the work array (lwork≥ 1) . If lwork is too small, the minimal acceptable size will be returned in work [0] and an error code is returned.
Output Parameters
- a
-
On exit, this array contains details of the factorization. Note that additional permutations are performed on the matrix, so that the factors returned are different from those returned by LAPACK .
ipiv
(local) array.
The size of ipiv must be ≥nb_a . Contains pivot indices for local factorizations. Note that you should not alter the contents of this array between factorization and solve.
- af
-
(local) REAL for psgbtrf DOUBLE PRECISION for pdgbtrf COMPLEX for pcgbtrf DOUBLE COMPLEX for pzgbtrf . Array of size laf .
Auxiliary fill-in space. The fill-in space is created in a call to the factorization function p?gbtrf and is stored in af .
Note that if a linear system is to be solved using p?gbtrs after the factorization function , af must not be altered after the factorization.
work(1)[0]
On exit, work(1)[0] contains the minimum value of lwork required.
info
(global)
If info=0 , the execution is successful. 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 .
info> 0 : If info = k ≤ NPROCS , the submatrix stored on processor info and factored locally was not nonsingular, and the factorization was not completed. If info = k > NPROCS , the submatrix stored on processor info-NPROCS representing interactions with other processors was not nonsingular, and the factorization was not completed.