MAGMA  2.3.0
Matrix Algebra for GPU and Multicore Architectures
 All Classes Files Functions Friends Groups Pages
trsv: Triangular matrix-vector solve

\( x = op(A^{-1})\; b \) More...

Functions

void magma_ctrsv (magma_uplo_t uplo, magma_trans_t trans, magma_diag_t diag, magma_int_t n, magmaFloatComplex_const_ptr dA, magma_int_t ldda, magmaFloatComplex_ptr dx, magma_int_t incx, magma_queue_t queue)
 Solve triangular matrix-vector system (one right-hand side). More...
 
void magma_dtrsv (magma_uplo_t uplo, magma_trans_t trans, magma_diag_t diag, magma_int_t n, magmaDouble_const_ptr dA, magma_int_t ldda, magmaDouble_ptr dx, magma_int_t incx, magma_queue_t queue)
 Solve triangular matrix-vector system (one right-hand side). More...
 
void magma_strsv (magma_uplo_t uplo, magma_trans_t trans, magma_diag_t diag, magma_int_t n, magmaFloat_const_ptr dA, magma_int_t ldda, magmaFloat_ptr dx, magma_int_t incx, magma_queue_t queue)
 Solve triangular matrix-vector system (one right-hand side). More...
 
void magma_ztrsv (magma_uplo_t uplo, magma_trans_t trans, magma_diag_t diag, magma_int_t n, magmaDoubleComplex_const_ptr dA, magma_int_t ldda, magmaDoubleComplex_ptr dx, magma_int_t incx, magma_queue_t queue)
 Solve triangular matrix-vector system (one right-hand side). More...
 
void magmablas_ctrsv (magma_uplo_t uplo, magma_trans_t trans, magma_diag_t diag, magma_int_t n, magmaFloatComplex_const_ptr dA, magma_int_t ldda, magmaFloatComplex_ptr db, magma_int_t incb, magma_queue_t queue)
 ctrsv solves one of the matrix equations on gpu More...
 
void magmablas_dtrsv (magma_uplo_t uplo, magma_trans_t trans, magma_diag_t diag, magma_int_t n, magmaDouble_const_ptr dA, magma_int_t ldda, magmaDouble_ptr db, magma_int_t incb, magma_queue_t queue)
 dtrsv solves one of the matrix equations on gpu More...
 
void magmablas_strsv (magma_uplo_t uplo, magma_trans_t trans, magma_diag_t diag, magma_int_t n, magmaFloat_const_ptr dA, magma_int_t ldda, magmaFloat_ptr db, magma_int_t incb, magma_queue_t queue)
 strsv solves one of the matrix equations on gpu More...
 
void magmablas_ztrsv (magma_uplo_t uplo, magma_trans_t trans, magma_diag_t diag, magma_int_t n, magmaDoubleComplex_const_ptr dA, magma_int_t ldda, magmaDoubleComplex_ptr db, magma_int_t incb, magma_queue_t queue)
 ztrsv solves one of the matrix equations on gpu More...
 

Detailed Description

\( x = op(A^{-1})\; b \)


Function Documentation

void magma_ctrsv ( magma_uplo_t  uplo,
magma_trans_t  trans,
magma_diag_t  diag,
magma_int_t  n,
magmaFloatComplex_const_ptr  dA,
magma_int_t  ldda,
magmaFloatComplex_ptr  dx,
magma_int_t  incx,
magma_queue_t  queue 
)

Solve triangular matrix-vector system (one right-hand side).

\( A x = b \) (trans == MagmaNoTrans), or
\( A^T x = b \) (trans == MagmaTrans), or
\( A^H x = b \) (trans == MagmaConjTrans).

Parameters
[in]uploWhether the upper or lower triangle of A is referenced.
[in]transOperation to perform on A.
[in]diagWhether the diagonal of A is assumed to be unit or non-unit.
[in]nNumber of rows and columns of A. n >= 0.
[in]dACOMPLEX array of dimension (ldda,n), ldda >= max(1,n). The n-by-n matrix A, on GPU device.
[in]lddaLeading dimension of dA.
[in,out]dxCOMPLEX array on GPU device. On entry, the n element RHS vector b of dimension (1 + (n-1)*incx). On exit, overwritten with the solution vector x.
[in]incxStride between consecutive elements of dx. incx != 0.
[in]queuemagma_queue_t Queue to execute in.
void magma_dtrsv ( magma_uplo_t  uplo,
magma_trans_t  trans,
magma_diag_t  diag,
magma_int_t  n,
magmaDouble_const_ptr  dA,
magma_int_t  ldda,
magmaDouble_ptr  dx,
magma_int_t  incx,
magma_queue_t  queue 
)

