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?getrf

Computes the LU factorization of a general m-by-n distributed matrix.

Syntax

void psgetrf (MKL_INT *m , MKL_INT *n , float *a , MKL_INT *ia , MKL_INT *ja , MKL_INT *desca , MKL_INT *ipiv , MKL_INT *info );

void pdgetrf (MKL_INT *m , MKL_INT *n , double *a , MKL_INT *ia , MKL_INT *ja , MKL_INT *desca , MKL_INT *ipiv , MKL_INT *info );

void pcgetrf (MKL_INT *m , MKL_INT *n , MKL_Complex8 *a , MKL_INT *ia , MKL_INT *ja , MKL_INT *desca , MKL_INT *ipiv , MKL_INT *info );

void pzgetrf (MKL_INT *m , MKL_INT *n , MKL_Complex16 *a , MKL_INT *ia , MKL_INT *ja , MKL_INT *desca , MKL_INT *ipiv , MKL_INT *info );

Include Files

  • mkl_scalapack.h

Description

The p?getrffunction forms the LU factorization of a general m-by-n distributed matrix sub(A) = A(ia:ia+m-1, ja:ja+n-1) as

A = P*L*U

where P is a permutation matrix, L is lower triangular with unit diagonal elements (lower trapezoidal if m>n) and U is upper triangular (upper trapezoidal if m < n). L and U are stored in sub(A).

The function uses partial pivoting, with row interchanges.

NOTE:

This function supports the Progress Routine feature. See mkl_progress for details.

Input Parameters

m

(global) The number of rows in the distributed matrix sub(A); m0.

n

(global) The number of columns in the distributed matrix sub(A); n0.

a

(local)

Pointer into the local memory to an array of local size lld_a*LOCc(ja+n-1).

Contains the local pieces of the distributed matrix sub(A) to be factored.

ia, ja

(global) The row and column indices in the global matrix A indicating the first row and the first column of the matrix sub(A), respectively.

desca

(global and local) array of size dlen_. The array descriptor for the distributed matrix A.

Output Parameters

a

Overwritten by local pieces of the factors L and U from the factorization A = P*L*U. The unit diagonal elements of L are not stored.

ipiv

(local) Array of size LOCr(m_a)+ mb_a.

Contains the pivoting information: local row i was interchanged with 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, 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 = i > 0, uia+i, ja+j-1 is 0. The factorization has been completed, but the factor U is exactly singular. Division by zero will occur if you use the factor U for solving a system of linear equations.

See Also