Loading...
Searching...
No Matches
trsv: Triangular matrix-vector solve
Dense LA » MAGMA BLAS and Auxiliary » Level 2: matrix-vector operations, O(n^2) work

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

## Detailed Description

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

## Function Documentation

## magma_ctrsv()

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] | uplo | Whether the upper or lower triangle of A is referenced.
  [in] | trans | Operation to perform on A.
  [in] | diag | Whether the diagonal of A is assumed to be unit or non-unit.
  [in] | n | Number of rows and columns of A. n >= 0.
  [in] | dA | COMPLEX array of dimension (ldda,n), ldda >= max(1,n). The n-by-n matrix A, on GPU device.
  [in] | ldda | Leading dimension of dA.
  [in,out] | dx | COMPLEX 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] | incx | Stride between consecutive elements of dx. incx != 0.
  [in] | queue | magma_queue_t Queue to execute in.

## magma_dtrsv()

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] | uplo | Whether the upper or lower triangle of A is referenced.
  [in] | trans | Operation to perform on A.
  [in] | diag | Whether the diagonal of A is assumed to be unit or non-unit.
  [in] | n | Number of rows and columns of A. n >= 0.
  [in] | dA | DOUBLE PRECISION array of dimension (ldda,n), ldda >= max(1,n). The n-by-n matrix A, on GPU device.
  [in] | ldda | Leading dimension of dA.
  [in,out] | dx | DOUBLE 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] | incx | Stride between consecutive elements of dx. incx != 0.
  [in] | queue | magma_queue_t Queue to execute in.

## magma_strsv()

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] | uplo | Whether the upper or lower triangle of A is referenced.
  [in] | trans | Operation to perform on A.
  [in] | diag | Whether the diagonal of A is assumed to be unit or non-unit.
  [in] | n | Number of rows and columns of A. n >= 0.
  [in] | dA | REAL array of dimension (ldda,n), ldda >= max(1,n). The n-by-n matrix A, on GPU device.
  [in] | ldda | Leading dimension of dA.
  [in,out] | dx | REAL 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] | incx | Stride between consecutive elements of dx. incx != 0.
  [in] | queue | magma_queue_t Queue to execute in.

## magma_ztrsv()

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] | uplo | Whether the upper or lower triangle of A is referenced.
  [in] | trans | Operation to perform on A.
  [in] | diag | Whether the diagonal of A is assumed to be unit or non-unit.
  [in] | n | Number of rows and columns of A. n >= 0.
  [in] | dA | COMPLEX_16 array of dimension (ldda,n), ldda >= max(1,n). The n-by-n matrix A, on GPU device.
  [in] | ldda | Leading dimension of dA.
  [in,out] | dx | COMPLEX_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] | incx | Stride between consecutive elements of dx. incx != 0.
  [in] | queue | magma_queue_t Queue to execute in.

## magmablas_ctrsv()

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]

  uplo

  magma_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]

  trans

  magma_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]

  diag

  magma_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] | n | INTEGER. On entry, n N specifies the order of the matrix A. n >= 0.

  [in]

  dA

  COMPLEX 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] | ldda | INTEGER. On entry, lda specifies the first dimension of A. lda >= max( 1, n ).
  [in] | db | COMPLEX array of dimension n On exit, b is overwritten with the solution vector X.
  [in] | incb | INTEGER. On entry, incb specifies the increment for the elements of b. incb must not be zero. Unchanged on exit.
  [in] | queue | magma_queue_t Queue to execute in.

## magmablas_dtrsv()

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]

  uplo

  magma_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]

  trans

  magma_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]

  diag

  magma_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] | n | INTEGER. On entry, n N specifies the order of the matrix A. n >= 0.

  [in]

  dA

  DOUBLE 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] | ldda | INTEGER. On entry, lda specifies the first dimension of A. lda >= max( 1, n ).
  [in] | db | DOUBLE PRECISION array of dimension n On exit, b is overwritten with the solution vector X.
  [in] | incb | INTEGER. On entry, incb specifies the increment for the elements of b. incb must not be zero. Unchanged on exit.
  [in] | queue | magma_queue_t Queue to execute in.

## magmablas_strsv()

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]

  uplo

  magma_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]

  trans

  magma_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]

  diag

  magma_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] | n | INTEGER. On entry, n N specifies the order of the matrix A. n >= 0.

  [in]

  dA

  REAL 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] | ldda | INTEGER. On entry, lda specifies the first dimension of A. lda >= max( 1, n ).
  [in] | db | REAL array of dimension n On exit, b is overwritten with the solution vector X.
  [in] | incb | INTEGER. On entry, incb specifies the increment for the elements of b. incb must not be zero. Unchanged on exit.
  [in] | queue | magma_queue_t Queue to execute in.

## magmablas_ztrsv()

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]

  uplo

  magma_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]

  trans

  magma_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]

  diag

  magma_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] | n | INTEGER. On entry, n N specifies the order of the matrix A. n >= 0.

  [in]

  dA

  COMPLEX_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] | ldda | INTEGER. On entry, lda specifies the first dimension of A. lda >= max( 1, n ).
  [in] | db | COMPLEX_16 array of dimension n On exit, b is overwritten with the solution vector X.
  [in] | incb | INTEGER. On entry, incb specifies the increment for the elements of b. incb must not be zero. Unchanged on exit.
  [in] | queue | magma_queue_t Queue to execute in.