MAGMA  1.2.0
MatrixAlgebraonGPUandMulticoreArchitectures
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups
dgesv_gpu.cpp File Reference
#include "common_magma.h"
Include dependency graph for dgesv_gpu.cpp:

Go to the source code of this file.

Macros

#define PRECISION_d
#define magma_dtrsm   magmablas_dtrsm

Functions

magma_int_t magma_dgesv_gpu (magma_int_t n, magma_int_t nrhs, double *dA, magma_int_t ldda, magma_int_t *ipiv, double *dB, magma_int_t lddb, magma_int_t *info)

Macro Definition Documentation

#define magma_dtrsm   magmablas_dtrsm

Definition at line 16 of file dgesv_gpu.cpp.

#define PRECISION_d

Definition at line 14 of file dgesv_gpu.cpp.


Function Documentation

magma_int_t magma_dgesv_gpu ( magma_int_t  n,
magma_int_t  nrhs,
double *  dA,
magma_int_t  ldda,
magma_int_t ipiv,
double *  dB,
magma_int_t  lddb,
magma_int_t info 
)

Definition at line 21 of file dgesv_gpu.cpp.

References __func__, magma_dgetrf_gpu(), magma_dgetrs_gpu(), magma_xerbla(), MagmaNoTrans, and max.

{
/* -- MAGMA (version 1.2.0) --
Univ. of Tennessee, Knoxville
Univ. of California, Berkeley
Univ. of Colorado, Denver
May 2012
Purpose
=======
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.
The LU decomposition with partial pivoting and row interchanges is
used to factor A as
A = P * L * U,
where P is a permutation matrix, 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.
Arguments
=========
N (input) INTEGER
The order of the matrix A. N >= 0.
NRHS (input) INTEGER
The number of right hand sides, i.e., the number of columns
of the matrix B. NRHS >= 0.
A (input/output) DOUBLE_PRECISION array on the GPU, dimension (LDDA,N).
On entry, the 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.
LDA (input) INTEGER
The leading dimension of the array A. LDA >= max(1,N).
IPIV (output) INTEGER array, dimension (min(M,N))
The pivot indices; for 1 <= i <= min(M,N), row i of the
matrix was interchanged with row IPIV(i).
B (input/output) DOUBLE_PRECISION array on the GPU, dimension (LDB,NRHS)
On entry, the right hand side matrix B.
On exit, the solution matrix X.
LDB (input) INTEGER
The leading dimension of the array B. LDB >= max(1,N).
INFO (output) INTEGER
= 0: successful exit
< 0: if INFO = -i, the i-th argument had an illegal value
===================================================================== */
*info = 0;
if (n < 0) {
*info = -1;
} else if (nrhs < 0) {
*info = -2;
} else if (ldda < max(1,n)) {
*info = -4;
} else if (lddb < max(1,n)) {
*info = -7;
}
if (*info != 0) {
magma_xerbla( __func__, -(*info) );
return *info;
}
/* Quick return if possible */
if (n == 0 || nrhs == 0) {
return *info;
}
magma_dgetrf_gpu( n, n, dA, ldda, ipiv, info );
if ( *info == 0 ) {
magma_dgetrs_gpu( MagmaNoTrans, n, nrhs, dA, ldda, ipiv, dB, lddb, info );
}
return *info;
}

Here is the call graph for this function:

Here is the caller graph for this function: