PLASMA  2.8.0
PLASMA - Parallel Linear Algebra for Scalable Multi-core Architectures
int CORE_dgetrf_reclap ( CORE_dgetrf_data_t data,
int  M,
int  N,
double *  A,
int  LDA,
int *  IPIV,
int *  info 
)

CORE_dgetrf_reclap computes a LU factorization of a general M-by-N matrix A stored in CCRB layout using partial pivoting with row interchanges.

The factorization has the form

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).

This is the recursive version of the algorithm applied on column major layout.

WARNINGS:

  • The function CORE_dgetrf_reclap_init has to be called prior to any call to this function.
  • You cannot call this kernel on different matrices at the same time.
  • The matrix A cannot be more than one tile wide.
  • The number of threads calling this function has to be excatly the number defined by info[2] with each one of them a different index between 0 included and info[2] excluded.
Parameters
[in]dataCommon data structure to all threads initialized by CORE_dgetrf_reclap_init() that contains information for thread synchronization and maximum reductions. All threads working on a given matrix A must provide the same data structure.
[in]MThe number of rows of the matrix A. M >= 0.
[in]NThe number of columns of the matrix A. N >= 0.
[in,out]AOn entry, the M-by-N matrix to be factorized. On exit, the factors L and U from the factorization A = P*L*U; the unit diagonal elements of L are not stored.
[in]LDAThe leading dimension of the array A. LDA >= max(1,M).
[out]IPIVThe pivot indices; for 1 <= i <= min(M,N), row i of the matrix was interchanged with row IPIV(i). 1 <= IPIV[i] <= M.
[in,out]infoArray of 3 integers
  • info[0], see returned value
  • info[1], is the thread index 0 <= info[0] < info[2]
  • info[2], on entry is the number of threads trying to participate to the factorization, on exit is the real number of threads used to perform the factorization. Info[2] threads, and exactly info[2], have to call this function to avoid dead lock.
Returns
Return values
PLASMA_SUCCESSsuccessful exit
-k,thek-th argument had an illegal value
kif U(k,k) is exactly zero. The factorization has been completed, but the factor U is exactly singular, and division by zero will occur if it is used to solve a system of equations.