Loading...
Searching...
No Matches
gerbt: Apply random butterfly transformation (RBT)
Batched LA » Linear system solvers » General matrices: RBT + no pivoting LU » Auxiliary routines

## Functions

magma_int_t | magma_cgerbt_batched (magma_bool_t gen, magma_int_t n, magma_int_t nrhs, magmaFloatComplex **dA_array, magma_int_t ldda, magmaFloatComplex **dB_array, magma_int_t lddb, magmaFloatComplex *U, magmaFloatComplex *V, magma_int_t *info, magma_int_t batchCount, magma_queue_t queue)
| CGERBT solves a system of linear equations A * X = B where A is a general n-by-n matrix and X and B are n-by-nrhs matrices.
magma_int_t | magma_dgerbt_batched (magma_bool_t gen, magma_int_t n, magma_int_t nrhs, double **dA_array, magma_int_t ldda, double **dB_array, magma_int_t lddb, double *U, double *V, magma_int_t *info, magma_int_t batchCount, magma_queue_t queue)
| DGERBT solves a system of linear equations A * X = B where A is a general n-by-n matrix and X and B are n-by-nrhs matrices.
magma_int_t | magma_sgerbt_batched (magma_bool_t gen, magma_int_t n, magma_int_t nrhs, float **dA_array, magma_int_t ldda, float **dB_array, magma_int_t lddb, float *U, float *V, magma_int_t *info, magma_int_t batchCount, magma_queue_t queue)
| SGERBT solves a system of linear equations A * X = B where A is a general n-by-n matrix and X and B are n-by-nrhs matrices.
magma_int_t | magma_zgerbt_batched (magma_bool_t gen, magma_int_t n, magma_int_t nrhs, magmaDoubleComplex **dA_array, magma_int_t ldda, magmaDoubleComplex **dB_array, magma_int_t lddb, magmaDoubleComplex *U, magmaDoubleComplex *V, magma_int_t *info, magma_int_t batchCount, magma_queue_t queue)
| ZGERBT solves a system of linear equations A * X = B where A is a general n-by-n matrix and X and B are n-by-nrhs matrices.

## Detailed Description

## Function Documentation

## magma_cgerbt_batched()

magma_int_t magma_cgerbt_batched | ( | magma_bool_t | gen,
|  | magma_int_t | n,
|  | magma_int_t | nrhs,
|  | magmaFloatComplex ** | dA_array,
|  | magma_int_t | ldda,
|  | magmaFloatComplex ** | dB_array,
|  | magma_int_t | lddb,
|  | magmaFloatComplex * | U,
|  | magmaFloatComplex * | V,
|  | magma_int_t * | info,
|  | magma_int_t | batchCount,
|  | magma_queue_t | queue )

CGERBT solves a system of linear equations A * X = B where A is a general n-by-n matrix and X and B are n-by-nrhs matrices.

Random Butterfly Tranformation is applied on A and B, then the LU decomposition with no pivoting is used to factor A as A = L * U, where L is unit lower triangular, and U is upper triangular. The factored form of A is then used to solve the system of equations A * X = B.

This is a batched version that solves batchCount matrices in parallel. dA, dB, and info become arrays with one entry per matrix.

Parameters

  [in]

  gen

  magma_bool_t
  - = MagmaTrue: new matrices are generated for U and V
  - = MagmaFalse: matrices U and V given as parameter are used

  [in] | n | INTEGER The order of the matrix A. n >= 0.
  [in] | nrhs | INTEGER The number of right hand sides, i.e., the number of columns of the matrix B. nrhs >= 0.
  [in,out] | dA_array | Array of pointers, dimension (batchCount). Each is a COMPLEX array on the GPU, dimension (LDDA,N). On entry, each pointer is an M-by-N matrix to be factored. On exit, the factors L and U from the factorization A = P*L*U; the unit diagonal elements of L are not stored.
  [in] | ldda | INTEGER The leading dimension of each array A. LDDA >= max(1,M).
  [in,out] | dB_array | Array of pointers, dimension (batchCount). Each is a COMPLEX array on the GPU, dimension (LDDB,NRHS). On entry, each pointer is an right hand side matrix B. On exit, each pointer is the solution matrix X.
  [in] | lddb | INTEGER The leading dimension of the array B. LDB >= max(1,N).
  [in,out] | U | COMPLEX array, dimension (2,n) Random butterfly matrix, if gen = MagmaTrue U is generated and returned as output; else we use U given as input. CPU memory
  [in,out] | V | COMPLEX array, dimension (2,n) Random butterfly matrix, if gen = MagmaTrue V is generated and returned as output; else we use U given as input. CPU memory

  [out]

  info

  INTEGER
  - = 0: successful exit
  - < 0: if INFO = -i, the i-th argument had an illegal value or another error occured, such as memory allocation failed.

  [in] | batchCount | INTEGER The number of matrices to operate on.
  [in] | queue | magma_queue_t Queue to execute in.

