PLASMA  2.8.0
PLASMA - Parallel Linear Algebra for Scalable Multi-core Architectures
int CORE_dgetrf_rectil ( CORE_dgetrf_data_t data,
const PLASMA_desc  A,
int *  IPIV,
int *  info 
)

CORE_dgetrf_rectil 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 tile layout.

WARNINGS:

  • The function CORE_dgetrf_rectil_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_rectil_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,out]APLASMA descriptor of the matrix A to be factorized. On 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.
[out]IPIVThe pivot indices; for 0 <= i < min(M,N) stored in Fortran mode (starting at 1), row i of the matrix was interchanged with row IPIV(i). On exit, each value IPIV[i] for 0 <= i < min(M,N) is increased by A.i, which means A.i < IPIV[i] <= A.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.