PLASMA 2.8.0 PLASMA - Parallel Linear Algebra for Scalable Multi-core Architectures

- Main Page
- Modules
- Data Types List

int CORE_cgetrf_rectil | ( | CORE_cgetrf_data_t * | data,
|  | const PLASMA_desc | A,
|  | int * | IPIV,
|  | int * | info
| ) |  |

CORE_cgetrf_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_cgetrf_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] | data | Common data structure to all threads initialized by CORE_cgetrf_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] | A | PLASMA 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] | IPIV | The 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] | info | Array 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_SUCCESS | successful exit
  -k,the | k-th argument had an illegal value
  k | if 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.