Developer Reference for Intel® oneAPI Math Kernel Library for Fortran

ID 766686
Date 10/31/2024
Public
Document Table of Contents

p?getrf

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

Syntax

call psgetrf(m, n, a, ia, ja, desca, ipiv, info)

call pdgetrf(m, n, a, ia, ja, desca, ipiv, info)

call pcgetrf(m, n, a, ia, ja, desca, ipiv, info)

call pzgetrf(m, n, a, ia, ja, desca, ipiv, info)

Include Files

Description

The p?getrfroutine 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 routine uses partial pivoting, with row interchanges.

NOTE:

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

Input Parameters

m

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

n

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

a

(local)

REAL for psgetrf

DOUBLE PRECISION for pdgetrf

COMPLEX for pcgetrf

DOUBLE COMPLEX for pzgetrf.

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) INTEGER. 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) INTEGER 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) INTEGER Array of size LOCr(m_a)+ mb_a.

Contains the pivoting information: local row i was interchanged with global row ipiv(i). This array is tied to the distributed matrix A.

info

(global) INTEGER.

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.

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