![]() |
MAGMA
1.5.0
Matrix Algebra for GPU and Multicore Architectures
|
Functions | |
magma_int_t | magma_zcuspmm (magma_z_sparse_matrix A, magma_z_sparse_matrix B, magma_z_sparse_matrix *AB) |
– MAGMA (version 1.5.0-beta3) – Univ. More... | |
magma_int_t | magma_zgecsrmv (magma_trans_t transA, magma_int_t m, magma_int_t n, magmaDoubleComplex alpha, magmaDoubleComplex *d_val, magma_index_t *d_rowptr, magma_index_t *d_colind, magmaDoubleComplex *d_x, magmaDoubleComplex beta, magmaDoubleComplex *d_y) |
This routine computes y = alpha * A * x + beta * y on the GPU. More... | |
magma_int_t | magma_zgecsrmv_shift (magma_trans_t transA, magma_int_t m, magma_int_t n, magmaDoubleComplex alpha, magmaDoubleComplex lambda, magmaDoubleComplex *d_val, magma_index_t *d_rowptr, magma_index_t *d_colind, magmaDoubleComplex *d_x, magmaDoubleComplex beta, int offset, int blocksize, magma_index_t *add_rows, magmaDoubleComplex *d_y) |
This routine computes y = alpha * ( A -lambda I ) * x + beta * y on the GPU. More... | |
magma_int_t | magma_zgeellmv (magma_trans_t transA, magma_int_t m, magma_int_t n, magma_int_t nnz_per_row, magmaDoubleComplex alpha, magmaDoubleComplex *d_val, magma_index_t *d_colind, magmaDoubleComplex *d_x, magmaDoubleComplex beta, magmaDoubleComplex *d_y) |
This routine computes y = alpha * A * x + beta * y on the GPU. More... | |
magma_int_t | magma_zgeellmv_shift (magma_trans_t transA, magma_int_t m, magma_int_t n, magma_int_t nnz_per_row, magmaDoubleComplex alpha, magmaDoubleComplex lambda, magmaDoubleComplex *d_val, magma_index_t *d_colind, magmaDoubleComplex *d_x, magmaDoubleComplex beta, int offset, int blocksize, magma_index_t *add_rows, magmaDoubleComplex *d_y) |
This routine computes y = alpha *( A - lambda I ) * x + beta * y on the GPU. More... | |
magma_int_t | magma_zgeellrtmv (magma_trans_t transA, magma_int_t m, magma_int_t n, magma_int_t nnz_per_row, magmaDoubleComplex alpha, magmaDoubleComplex *d_val, magma_index_t *d_colind, magma_index_t *d_rowlength, magmaDoubleComplex *d_x, magmaDoubleComplex beta, magmaDoubleComplex *d_y, magma_int_t alignment, magma_int_t blocksize) |
This routine computes y = alpha * A * x + beta * y on the GPU. More... | |
magma_int_t | magma_zgeelltmv_shift (magma_trans_t transA, magma_int_t m, magma_int_t n, magma_int_t nnz_per_row, magmaDoubleComplex alpha, magmaDoubleComplex lambda, magmaDoubleComplex *d_val, magma_index_t *d_colind, magmaDoubleComplex *d_x, magmaDoubleComplex beta, int offset, int blocksize, magma_index_t *add_rows, magmaDoubleComplex *d_y) |
This routine computes y = alpha *( A - lambda I ) * x + beta * y on the GPU. More... | |
magma_int_t | magma_zgesellpmv (magma_trans_t transA, magma_int_t m, magma_int_t n, magma_int_t blocksize, magma_int_t slices, magma_int_t alignment, magmaDoubleComplex alpha, magmaDoubleComplex *d_val, magma_index_t *d_colind, magma_index_t *d_rowptr, magmaDoubleComplex *d_x, magmaDoubleComplex beta, magmaDoubleComplex *d_y) |
This routine computes y = alpha * A^t * x + beta * y on the GPU. More... | |
magma_int_t | magma_zgesellcmv (magma_trans_t transA, magma_int_t m, magma_int_t n, magma_int_t blocksize, magma_int_t slices, magma_int_t alignment, magmaDoubleComplex alpha, magmaDoubleComplex *d_val, magma_index_t *d_colind, magma_index_t *d_rowptr, magmaDoubleComplex *d_x, magmaDoubleComplex beta, magmaDoubleComplex *d_y) |
This routine computes y = alpha * A^t * x + beta * y on the GPU. More... | |
magma_int_t | magma_zmdotc (int n, int k, magmaDoubleComplex *v, magmaDoubleComplex *r, magmaDoubleComplex *d1, magmaDoubleComplex *d2, magmaDoubleComplex *skp) |
Computes the scalar product of a set of vectors v_i such that. More... | |
magma_int_t | magma_zmgecsrmv (magma_trans_t transA, magma_int_t m, magma_int_t n, magma_int_t num_vecs, magmaDoubleComplex alpha, magmaDoubleComplex *d_val, magma_index_t *d_rowptr, magma_index_t *d_colind, magmaDoubleComplex *d_x, magmaDoubleComplex beta, magmaDoubleComplex *d_y) |
This routine computes Y = alpha * A * X + beta * Y for X and Y sets of num_vec vectors on the GPU. More... | |
magma_int_t | magma_zmgeellmv (magma_trans_t transA, magma_int_t m, magma_int_t n, magma_int_t num_vecs, magma_int_t nnz_per_row, magmaDoubleComplex alpha, magmaDoubleComplex *d_val, magma_index_t *d_colind, magmaDoubleComplex *d_x, magmaDoubleComplex beta, magmaDoubleComplex *d_y) |
This routine computes Y = alpha * A * X + beta * Y for X and Y sets of num_vec vectors on the GPU. More... | |
magma_int_t | magma_zmgeelltmv (magma_trans_t transA, magma_int_t m, magma_int_t n, magma_int_t num_vecs, magma_int_t nnz_per_row, magmaDoubleComplex alpha, magmaDoubleComplex *d_val, magma_index_t *d_colind, magmaDoubleComplex *d_x, magmaDoubleComplex beta, magmaDoubleComplex *d_y) |
This routine computes Y = alpha * A * X + beta * Y for X and Y sets of num_vec vectors on the GPU. More... | |
magma_int_t | magma_zmgesellpmv (magma_trans_t transA, magma_int_t m, magma_int_t n, magma_int_t num_vecs, magma_int_t blocksize, magma_int_t slices, magma_int_t alignment, magmaDoubleComplex alpha, magmaDoubleComplex *d_val, magma_index_t *d_colind, magma_index_t *d_rowptr, magmaDoubleComplex *d_x, magmaDoubleComplex beta, magmaDoubleComplex *d_y) |
This routine computes Y = alpha * A^t * X + beta * Y on the GPU. More... | |
magma_int_t magma_zcuspmm | ( | magma_z_sparse_matrix | A, |
magma_z_sparse_matrix | B, | ||
magma_z_sparse_matrix * | AB | ||
) |
– MAGMA (version 1.5.0-beta3) – Univ.
of Tennessee, Knoxville Univ. of California, Berkeley Univ. of Colorado, Denver November 2011
This is an interface to the cuSPARSE routine csrmm computing the product of two sparse matrices stored in csr format.
A | magma_z_sparse_matrix input matrix |
B | magma_z_sparse_matrix input matrix |
AB | magma_z_sparse_matrix* output matrix AB = A * B |
magma_int_t magma_zgecsrmv | ( | magma_trans_t | transA, |
magma_int_t | m, | ||
magma_int_t | n, | ||
magmaDoubleComplex | alpha, | ||
magmaDoubleComplex * | d_val, | ||
magma_index_t * | d_rowptr, | ||
magma_index_t * | d_colind, | ||
magmaDoubleComplex * | d_x, | ||
magmaDoubleComplex | beta, | ||
magmaDoubleComplex * | d_y | ||
) |
This routine computes y = alpha * A * x + beta * y on the GPU.
The input format is CSR (val, row, col).
transA | magma_trans_t transposition parameter for A |
m | magma_int_t number of rows in A |
n | magma_int_t number of columns in A |
alpha | magmaDoubleComplex scalar multiplier |
d_val | magmaDoubleComplex* array containing values of A in CSR |
d_rowptr | magma_int_t* rowpointer of A in CSR |
d_colind | magma_int_t* columnindices of A in CSR |
d_x | magmaDoubleComplex* input vector x |
beta | magmaDoubleComplex scalar multiplier |
d_y | magmaDoubleComplex* input/output vector y |
magma_int_t magma_zgecsrmv_shift | ( | magma_trans_t | transA, |
magma_int_t | m, | ||
magma_int_t | n, | ||
magmaDoubleComplex | alpha, | ||
magmaDoubleComplex | lambda, | ||
magmaDoubleComplex * | d_val, | ||
magma_index_t * | d_rowptr, | ||
magma_index_t * | d_colind, | ||
magmaDoubleComplex * | d_x, | ||
magmaDoubleComplex | beta, | ||
int | offset, | ||
int | blocksize, | ||
magma_index_t * | add_rows, | ||
magmaDoubleComplex * | d_y | ||
) |
This routine computes y = alpha * ( A -lambda I ) * x + beta * y on the GPU.
It is a shifted version of the CSR-SpMV.
transA | magma_trans_t transposition parameter for A |
m | magma_int_t number of rows in A |
n | magma_int_t number of columns in A |
alpha | magmaDoubleComplex scalar multiplier |
lambda | magmaDoubleComplex scalar multiplier |
d_val | magmaDoubleComplex* array containing values of A in CSR |
d_rowptr | magma_int_t* rowpointer of A in CSR |
d_colind | magma_int_t* columnindices of A in CSR |
d_x | magmaDoubleComplex* input vector x |
beta | magmaDoubleComplex scalar multiplier |
offset | magma_int_t in case not the main diagonal is scaled |
blocksize | magma_int_t in case of processing multiple vectors |
add_rows | magma_int_t* in case the matrixpowerskernel is used |
d_y | magmaDoubleComplex* output vector y |
magma_int_t magma_zgeellmv | ( | magma_trans_t | transA, |
magma_int_t | m, | ||
magma_int_t | n, | ||
magma_int_t | nnz_per_row, | ||
magmaDoubleComplex | alpha, | ||
magmaDoubleComplex * | d_val, | ||
magma_index_t * | d_colind, | ||
magmaDoubleComplex * | d_x, | ||
magmaDoubleComplex | beta, | ||
magmaDoubleComplex * | d_y | ||
) |
This routine computes y = alpha * A * x + beta * y on the GPU.
Input format is ELLPACK.
transA | magma_trans_t transposition parameter for A |
m | magma_int_t number of rows in A |
n | magma_int_t number of columns in A |
nnz_per_row | magma_int_t number of elements in the longest row |
alpha | magmaDoubleComplex scalar multiplier |
d_val | magmaDoubleComplex* array containing values of A in ELLPACK |
d_colind | magma_int_t* columnindices of A in ELLPACK |
d_x | magmaDoubleComplex* input vector x |
beta | magmaDoubleComplex scalar multiplier |
d_y | magmaDoubleComplex* input/output vector y |
magma_int_t magma_zgeellmv_shift | ( | magma_trans_t | transA, |
magma_int_t | m, | ||
magma_int_t | n, | ||
magma_int_t | nnz_per_row, | ||
magmaDoubleComplex | alpha, | ||
magmaDoubleComplex | lambda, | ||
magmaDoubleComplex * | d_val, | ||
magma_index_t * | d_colind, | ||
magmaDoubleComplex * | d_x, | ||
magmaDoubleComplex | beta, | ||
int | offset, | ||
int | blocksize, | ||
magma_index_t * | add_rows, | ||
magmaDoubleComplex * | d_y | ||
) |
This routine computes y = alpha *( A - lambda I ) * x + beta * y on the GPU.
Input format is ELLPACK. It is the shifted version of the ELLPACK SpMV.
transA | magma_trans_t transposition parameter for A |
m | magma_int_t number of rows in A |
n | magma_int_t number of columns in A |
nnz_per_row | magma_int_t number of elements in the longest row |
alpha | magmaDoubleComplex scalar multiplier |
lambda | magmaDoubleComplex scalar multiplier |
d_val | magmaDoubleComplex* array containing values of A in ELLPACK |
d_colind | magma_int_t* columnindices of A in ELLPACK |
d_x | magmaDoubleComplex* input vector x |
beta | magmaDoubleComplex scalar multiplier |
offset | magma_int_t in case not the main diagonal is scaled |
blocksize | magma_int_t in case of processing multiple vectors |
add_rows | magma_int_t* in case the matrixpowerskernel is used |
d_y | magmaDoubleComplex* input/output vector y |
magma_int_t magma_zgeellrtmv | ( | magma_trans_t | transA, |
magma_int_t | m, | ||
magma_int_t | n, | ||
magma_int_t | nnz_per_row, | ||
magmaDoubleComplex | alpha, | ||
magmaDoubleComplex * | d_val, | ||
magma_index_t * | d_colind, | ||
magma_index_t * | d_rowlength, | ||
magmaDoubleComplex * | d_x, | ||
magmaDoubleComplex | beta, | ||
magmaDoubleComplex * | d_y, | ||
magma_int_t | alignment, | ||
magma_int_t | blocksize | ||
) |
This routine computes y = alpha * A * x + beta * y on the GPU.
Input format is ELLRT. The ideas are taken from "Improving the performance of the sparse matrix vector product with GPUs", (CIT 2010), and modified to provide correct values.
transA | magma_trans_t transposition parameter for A |
m | magma_int_t number of rows |
n | magma_int_t number of columns |
nnz_per_row | magma_int_t max number of nonzeros in a row |
alpha | magmaDoubleComplex scalar alpha |
d_val | magmaDoubleComplex* val array |
d_colind | magma_int_t* col indices |
d_rowlength | magma_int_t* number of elements in each row |
d_x | magmaDoubleComplex* input vector x |
beta | magmaDoubleComplex scalar beta |
d_y | magmaDoubleComplex* output vector y |
blocksize | magma_int_t threads per block |
alignment | magma_int_t threads assigned to each row |
magma_int_t magma_zgeelltmv_shift | ( | magma_trans_t | transA, |
magma_int_t | m, | ||
magma_int_t | n, | ||
magma_int_t | nnz_per_row, | ||
magmaDoubleComplex | alpha, | ||
magmaDoubleComplex | lambda, | ||
magmaDoubleComplex * | d_val, | ||
magma_index_t * | d_colind, | ||
magmaDoubleComplex * | d_x, | ||
magmaDoubleComplex | beta, | ||
int | offset, | ||
int | blocksize, | ||
magma_index_t * | add_rows, | ||
magmaDoubleComplex * | d_y | ||
) |
This routine computes y = alpha *( A - lambda I ) * x + beta * y on the GPU.
Input format is ELL.
transA | magma_trans_t transposition parameter for A |
m | magma_int_t number of rows in A |
n | magma_int_t number of columns in A |
nnz_per_row | magma_int_t number of elements in the longest row |
alpha | magmaDoubleComplex scalar multiplier |
lambda | magmaDoubleComplex scalar multiplier |
d_val | magmaDoubleComplex* array containing values of A in ELL |
d_colind | magma_int_t* columnindices of A in ELL |
d_x | magmaDoubleComplex* input vector x |
beta | magmaDoubleComplex scalar multiplier |
offset | magma_int_t in case not the main diagonal is scaled |
blocksize | magma_int_t in case of processing multiple vectors |
add_rows | magma_int_t* in case the matrixpowerskernel is used |
d_y | magmaDoubleComplex* input/output vector y |
magma_int_t magma_zgesellcmv | ( | magma_trans_t | transA, |
magma_int_t | m, | ||
magma_int_t | n, | ||
magma_int_t | blocksize, | ||
magma_int_t | slices, | ||
magma_int_t | alignment, | ||
magmaDoubleComplex | alpha, | ||
magmaDoubleComplex * | d_val, | ||
magma_index_t * | d_colind, | ||
magma_index_t * | d_rowptr, | ||
magmaDoubleComplex * | d_x, | ||
magmaDoubleComplex | beta, | ||
magmaDoubleComplex * | d_y | ||
) |
This routine computes y = alpha * A^t * x + beta * y on the GPU.
Input format is SELLC/SELLP.
transA | magma_trans_t transposition parameter for A |
m | magma_int_t number of rows in A |
n | magma_int_t number of columns in A |
blocksize | magma_int_t number of rows in one ELL-slice |
slices | magma_int_t number of slices in matrix |
alignment | magma_int_t number of threads assigned to one row (=1) |
alpha | magmaDoubleComplex scalar multiplier |
d_val | magmaDoubleComplex* array containing values of A in SELLC/P |
d_colind | magma_int_t* columnindices of A in SELLC/P |
d_rowptr | magma_int_t* rowpointer of SELLP |
d_x | magmaDoubleComplex* input vector x |
beta | magmaDoubleComplex scalar multiplier |
d_y | magmaDoubleComplex* input/output vector y |
magma_int_t magma_zgesellpmv | ( | magma_trans_t | transA, |
magma_int_t | m, | ||
magma_int_t | n, | ||
magma_int_t | blocksize, | ||
magma_int_t | slices, | ||
magma_int_t | alignment, | ||
magmaDoubleComplex | alpha, | ||
magmaDoubleComplex * | d_val, | ||
magma_index_t * | d_colind, | ||
magma_index_t * | d_rowptr, | ||
magmaDoubleComplex * | d_x, | ||
magmaDoubleComplex | beta, | ||
magmaDoubleComplex * | d_y | ||
) |
This routine computes y = alpha * A^t * x + beta * y on the GPU.
Input format is SELLP.
transA | magma_trans_t transposition parameter for A |
m | magma_int_t number of rows in A |
n | magma_int_t number of columns in A |
blocksize | magma_int_t number of rows in one ELL-slice |
slices | magma_int_t number of slices in matrix |
alignment | magma_int_t number of threads assigned to one row |
alpha | magmaDoubleComplex scalar multiplier |
d_val | magmaDoubleComplex* array containing values of A in SELLP |
d_colind | magma_int_t* columnindices of A in SELLP |
d_rowptr | magma_int_t* rowpointer of SELLP |
d_x | magmaDoubleComplex* input vector x |
beta | magmaDoubleComplex scalar multiplier |
d_y | magmaDoubleComplex* input/output vector y |
magma_int_t magma_zmdotc | ( | int | n, |
int | k, | ||
magmaDoubleComplex * | v, | ||
magmaDoubleComplex * | r, | ||
magmaDoubleComplex * | d1, | ||
magmaDoubleComplex * | d2, | ||
magmaDoubleComplex * | skp | ||
) |
Computes the scalar product of a set of vectors v_i such that.
skp = ( <v_0,r>, <v_1,r>, .. )
Returns the vector skp.
n | int length of v_i and r |
k | int vectors v_i |
v | magmaDoubleComplex* v = (v_0 .. v_i.. v_k) |
r | magmaDoubleComplex* r |
d1 | magmaDoubleComplex* workspace |
d2 | magmaDoubleComplex* workspace |
skp | magmaDoubleComplex* vector[k] of scalar products (<v_i,r>...) |
magma_int_t magma_zmgecsrmv | ( | magma_trans_t | transA, |
magma_int_t | m, | ||
magma_int_t | n, | ||
magma_int_t | num_vecs, | ||
magmaDoubleComplex | alpha, | ||
magmaDoubleComplex * | d_val, | ||
magma_index_t * | d_rowptr, | ||
magma_index_t * | d_colind, | ||
magmaDoubleComplex * | d_x, | ||
magmaDoubleComplex | beta, | ||
magmaDoubleComplex * | d_y | ||
) |
This routine computes Y = alpha * A * X + beta * Y for X and Y sets of num_vec vectors on the GPU.
Input format is CSR.
transA | magma_trans_t transposition parameter for A |
m | magma_int_t number of rows in A |
n | magma_int_t number of columns in A |
num_vecs | mama_int_t number of vectors |
alpha | magmaDoubleComplex scalar multiplier |
d_val | magmaDoubleComplex* array containing values of A in CSR |
d_rowptr | magma_int_t* rowpointer of A in CSR |
d_colind | magma_int_t* columnindices of A in CSR |
d_x | magmaDoubleComplex* input vector x |
beta | magmaDoubleComplex scalar multiplier |
d_y | magmaDoubleComplex* input/output vector y |
magma_int_t magma_zmgeellmv | ( | magma_trans_t | transA, |
magma_int_t | m, | ||
magma_int_t | n, | ||
magma_int_t | num_vecs, | ||
magma_int_t | nnz_per_row, | ||
magmaDoubleComplex | alpha, | ||
magmaDoubleComplex * | d_val, | ||
magma_index_t * | d_colind, | ||
magmaDoubleComplex * | d_x, | ||
magmaDoubleComplex | beta, | ||
magmaDoubleComplex * | d_y | ||
) |
This routine computes Y = alpha * A * X + beta * Y for X and Y sets of num_vec vectors on the GPU.
Input format is ELLPACK.
transA | magma_trans_t transposition parameter for A |
m | magma_int_t number of rows in A |
n | magma_int_t number of columns in A |
num_vecs | mama_int_t number of vectors |
nnz_per_row | magma_int_t number of elements in the longest row |
alpha | magmaDoubleComplex scalar multiplier |
d_val | magmaDoubleComplex* array containing values of A in ELLPACK |
d_colind | magma_int_t* columnindices of A in ELLPACK |
d_x | magmaDoubleComplex* input vector x |
beta | magmaDoubleComplex scalar multiplier |
d_y | magmaDoubleComplex* input/output vector y |
magma_int_t magma_zmgeelltmv | ( | magma_trans_t | transA, |
magma_int_t | m, | ||
magma_int_t | n, | ||
magma_int_t | num_vecs, | ||
magma_int_t | nnz_per_row, | ||
magmaDoubleComplex | alpha, | ||
magmaDoubleComplex * | d_val, | ||
magma_index_t * | d_colind, | ||
magmaDoubleComplex * | d_x, | ||
magmaDoubleComplex | beta, | ||
magmaDoubleComplex * | d_y | ||
) |
This routine computes Y = alpha * A * X + beta * Y for X and Y sets of num_vec vectors on the GPU.
Input format is ELL.
transA | magma_trans_t transposition parameter for A |
m | magma_int_t number of rows in A |
n | magma_int_t number of columns in A |
num_vecs | mama_int_t number of vectors |
nnz_per_row | magma_int_t number of elements in the longest row |
alpha | magmaDoubleComplex scalar multiplier |
d_val | magmaDoubleComplex* array containing values of A in ELL |
d_colind | magma_int_t* columnindices of A in ELL |
d_x | magmaDoubleComplex* input vector x |
beta | magmaDoubleComplex scalar multiplier |
d_y | magmaDoubleComplex* input/output vector y |
magma_int_t magma_zmgesellpmv | ( | magma_trans_t | transA, |
magma_int_t | m, | ||
magma_int_t | n, | ||
magma_int_t | num_vecs, | ||
magma_int_t | blocksize, | ||
magma_int_t | slices, | ||
magma_int_t | alignment, | ||
magmaDoubleComplex | alpha, | ||
magmaDoubleComplex * | d_val, | ||
magma_index_t * | d_colind, | ||
magma_index_t * | d_rowptr, | ||
magmaDoubleComplex * | d_x, | ||
magmaDoubleComplex | beta, | ||
magmaDoubleComplex * | d_y | ||
) |
This routine computes Y = alpha * A^t * X + beta * Y on the GPU.
Input format is SELLP. Note, that the input format for X is row-major while the output format for Y is column major!
transA | magma_trans_t transpose A? |
m | magma_int_t number of rows in A |
n | magma_int_t number of columns in A |
num_vecs | magma_int_t number of columns in X and Y |
blocksize | magma_int_t number of rows in one ELL-slice |
slices | magma_int_t number of slices in matrix |
alignment | magma_int_t number of threads assigned to one row |
alpha | magmaDoubleComplex scalar multiplier |
d_val | magmaDoubleComplex* array containing values of A in SELLP |
d_colind | magma_int_t* columnindices of A in SELLP |
d_rowptr | magma_int_t* rowpointer of SELLP |
d_x | magmaDoubleComplex* input vector x |
beta | magmaDoubleComplex scalar multiplier |
d_y | magmaDoubleComplex* input/output vector y |