## magma_dgerbt_batched()

magma_int_t magma_dgerbt_batched | ( | magma_bool_t | gen,
|  | magma_int_t | n,
|  | magma_int_t | nrhs,
|  | double ** | dA_array,
|  | magma_int_t | ldda,
|  | double ** | dB_array,
|  | magma_int_t | lddb,
|  | double * | U,
|  | double * | V,
|  | magma_int_t * | info,
|  | magma_int_t | batchCount,
|  | magma_queue_t | queue )

DGERBT solves a system of linear equations A * X = B where A is a general n-by-n matrix and X and B are n-by-nrhs matrices.

Random Butterfly Tranformation is applied on A and B, then the LU decomposition with no pivoting is used to factor A as A = L * U, where L is unit lower triangular, and U is upper triangular. The factored form of A is then used to solve the system of equations A * X = B.

This is a batched version that solves batchCount matrices in parallel. dA, dB, and info become arrays with one entry per matrix.

Parameters

  [in]

  gen

  magma_bool_t
  - = MagmaTrue: new matrices are generated for U and V
  - = MagmaFalse: matrices U and V given as parameter are used

  [in] | n | INTEGER The order of the matrix A. n >= 0.
  [in] | nrhs | INTEGER The number of right hand sides, i.e., the number of columns of the matrix B. nrhs >= 0.
  [in,out] | dA_array | Array of pointers, dimension (batchCount). Each is a DOUBLE PRECISION array on the GPU, dimension (LDDA,N). On entry, each pointer is an M-by-N matrix to be factored. On exit, the factors L and U from the factorization A = P*L*U; the unit diagonal elements of L are not stored.
  [in] | ldda | INTEGER The leading dimension of each array A. LDDA >= max(1,M).
  [in,out] | dB_array | Array of pointers, dimension (batchCount). Each is a DOUBLE PRECISION array on the GPU, dimension (LDDB,NRHS). On entry, each pointer is an right hand side matrix B. On exit, each pointer is the solution matrix X.
  [in] | lddb | INTEGER The leading dimension of the array B. LDB >= max(1,N).
  [in,out] | U | DOUBLE PRECISION array, dimension (2,n) Random butterfly matrix, if gen = MagmaTrue U is generated and returned as output; else we use U given as input. CPU memory
  [in,out] | V | DOUBLE PRECISION array, dimension (2,n) Random butterfly matrix, if gen = MagmaTrue V is generated and returned as output; else we use U given as input. CPU memory

  [out]

  info

  INTEGER
  - = 0: successful exit
  - < 0: if INFO = -i, the i-th argument had an illegal value or another error occured, such as memory allocation failed.

  [in] | batchCount | INTEGER The number of matrices to operate on.
  [in] | queue | magma_queue_t Queue to execute in.

## magma_sgerbt_batched()

magma_int_t magma_sgerbt_batched | ( | magma_bool_t | gen,
|  | magma_int_t | n,
|  | magma_int_t | nrhs,
|  | float ** | dA_array,
|  | magma_int_t | ldda,
|  | float ** | dB_array,
|  | magma_int_t | lddb,
|  | float * | U,
|  | float * | V,
|  | magma_int_t * | info,
|  | magma_int_t | batchCount,
|  | magma_queue_t | queue )

SGERBT solves a system of linear equations A * X = B where A is a general n-by-n matrix and X and B are n-by-nrhs matrices.

Random Butterfly Tranformation is applied on A and B, then the LU decomposition with no pivoting is used to factor A as A = L * U, where L is unit lower triangular, and U is upper triangular. The factored form of A is then used to solve the system of equations A * X = B.

This is a batched version that solves batchCount matrices in parallel. dA, dB, and info become arrays with one entry per matrix.