Solve triangular matrix-vector system (one right-hand side).

\( A x = b \) (trans == MagmaNoTrans), or
\( A^T x = b \) (trans == MagmaTrans), or
\( A^H x = b \) (trans == MagmaConjTrans).

Parameters
[in]uploWhether the upper or lower triangle of A is referenced.
[in]transOperation to perform on A.
[in]diagWhether the diagonal of A is assumed to be unit or non-unit.
[in]nNumber of rows and columns of A. n >= 0.
[in]dADOUBLE PRECISION array of dimension (ldda,n), ldda >= max(1,n). The n-by-n matrix A, on GPU device.
[in]lddaLeading dimension of dA.
[in,out]dxDOUBLE PRECISION array on GPU device. On entry, the n element RHS vector b of dimension (1 + (n-1)*incx). On exit, overwritten with the solution vector x.
[in]incxStride between consecutive elements of dx. incx != 0.
[in]queuemagma_queue_t Queue to execute in.
void magma_strsv ( magma_uplo_t  uplo,
magma_trans_t  trans,
magma_diag_t  diag,
magma_int_t  n,
magmaFloat_const_ptr  dA,
magma_int_t  ldda,
magmaFloat_ptr  dx,
magma_int_t  incx,
magma_queue_t  queue 
)

Solve triangular matrix-vector system (one right-hand side).

\( A x = b \) (trans == MagmaNoTrans), or
\( A^T x = b \) (trans == MagmaTrans), or
\( A^H x = b \) (trans == MagmaConjTrans).

Parameters
[in]uploWhether the upper or lower triangle of A is referenced.
[in]transOperation to perform on A.
[in]diagWhether the diagonal of A is assumed to be unit or non-unit.
[in]nNumber of rows and columns of A. n >= 0.
[in]dAREAL array of dimension (ldda,n), ldda >= max(1,n). The n-by-n matrix A, on GPU device.
[in]lddaLeading dimension of dA.
[in,out]dxREAL array on GPU device. On entry, the n element RHS vector b of dimension (1 + (n-1)*incx). On exit, overwritten with the solution vector x.
[in]incxStride between consecutive elements of dx. incx != 0.
[in]queuemagma_queue_t Queue to execute in.
void magma_ztrsv ( magma_uplo_t  uplo,
magma_trans_t  trans,
magma_diag_t  diag,
magma_int_t  n,
magmaDoubleComplex_const_ptr  dA,
magma_int_t  ldda,
magmaDoubleComplex_ptr  dx,
magma_int_t  incx,
magma_queue_t  queue 
)

Solve triangular matrix-vector system (one right-hand side).

\( A x = b \) (trans == MagmaNoTrans), or
\( A^T x = b \) (trans == MagmaTrans), or
\( A^H x = b \) (trans == MagmaConjTrans).

Parameters
[in]uploWhether the upper or lower triangle of A is referenced.
[in]transOperation to perform on A.
[in]diagWhether the diagonal of A is assumed to be unit or non-unit.
[in]nNumber of rows and columns of A. n >= 0.
[in]dACOMPLEX_16 array of dimension (ldda,n), ldda >= max(1,n). The n-by-n matrix A, on GPU device.
[in]lddaLeading dimension of dA.
[in,out]dxCOMPLEX_16 array on GPU device. On entry, the n element RHS vector b of dimension (1 + (n-1)*incx). On exit, overwritten with the solution vector x.
[in]incxStride between consecutive elements of dx. incx != 0.
[in]queuemagma_queue_t Queue to execute in.
void magmablas_ctrsv ( magma_uplo_t  uplo,
magma_trans_t  trans,
magma_diag_t  diag,
magma_int_t  n,
magmaFloatComplex_const_ptr  dA,
magma_int_t  ldda,
magmaFloatComplex_ptr  db,
magma_int_t  incb,
magma_queue_t  queue 
)

ctrsv solves one of the matrix equations on gpu

op(A)*x = B,   or
x*op(A) = B,

where alpha is a scalar, X and B are vectors, A is a unit, or non-unit, upper or lower triangular matrix and op(A) is one of

op(A) = A,    or
op(A) = A^T,  or
op(A) = A^H.

The vector x is overwritten on b.

