Developer Reference for Intel® oneAPI Math Kernel Library for C

ID 766684
Date 11/07/2023
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

p?pbtrf

Computes the Cholesky factorization of a symmetric (Hermitian) positive-definite banded distributed matrix.

Syntax

void pspbtrf (char *uplo , MKL_INT *n , MKL_INT *bw , float *a , MKL_INT *ja , MKL_INT *desca , float *af , MKL_INT *laf , float *work , MKL_INT *lwork , MKL_INT *info );

void pdpbtrf (char *uplo , MKL_INT *n , MKL_INT *bw , double *a , MKL_INT *ja , MKL_INT *desca , double *af , MKL_INT *laf , double *work , MKL_INT *lwork , MKL_INT *info );

void pcpbtrf (char *uplo , MKL_INT *n , MKL_INT *bw , MKL_Complex8 *a , MKL_INT *ja , MKL_INT *desca , MKL_Complex8 *af , MKL_INT *laf , MKL_Complex8 *work , MKL_INT *lwork , MKL_INT *info );

void pzpbtrf (char *uplo , MKL_INT *n , MKL_INT *bw , MKL_Complex16 *a , MKL_INT *ja , MKL_INT *desca , MKL_Complex16 *af , MKL_INT *laf , MKL_Complex16 *work , MKL_INT *lwork , MKL_INT *info );

Include Files

  • mkl_scalapack.h

Description

The p?pbtrffunction computes the Cholesky factorization of an n-by-n real symmetric or complex Hermitian positive-definite banded distributed matrix A(1:n, ja:ja+n-1).

The resulting factorization is not the same factorization as returned from LAPACK. 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*UH*U*PT, if uplo='U', or

A(1:n, ja:ja+n-1) = P*L*LH*PT, if uplo='L',

where P is a permutation matrix and U and L are banded upper and lower triangular matrices, respectively.

Product and Performance Information

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

Notice revision #20201201

Input Parameters

uplo

(global) Must be 'U' or 'L'.

If uplo = 'U', upper triangle of A(1:n, ja:ja+n-1) is stored;

If uplo = 'L', lower triangle of A(1:n, ja:ja+n-1) is stored.

n

(global) The order of the distributed submatrix A(1:n, ja:ja+n-1).

(n0).

bw

(global)

The number of superdiagonals of the distributed matrix if uplo = 'U', or the number of subdiagonals if uplo = 'L' (bw0).

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 upper or lower triangle of the symmetric/Hermitian band distributed 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+2*bw)*bw.

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) Workspace array of size lwork.

lwork

(local or global) The size of the work array, must be lworkbw2.

Output Parameters

a

On exit, if info=0, contains the permuted triangular factor U or L from the Cholesky factorization of the band matrix A(1:n, ja:ja+n-1), as specified by uplo.

af

(local)

Array of size laf. Auxiliary fill-in space. The fill-in space is created in a call to the factorization function p?pbtrf and stored in af. Note that if a linear system is to be solved using p?pbtrs after the factorization function,af must not be altered.

work[0]

On exit, work[0] contains the minimum value of lwork required for optimum performance.

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 = kNPROCS, the submatrix stored on processor info and factored locally was not positive definite, 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.

See Also