Parameters

  [in]

  gen

  magma_bool_t
  - = MagmaTrue: new matrices are generated for U and V
  - = MagmaFalse: matrices U and V given as parameter are used

  [in] | n | INTEGER The order of the matrix A. n >= 0.
  [in] | nrhs | INTEGER The number of right hand sides, i.e., the number of columns of the matrix B. nrhs >= 0.
  [in,out] | dA_array | Array of pointers, dimension (batchCount). Each is a REAL array on the GPU, dimension (LDDA,N). On entry, each pointer is an M-by-N matrix to be factored. On exit, the factors L and U from the factorization A = P*L*U; the unit diagonal elements of L are not stored.
  [in] | ldda | INTEGER The leading dimension of each array A. LDDA >= max(1,M).
  [in,out] | dB_array | Array of pointers, dimension (batchCount). Each is a REAL array on the GPU, dimension (LDDB,NRHS). On entry, each pointer is an right hand side matrix B. On exit, each pointer is the solution matrix X.
  [in] | lddb | INTEGER The leading dimension of the array B. LDB >= max(1,N).
  [in,out] | U | REAL array, dimension (2,n) Random butterfly matrix, if gen = MagmaTrue U is generated and returned as output; else we use U given as input. CPU memory
  [in,out] | V | REAL array, dimension (2,n) Random butterfly matrix, if gen = MagmaTrue V is generated and returned as output; else we use U given as input. CPU memory

  [out]

  info

  INTEGER
  - = 0: successful exit
  - < 0: if INFO = -i, the i-th argument had an illegal value or another error occured, such as memory allocation failed.

  [in] | batchCount | INTEGER The number of matrices to operate on.
  [in] | queue | magma_queue_t Queue to execute in.

## magma_zgerbt_batched()

magma_int_t magma_zgerbt_batched | ( | magma_bool_t | gen,
|  | magma_int_t | n,
|  | magma_int_t | nrhs,
|  | magmaDoubleComplex ** | dA_array,
|  | magma_int_t | ldda,
|  | magmaDoubleComplex ** | dB_array,
|  | magma_int_t | lddb,
|  | magmaDoubleComplex * | U,
|  | magmaDoubleComplex * | V,
|  | magma_int_t * | info,
|  | magma_int_t | batchCount,
|  | magma_queue_t | queue )

ZGERBT solves a system of linear equations A * X = B where A is a general n-by-n matrix and X and B are n-by-nrhs matrices.

Random Butterfly Tranformation is applied on A and B, then the LU decomposition with no pivoting is used to factor A as A = L * U, where L is unit lower triangular, and U is upper triangular. The factored form of A is then used to solve the system of equations A * X = B.

This is a batched version that solves batchCount matrices in parallel. dA, dB, and info become arrays with one entry per matrix.

Parameters

  [in]

  gen

  magma_bool_t
  - = MagmaTrue: new matrices are generated for U and V
  - = MagmaFalse: matrices U and V given as parameter are used

  [in] | n | INTEGER The order of the matrix A. n >= 0.
  [in] | nrhs | INTEGER The number of right hand sides, i.e., the number of columns of the matrix B. nrhs >= 0.
  [in,out] | dA_array | Array of pointers, dimension (batchCount). Each is a COMPLEX_16 array on the GPU, dimension (LDDA,N). On entry, each pointer is an M-by-N matrix to be factored. On exit, the factors L and U from the factorization A = P*L*U; the unit diagonal elements of L are not stored.
  [in] | ldda | INTEGER The leading dimension of each array A. LDDA >= max(1,M).
  [in,out] | dB_array | Array of pointers, dimension (batchCount). Each is a COMPLEX_16 array on the GPU, dimension (LDDB,NRHS). On entry, each pointer is an right hand side matrix B. On exit, each pointer is the solution matrix X.
  [in] | lddb | INTEGER The leading dimension of the array B. LDB >= max(1,N).
  [in,out] | U | COMPLEX_16 array, dimension (2,n) Random butterfly matrix, if gen = MagmaTrue U is generated and returned as output; else we use U given as input. CPU memory
  [in,out] | V | COMPLEX_16 array, dimension (2,n) Random butterfly matrix, if gen = MagmaTrue V is generated and returned as output; else we use U given as input. CPU memory

  [out]

  info

  INTEGER
  - = 0: successful exit
  - < 0: if INFO = -i, the i-th argument had an illegal value or another error occured, such as memory allocation failed.

  [in] | batchCount | INTEGER The number of matrices to operate on.
  [in] | queue | magma_queue_t Queue to execute in.