Parameters
[in]uplomagma_uplo_t. On entry, uplo specifies whether the matrix A is an upper or lower triangular matrix as follows:
  • = MagmaUpper: A is an upper triangular matrix.
  • = MagmaLower: A is a lower triangular matrix.
[in]transmagma_trans_t. On entry, trans specifies the form of op(A) to be used in the matrix multiplication as follows:
  • = MagmaNoTrans: op(A) = A.
  • = MagmaTrans: op(A) = A^T.
  • = MagmaConjTrans: op(A) = A^H.
[in]diagmagma_diag_t. On entry, diag specifies whether or not A is unit triangular as follows:
  • = MagmaUnit: A is assumed to be unit triangular.
  • = MagmaNonUnit: A is not assumed to be unit triangular.
[in]nINTEGER. On entry, n N specifies the order of the matrix A. n >= 0.
[in]dACOMPLEX array of dimension ( lda, n ) Before entry with uplo = MagmaUpper, the leading n by n upper triangular part of the array A must contain the upper triangular matrix and the strictly lower triangular part of A is not referenced. Before entry with uplo = MagmaLower, the leading n by n lower triangular part of the array A must contain the lower triangular matrix and the strictly upper triangular part of A is not referenced. Note that when diag = MagmaUnit, the diagonal elements of A are not referenced either, but are assumed to be unity.
[in]lddaINTEGER. On entry, lda specifies the first dimension of A. lda >= max( 1, n ).
[in]dbCOMPLEX array of dimension n On exit, b is overwritten with the solution vector X.
[in]incbINTEGER. On entry, incb specifies the increment for the elements of b. incb must not be zero. Unchanged on exit.
[in]queuemagma_queue_t Queue to execute in.
void magmablas_dtrsv ( magma_uplo_t  uplo,
magma_trans_t  trans,
magma_diag_t  diag,
magma_int_t  n,
magmaDouble_const_ptr  dA,
magma_int_t  ldda,
magmaDouble_ptr  db,
magma_int_t  incb,
magma_queue_t  queue 
)

dtrsv solves one of the matrix equations on gpu

op(A)*x = B,   or
x*op(A) = B,

where alpha is a scalar, X and B are vectors, A is a unit, or non-unit, upper or lower triangular matrix and op(A) is one of

op(A) = A,    or
op(A) = A^T,  or
op(A) = A^H.

The vector x is overwritten on b.

Parameters
[in]uplomagma_uplo_t. On entry, uplo specifies whether the matrix A is an upper or lower triangular matrix as follows:
  • = MagmaUpper: A is an upper triangular matrix.
  • = MagmaLower: A is a lower triangular matrix.
[in]transmagma_trans_t. On entry, trans specifies the form of op(A) to be used in the matrix multiplication as follows:
  • = MagmaNoTrans: op(A) = A.
  • = MagmaTrans: op(A) = A^T.
  • = MagmaConjTrans: op(A) = A^H.
[in]diagmagma_diag_t. On entry, diag specifies whether or not A is unit triangular as follows:
  • = MagmaUnit: A is assumed to be unit triangular.
  • = MagmaNonUnit: A is not assumed to be unit triangular.
[in]nINTEGER. On entry, n N specifies the order of the matrix A. n >= 0.
[in]dADOUBLE PRECISION array of dimension ( lda, n ) Before entry with uplo = MagmaUpper, the leading n by n upper triangular part of the array A must contain the upper triangular matrix and the strictly lower triangular part of A is not referenced. Before entry with uplo = MagmaLower, the leading n by n lower triangular part of the array A must contain the lower triangular matrix and the strictly upper triangular part of A is not referenced. Note that when diag = MagmaUnit, the diagonal elements of A are not referenced either, but are assumed to be unity.
[in]lddaINTEGER. On entry, lda specifies the first dimension of A. lda >= max( 1, n ).
[in]dbDOUBLE PRECISION array of dimension n On exit, b is overwritten with the solution vector X.
[in]incbINTEGER. On entry, incb specifies the increment for the elements of b. incb must not be zero. Unchanged on exit.
[in]queuemagma_queue_t Queue to execute in.
void magmablas_strsv ( magma_uplo_t  uplo,
magma_trans_t  trans,
magma_diag_t  diag,
magma_int_t  n,
magmaFloat_const_ptr  dA,
magma_int_t  ldda,
magmaFloat_ptr  db,
magma_int_t  incb,
magma_queue_t  queue 
)

strsv solves one of the matrix equations on gpu

op(A)*x = B,   or
x*op(A) = B,

where alpha is a scalar, X and B are vectors, A is a unit, or non-unit, upper or lower triangular matrix and op(A) is one of

op(A) = A,    or
op(A) = A^T,  or
op(A) = A^H.

The vector x is overwritten on b.

Parameters
[in]uplomagma_uplo_t. On entry, uplo specifies whether the matrix A is an upper or lower triangular matrix as follows:
  • = MagmaUpper: A is an upper triangular matrix.
  • = MagmaLower: A is a lower triangular matrix.
[in]transmagma_trans_t. On entry, trans specifies the form of op(A) to be used in the matrix multiplication as follows:
  • = MagmaNoTrans: op(A) = A.
  • = MagmaTrans: op(A) = A^T.
  • = MagmaConjTrans: op(A) = A^H.
[in]diagmagma_diag_t. On entry, diag specifies whether or not A is unit triangular as follows:
  • = MagmaUnit: A is assumed to be unit triangular.
  • = MagmaNonUnit: A is not assumed to be unit triangular.
[in]nINTEGER. On entry, n N specifies the order of the matrix A. n >= 0.
[in]dAREAL array of dimension ( lda, n ) Before entry with uplo = MagmaUpper, the leading n by n upper triangular part of the array A must contain the upper triangular matrix and the strictly lower triangular part of A is not referenced. Before entry with uplo = MagmaLower, the leading n by n lower triangular part of the array A must contain the lower triangular matrix and the strictly upper triangular part of A is not referenced. Note that when diag = MagmaUnit, the diagonal elements of A are not referenced either, but are assumed to be unity.
[in]lddaINTEGER. On entry, lda specifies the first dimension of A. lda >= max( 1, n ).
[in]dbREAL array of dimension n On exit, b is overwritten with the solution vector X.
[in]incbINTEGER. On entry, incb specifies the increment for the elements of b. incb must not be zero. Unchanged on exit.
[in]queuemagma_queue_t Queue to execute in.
void magmablas_ztrsv ( magma_uplo_t  uplo,
magma_trans_t  trans,
magma_diag_t  diag,
magma_int_t  n,
magmaDoubleComplex_const_ptr  dA,
magma_int_t  ldda,
magmaDoubleComplex_ptr  db,
magma_int_t  incb,
magma_queue_t  queue 
)

ztrsv solves one of the matrix equations on gpu

op(A)*x = B,   or
x*op(A) = B,

where alpha is a scalar, X and B are vectors, A is a unit, or non-unit, upper or lower triangular matrix and op(A) is one of

op(A) = A,    or
op(A) = A^T,  or
op(A) = A^H.

The vector x is overwritten on b.

Parameters
[in]uplomagma_uplo_t. On entry, uplo specifies whether the matrix A is an upper or lower triangular matrix as follows:
  • = MagmaUpper: A is an upper triangular matrix.
  • = MagmaLower: A is a lower triangular matrix.
[in]transmagma_trans_t. On entry, trans specifies the form of op(A) to be used in the matrix multiplication as follows:
  • = MagmaNoTrans: op(A) = A.
  • = MagmaTrans: op(A) = A^T.
  • = MagmaConjTrans: op(A) = A^H.
[in]diagmagma_diag_t. On entry, diag specifies whether or not A is unit triangular as follows:
  • = MagmaUnit: A is assumed to be unit triangular.
  • = MagmaNonUnit: A is not assumed to be unit triangular.
[in]nINTEGER. On entry, n N specifies the order of the matrix A. n >= 0.
[in]dACOMPLEX_16 array of dimension ( lda, n ) Before entry with uplo = MagmaUpper, the leading n by n upper triangular part of the array A must contain the upper triangular matrix and the strictly lower triangular part of A is not referenced. Before entry with uplo = MagmaLower, the leading n by n lower triangular part of the array A must contain the lower triangular matrix and the strictly upper triangular part of A is not referenced. Note that when diag = MagmaUnit, the diagonal elements of A are not referenced either, but are assumed to be unity.
[in]lddaINTEGER. On entry, lda specifies the first dimension of A. lda >= max( 1, n ).
[in]dbCOMPLEX_16 array of dimension n On exit, b is overwritten with the solution vector X.
[in]incbINTEGER. On entry, incb specifies the increment for the elements of b. incb must not be zero. Unchanged on exit.
[in]queuemagma_queue_t Queue to execute in.