MAGMA 2.10.0
Matrix Algebra for GPU and Multicore Architectures
Loading...
Searching...
No Matches
double-complex precision

Functions

magma_int_t magma_zcustomspmv (magma_int_t m, magma_int_t n, magmaDoubleComplex alpha, magmaDoubleComplex beta, magmaDoubleComplex *x, magmaDoubleComplex *y, magma_queue_t queue)
 This is an interface to any custom sparse matrix vector product.
 
magma_int_t magma_z_spmv (magmaDoubleComplex alpha, magma_z_matrix A, magma_z_matrix x, magmaDoubleComplex beta, magma_z_matrix y, magma_queue_t queue)
 For a given input matrix A and vectors x, y and scalars alpha, beta the wrapper determines the suitable SpMV computing y = alpha * A * x + beta * y.
 
magma_int_t magma_z_spmv_shift (magmaDoubleComplex alpha, magma_z_matrix A, magmaDoubleComplex lambda, magma_z_matrix x, magmaDoubleComplex beta, magma_int_t offset, magma_int_t blocksize, magma_index_t *add_rows, magma_z_matrix y, magma_queue_t queue)
 For a given input matrix A and vectors x, y and scalars alpha, beta the wrapper determines the suitable SpMV computing y = alpha * ( A - lambda I ) * x + beta * y.
 
magma_int_t magma_z_spmm (magmaDoubleComplex alpha, magma_z_matrix A, magma_z_matrix B, magma_z_matrix *C, magma_queue_t queue)
 For a given input matrix A and B and scalar alpha, the wrapper determines the suitable SpMV computing C = alpha * A * B.
 
magma_int_t magma_zcuspaxpy (magmaDoubleComplex *alpha, magma_z_matrix A, magmaDoubleComplex *beta, magma_z_matrix B, magma_z_matrix *AB, magma_queue_t queue)
 This is an interface to the cuSPARSE routine csrgeam computing the sum of two sparse matrices stored in csr format:
 
magma_int_t magma_zcuspmm (magma_z_matrix A, magma_z_matrix B, magma_z_matrix *AB, magma_queue_t queue)
 This is an interface to the cuSPARSE routine csrmm computing the product of two sparse matrices stored in csr format.
 
magma_int_t magma_zge3pt (magma_int_t m, magma_int_t n, magmaDoubleComplex alpha, magmaDoubleComplex beta, magmaDoubleComplex_ptr dx, magmaDoubleComplex_ptr dy, magma_queue_t queue)
 This routine is a 3-pt-stencil operator derived from a FD-scheme in 2D with Dirichlet boundary.
 
magma_int_t magma_zgecsrmv (magma_trans_t transA, magma_int_t m, magma_int_t n, magmaDoubleComplex alpha, magmaDoubleComplex_ptr dval, magmaIndex_ptr drowptr, magmaIndex_ptr dcolind, magmaDoubleComplex_ptr dx, magmaDoubleComplex beta, magmaDoubleComplex_ptr dy, magma_queue_t queue)
 This routine computes y = alpha * A * x + beta * y on the GPU.
 
magma_int_t magma_zgecsrmv_shift (magma_trans_t transA, magma_int_t m, magma_int_t n, magmaDoubleComplex alpha, magmaDoubleComplex lambda, magmaDoubleComplex_ptr dval, magmaIndex_ptr drowptr, magmaIndex_ptr dcolind, magmaDoubleComplex_ptr dx, magmaDoubleComplex beta, magma_int_t offset, magma_int_t blocksize, magma_index_t *addrows, magmaDoubleComplex_ptr dy, magma_queue_t queue)
 This routine computes y = alpha * ( A -lambda I ) * x + beta * y on the GPU.
 
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_ptr dval, magmaIndex_ptr dcolind, magmaDoubleComplex_ptr dx, magmaDoubleComplex beta, magmaDoubleComplex_ptr dy, magma_queue_t queue)
 This routine computes y = alpha * A * x + beta * y on the GPU.
 
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_ptr dval, magmaIndex_ptr dcolind, magmaDoubleComplex_ptr dx, magmaDoubleComplex beta, magma_int_t offset, magma_int_t blocksize, magmaIndex_ptr addrows, magmaDoubleComplex_ptr dy, magma_queue_t queue)
 This routine computes y = alpha *( A - lambda I ) * x + beta * y on the GPU.
 
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_ptr dval, magmaIndex_ptr dcolind, magmaIndex_ptr drowlength, magmaDoubleComplex_ptr dx, magmaDoubleComplex beta, magmaDoubleComplex_ptr dy, magma_int_t alignment, magma_int_t blocksize, magma_queue_t queue)
 This routine computes y = alpha * A * x + beta * y on the GPU.
 
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_ptr dval, magmaIndex_ptr dcolind, magmaDoubleComplex_ptr dx, magmaDoubleComplex beta, magma_int_t offset, magma_int_t blocksize, magmaIndex_ptr addrows, magmaDoubleComplex_ptr dy, magma_queue_t queue)
 This routine computes y = alpha *( A - lambda I ) * x + beta * y on the GPU.
 
magma_int_t magma_zmdotc (magma_int_t n, magma_int_t k, magmaDoubleComplex_ptr v, magmaDoubleComplex_ptr r, magmaDoubleComplex_ptr d1, magmaDoubleComplex_ptr d2, magmaDoubleComplex_ptr skp, magma_queue_t queue)
 Computes the scalar product of a set of vectors v_i such that.
 
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_ptr dval, magmaIndex_ptr dcolind, magmaIndex_ptr drowptr, magmaDoubleComplex_ptr dx, magmaDoubleComplex beta, magmaDoubleComplex_ptr dy, magma_queue_t queue)
 This routine computes y = alpha * A^t * x + beta * y on the GPU.
 
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_ptr dval, magmaIndex_ptr dcolind, magmaIndex_ptr drowptr, magmaDoubleComplex_ptr dx, magmaDoubleComplex beta, magmaDoubleComplex_ptr dy, magma_queue_t queue)
 This routine computes y = alpha * A^t * x + beta * y on the GPU.
 
magma_int_t magma_zmdotc_shfl (magma_int_t n, magma_int_t k, magmaDoubleComplex_ptr v, magmaDoubleComplex_ptr r, magmaDoubleComplex_ptr d1, magmaDoubleComplex_ptr d2, magmaDoubleComplex_ptr skp, magma_queue_t queue)
 Computes the scalar product of a set of vectors v_i such that.
 
magma_int_t magma_zmdotc4 (magma_int_t n, magmaDoubleComplex_ptr v0, magmaDoubleComplex_ptr w0, magmaDoubleComplex_ptr v1, magmaDoubleComplex_ptr w1, magmaDoubleComplex_ptr v2, magmaDoubleComplex_ptr w2, magmaDoubleComplex_ptr v3, magmaDoubleComplex_ptr w3, magmaDoubleComplex_ptr d1, magmaDoubleComplex_ptr d2, magmaDoubleComplex_ptr skp, magma_queue_t queue)
 Computes the scalar product of a set of 4 vectors such that.
 
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_ptr dval, magmaIndex_ptr drowptr, magmaIndex_ptr dcolind, magmaDoubleComplex_ptr dx, magmaDoubleComplex beta, magmaDoubleComplex_ptr dy, magma_queue_t queue)
 This routine computes Y = alpha * A * X + beta * Y for X and Y sets of num_vec vectors on the GPU.
 
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_ptr dval, magmaIndex_ptr dcolind, magmaDoubleComplex_ptr dx, magmaDoubleComplex beta, magmaDoubleComplex_ptr dy, magma_queue_t queue)
 This routine computes Y = alpha * A * X + beta * Y for X and Y sets of num_vec vectors on the GPU.
 
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_ptr dval, magmaIndex_ptr dcolind, magmaDoubleComplex_ptr dx, magmaDoubleComplex beta, magmaDoubleComplex_ptr dy, magma_queue_t queue)
 This routine computes Y = alpha * A * X + beta * Y for X and Y sets of num_vec vectors on the GPU.
 
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_ptr dval, magmaIndex_ptr dcolind, magmaIndex_ptr drowptr, magmaDoubleComplex_ptr dx, magmaDoubleComplex beta, magmaDoubleComplex_ptr dy, magma_queue_t queue)
 This routine computes Y = alpha * A^t * X + beta * Y on the GPU.
 

Detailed Description

Function Documentation

◆ magma_zcustomspmv()

magma_int_t magma_zcustomspmv ( magma_int_t m,
magma_int_t n,
magmaDoubleComplex alpha,
magmaDoubleComplex beta,
magmaDoubleComplex * x,
magmaDoubleComplex * y,
magma_queue_t queue )

This is an interface to any custom sparse matrix vector product.

It should compute y = alpha*FUNCTION(x) + beta*y The vectors are located on the device, the scalars on the CPU.

Parameters
[in]mmagma_int_t number of rows
[in]nmagma_int_t number of columns
[in]alphamagmaDoubleComplex scalar alpha
[in]xmagmaDoubleComplex * input vector x
[in]betamagmaDoubleComplex scalar beta
[out]ymagmaDoubleComplex * output vector y
[in]queuemagma_queue_t Queue to execute in.

◆ magma_z_spmv()

magma_int_t magma_z_spmv ( magmaDoubleComplex alpha,
magma_z_matrix A,
magma_z_matrix x,
magmaDoubleComplex beta,
magma_z_matrix y,
magma_queue_t queue )

For a given input matrix A and vectors x, y and scalars alpha, beta the wrapper determines the suitable SpMV computing y = alpha * A * x + beta * y.

Parameters
[in]alphamagmaDoubleComplex scalar alpha
[in]Amagma_z_matrix sparse matrix A
[in]xmagma_z_matrix input vector x
[in]betamagmaDoubleComplex scalar beta
[out]ymagma_z_matrix output vector y
[in]queuemagma_queue_t Queue to execute in.

◆ magma_z_spmv_shift()

magma_int_t magma_z_spmv_shift ( magmaDoubleComplex alpha,
magma_z_matrix A,
magmaDoubleComplex lambda,
magma_z_matrix x,
magmaDoubleComplex beta,
magma_int_t offset,
magma_int_t blocksize,
magma_index_t * add_rows,
magma_z_matrix y,
magma_queue_t queue )

For a given input matrix A and vectors x, y and scalars alpha, beta the wrapper determines the suitable SpMV computing y = alpha * ( A - lambda I ) * x + beta * y.

Parameters
alphamagmaDoubleComplex scalar alpha
Amagma_z_matrix sparse matrix A
lambdamagmaDoubleComplex scalar lambda
xmagma_z_matrix input vector x
betamagmaDoubleComplex scalar beta
offsetmagma_int_t in case not the main diagonal is scaled
blocksizemagma_int_t in case of processing multiple vectors
add_rowsmagma_int_t* in case the matrixpowerskernel is used
ymagma_z_matrix output vector y
[in]queuemagma_queue_t Queue to execute in.

◆ magma_z_spmm()

magma_int_t magma_z_spmm ( magmaDoubleComplex alpha,
magma_z_matrix A,
magma_z_matrix B,
magma_z_matrix * C,
magma_queue_t queue )

For a given input matrix A and B and scalar alpha, the wrapper determines the suitable SpMV computing C = alpha * A * B.

Parameters
[in]alphamagmaDoubleComplex scalar alpha
[in]Amagma_z_matrix sparse matrix A
[in]Bmagma_z_matrix sparse matrix C
[out]Cmagma_z_matrix * outpur sparse matrix C
[in]queuemagma_queue_t Queue to execute in.

◆ magma_zcuspaxpy()

magma_int_t magma_zcuspaxpy ( magmaDoubleComplex * alpha,
magma_z_matrix A,
magmaDoubleComplex * beta,
magma_z_matrix B,
magma_z_matrix * AB,
magma_queue_t queue )

This is an interface to the cuSPARSE routine csrgeam computing the sum of two sparse matrices stored in csr format:

C = alpha * A + beta * B
Parameters
[in]alphamagmaDoubleComplex* scalar
[in]Amagma_z_matrix input matrix
[in]betamagmaDoubleComplex* scalar
[in]Bmagma_z_matrix input matrix
[out]ABmagma_z_matrix* output matrix AB = alpha * A + beta * B
[in]queuemagma_queue_t Queue to execute in.

◆ magma_zcuspmm()

magma_int_t magma_zcuspmm ( magma_z_matrix A,
magma_z_matrix B,
magma_z_matrix * AB,
magma_queue_t queue )

This is an interface to the cuSPARSE routine csrmm computing the product of two sparse matrices stored in csr format.

Parameters
[in]Amagma_z_matrix input matrix
[in]Bmagma_z_matrix input matrix
[out]ABmagma_z_matrix* output matrix AB = A * B
[in]queuemagma_queue_t Queue to execute in.

◆ magma_zge3pt()

magma_int_t magma_zge3pt ( magma_int_t m,
magma_int_t n,
magmaDoubleComplex alpha,
magmaDoubleComplex beta,
magmaDoubleComplex_ptr dx,
magmaDoubleComplex_ptr dy,
magma_queue_t queue )

This routine is a 3-pt-stencil operator derived from a FD-scheme in 2D with Dirichlet boundary.

It computes y_i = -2 x_i + x_{i-1} + x_{i+1}

Parameters
[in]mmagma_int_t number of rows in x and y
[in]nmagma_int_t number of columns in x and y
[in]alphamagmaDoubleComplex scalar multiplier
[in]betamagmaDoubleComplex scalar multiplier
[in]dxmagmaDoubleComplex_ptr input vector x
[out]dymagmaDoubleComplex_ptr output vector y
[in]queuemagma_queue_t Queue to execute in.

◆ magma_zgecsrmv()

magma_int_t magma_zgecsrmv ( magma_trans_t transA,
magma_int_t m,
magma_int_t n,
magmaDoubleComplex alpha,
magmaDoubleComplex_ptr dval,
magmaIndex_ptr drowptr,
magmaIndex_ptr dcolind,
magmaDoubleComplex_ptr dx,
magmaDoubleComplex beta,
magmaDoubleComplex_ptr dy,
magma_queue_t queue )

This routine computes y = alpha * A * x + beta * y on the GPU.

The input format is CSR (val, row, col).

Parameters
[in]transAmagma_trans_t transposition parameter for A
[in]mmagma_int_t number of rows in A
[in]nmagma_int_t number of columns in A
[in]alphamagmaDoubleComplex scalar multiplier
[in]dvalmagmaDoubleComplex_ptr array containing values of A in CSR
[in]drowptrmagmaIndex_ptr rowpointer of A in CSR
[in]dcolindmagmaIndex_ptr columnindices of A in CSR
[in]dxmagmaDoubleComplex_ptr input vector x
[in]betamagmaDoubleComplex scalar multiplier
[out]dymagmaDoubleComplex_ptr input/output vector y
[in]queuemagma_queue_t Queue to execute in.

◆ magma_zgecsrmv_shift()

magma_int_t magma_zgecsrmv_shift ( magma_trans_t transA,
magma_int_t m,
magma_int_t n,
magmaDoubleComplex alpha,
magmaDoubleComplex lambda,
magmaDoubleComplex_ptr dval,
magmaIndex_ptr drowptr,
magmaIndex_ptr dcolind,
magmaDoubleComplex_ptr dx,
magmaDoubleComplex beta,
magma_int_t offset,
magma_int_t blocksize,
magma_index_t * addrows,
magmaDoubleComplex_ptr dy,
magma_queue_t queue )

This routine computes y = alpha * ( A -lambda I ) * x + beta * y on the GPU.

It is a shifted version of the CSR-SpMV.

Parameters
[in]transAmagma_trans_t transposition parameter for A
[in]mmagma_int_t number of rows in A
[in]nmagma_int_t number of columns in A
[in]alphamagmaDoubleComplex scalar multiplier
[in]lambdamagmaDoubleComplex scalar multiplier
[in]dvalmagmaDoubleComplex_ptr array containing values of A in CSR
[in]drowptrmagmaIndex_ptr rowpointer of A in CSR
[in]dcolindmagmaIndex_ptr columnindices of A in CSR
[in]dxmagmaDoubleComplex_ptr input vector x
[in]betamagmaDoubleComplex scalar multiplier
[in]offsetmagma_int_t in case not the main diagonal is scaled
[in]blocksizemagma_int_t in case of processing multiple vectors
[in]addrowsmagmaIndex_ptr in case the matrixpowerskernel is used
[out]dymagmaDoubleComplex_ptr output vector y
[in]queuemagma_queue_t Queue to execute in.

◆ magma_zgeellmv()

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_ptr dval,
magmaIndex_ptr dcolind,
magmaDoubleComplex_ptr dx,
magmaDoubleComplex beta,
magmaDoubleComplex_ptr dy,
magma_queue_t queue )

This routine computes y = alpha * A * x + beta * y on the GPU.

Input format is ELLPACK.

Parameters
[in]transAmagma_trans_t transposition parameter for A
[in]mmagma_int_t number of rows in A
[in]nmagma_int_t number of columns in A
[in]nnz_per_rowmagma_int_t number of elements in the longest row
[in]alphamagmaDoubleComplex scalar multiplier
[in]dvalmagmaDoubleComplex_ptr array containing values of A in ELLPACK
[in]dcolindmagmaIndex_ptr columnindices of A in ELLPACK
[in]dxmagmaDoubleComplex_ptr input vector x
[in]betamagmaDoubleComplex scalar multiplier
[out]dymagmaDoubleComplex_ptr input/output vector y
[in]queuemagma_queue_t Queue to execute in.

◆ magma_zgeellmv_shift()

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_ptr dval,
magmaIndex_ptr dcolind,
magmaDoubleComplex_ptr dx,
magmaDoubleComplex beta,
magma_int_t offset,
magma_int_t blocksize,
magmaIndex_ptr addrows,
magmaDoubleComplex_ptr dy,
magma_queue_t queue )

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.

Parameters
[in]transAmagma_trans_t transposition parameter for A
[in]mmagma_int_t number of rows in A
[in]nmagma_int_t number of columns in A
[in]nnz_per_rowmagma_int_t number of elements in the longest row
[in]alphamagmaDoubleComplex scalar multiplier
[in]lambdamagmaDoubleComplex scalar multiplier
[in]dvalmagmaDoubleComplex_ptr array containing values of A in ELLPACK
[in]dcolindmagmaIndex_ptr columnindices of A in ELLPACK
[in]dxmagmaDoubleComplex_ptr input vector x
[in]betamagmaDoubleComplex scalar multiplier
[in]offsetmagma_int_t in case not the main diagonal is scaled
[in]blocksizemagma_int_t in case of processing multiple vectors
[in]addrowsmagmaIndex_ptr in case the matrixpowerskernel is used
[out]dymagmaDoubleComplex_ptr input/output vector y
[in]queuemagma_queue_t Queue to execute in.

◆ magma_zgeellrtmv()

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_ptr dval,
magmaIndex_ptr dcolind,
magmaIndex_ptr drowlength,
magmaDoubleComplex_ptr dx,
magmaDoubleComplex beta,
magmaDoubleComplex_ptr dy,
magma_int_t alignment,
magma_int_t blocksize,
magma_queue_t queue )

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.

Parameters
[in]transAmagma_trans_t transposition parameter for A
[in]mmagma_int_t number of rows
[in]nmagma_int_t number of columns
[in]nnz_per_rowmagma_int_t max number of nonzeros in a row
[in]alphamagmaDoubleComplex scalar alpha
[in]dvalmagmaDoubleComplex_ptr val array
[in]dcolindmagmaIndex_ptr col indices
[in]drowlengthmagmaIndex_ptr number of elements in each row
[in]dxmagmaDoubleComplex_ptr input vector x
[in]betamagmaDoubleComplex scalar beta
[out]dymagmaDoubleComplex_ptr output vector y
[in]blocksizemagma_int_t threads per block
[in]alignmentmagma_int_t threads assigned to each row
[in]queuemagma_queue_t Queue to execute in.

◆ magma_zgeelltmv_shift()

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_ptr dval,
magmaIndex_ptr dcolind,
magmaDoubleComplex_ptr dx,
magmaDoubleComplex beta,
magma_int_t offset,
magma_int_t blocksize,
magmaIndex_ptr addrows,
magmaDoubleComplex_ptr dy,
magma_queue_t queue )

This routine computes y = alpha *( A - lambda I ) * x + beta * y on the GPU.

Input format is ELL.

Parameters
[in]transAmagma_trans_t transposition parameter for A
[in]mmagma_int_t number of rows in A
[in]nmagma_int_t number of columns in A
[in]nnz_per_rowmagma_int_t number of elements in the longest row
[in]alphamagmaDoubleComplex scalar multiplier
[in]lambdamagmaDoubleComplex scalar multiplier
[in]dvalmagmaDoubleComplex_ptr array containing values of A in ELL
[in]dcolindmagmaIndex_ptr columnindices of A in ELL
[in]dxmagmaDoubleComplex_ptr input vector x
[in]betamagmaDoubleComplex scalar multiplier
[in]offsetmagma_int_t in case not the main diagonal is scaled
[in]blocksizemagma_int_t in case of processing multiple vectors
[in]addrowsmagmaIndex_ptr in case the matrixpowerskernel is used
[out]dymagmaDoubleComplex_ptr input/output vector y
[in]queuemagma_queue_t Queue to execute in.

◆ magma_zmdotc()

magma_int_t magma_zmdotc ( magma_int_t n,
magma_int_t k,
magmaDoubleComplex_ptr v,
magmaDoubleComplex_ptr r,
magmaDoubleComplex_ptr d1,
magmaDoubleComplex_ptr d2,
magmaDoubleComplex_ptr skp,
magma_queue_t queue )

Computes the scalar product of a set of vectors v_i such that.

skp = ( <v_0,r>, <v_1,r>, .. )

Returns the vector skp.

Parameters
[in]nint length of v_i and r
[in]kint

vectors v_i

Parameters
[in]vmagmaDoubleComplex_ptr v = (v_0 .. v_i.. v_k)
[in]rmagmaDoubleComplex_ptr r
[in]d1magmaDoubleComplex_ptr workspace
[in]d2magmaDoubleComplex_ptr workspace
[out]skpmagmaDoubleComplex_ptr vector[k] of scalar products (<v_i,r>...)
[in]queuemagma_queue_t Queue to execute in.

◆ magma_zgesellpmv()

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_ptr dval,
magmaIndex_ptr dcolind,
magmaIndex_ptr drowptr,
magmaDoubleComplex_ptr dx,
magmaDoubleComplex beta,
magmaDoubleComplex_ptr dy,
magma_queue_t queue )

This routine computes y = alpha * A^t * x + beta * y on the GPU.

Input format is SELLP.

Parameters
[in]transAmagma_trans_t transposition parameter for A
[in]mmagma_int_t number of rows in A
[in]nmagma_int_t number of columns in A
[in]blocksizemagma_int_t number of rows in one ELL-slice
[in]slicesmagma_int_t number of slices in matrix
[in]alignmentmagma_int_t number of threads assigned to one row
[in]alphamagmaDoubleComplex scalar multiplier
[in]dvalmagmaDoubleComplex_ptr array containing values of A in SELLP
[in]dcolindmagmaIndex_ptr columnindices of A in SELLP
[in]drowptrmagmaIndex_ptr rowpointer of SELLP
[in]dxmagmaDoubleComplex_ptr input vector x
[in]betamagmaDoubleComplex scalar multiplier
[out]dymagmaDoubleComplex_ptr input/output vector y
[in]queuemagma_queue_t Queue to execute in.

◆ magma_zgesellcmv()

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_ptr dval,
magmaIndex_ptr dcolind,
magmaIndex_ptr drowptr,
magmaDoubleComplex_ptr dx,
magmaDoubleComplex beta,
magmaDoubleComplex_ptr dy,
magma_queue_t queue )

This routine computes y = alpha * A^t * x + beta * y on the GPU.

Input format is SELLC/SELLP.

Parameters
[in]transAmagma_trans_t transposition parameter for A
[in]mmagma_int_t number of rows in A
[in]nmagma_int_t number of columns in A
[in]blocksizemagma_int_t number of rows in one ELL-slice
[in]slicesmagma_int_t number of slices in matrix
[in]alignmentmagma_int_t number of threads assigned to one row (=1)
[in]alphamagmaDoubleComplex scalar multiplier
[in]dvalmagmaDoubleComplex_ptr array containing values of A in SELLC/P
[in]dcolindmagmaIndex_ptr columnindices of A in SELLC/P
[in]drowptrmagmaIndex_ptr rowpointer of SELLP
[in]dxmagmaDoubleComplex_ptr input vector x
[in]betamagmaDoubleComplex scalar multiplier
[out]dymagmaDoubleComplex_ptr input/output vector y
[in]queuemagma_queue_t Queue to execute in.

◆ magma_zmdotc_shfl()

magma_int_t magma_zmdotc_shfl ( magma_int_t n,
magma_int_t k,
magmaDoubleComplex_ptr v,
magmaDoubleComplex_ptr r,
magmaDoubleComplex_ptr d1,
magmaDoubleComplex_ptr d2,
magmaDoubleComplex_ptr skp,
magma_queue_t queue )

Computes the scalar product of a set of vectors v_i such that.

skp = ( <v_0,r>, <v_1,r>, .. )

Returns the vector skp.

Parameters
[in]nint length of v_i and r
[in]kint

vectors v_i

Parameters
[in]vmagmaDoubleComplex_ptr v = (v_0 .. v_i.. v_k)
[in]rmagmaDoubleComplex_ptr r
[in]d1magmaDoubleComplex_ptr workspace
[in]d2magmaDoubleComplex_ptr workspace
[out]skpmagmaDoubleComplex_ptr vector[k] of scalar products (<v_i,r>...)
[in]queuemagma_queue_t Queue to execute in.

◆ magma_zmdotc4()

magma_int_t magma_zmdotc4 ( magma_int_t n,
magmaDoubleComplex_ptr v0,
magmaDoubleComplex_ptr w0,
magmaDoubleComplex_ptr v1,
magmaDoubleComplex_ptr w1,
magmaDoubleComplex_ptr v2,
magmaDoubleComplex_ptr w2,
magmaDoubleComplex_ptr v3,
magmaDoubleComplex_ptr w3,
magmaDoubleComplex_ptr d1,
magmaDoubleComplex_ptr d2,
magmaDoubleComplex_ptr skp,
magma_queue_t queue )

Computes the scalar product of a set of 4 vectors such that.

skp[0,1,2,3] = [ <v_0,w_0>, <v_1,w_1>, <v_2,w_2>, <v3,w_3> ]

Returns the vector skp. In case there are less dot products required, an easy workaround is given by doubling input.

Parameters
[in]nint length of v_i and w_i
[in]v0magmaDoubleComplex_ptr
input vector
[in]w0magmaDoubleComplex_ptr
input vector
[in]v1magmaDoubleComplex_ptr
input vector
[in]w1magmaDoubleComplex_ptr
input vector
[in]v2magmaDoubleComplex_ptr
input vector
[in]w2magmaDoubleComplex_ptr
input vector
[in]v3magmaDoubleComplex_ptr
input vector
[in]w3magmaDoubleComplex_ptr
input vector
[in]d1magmaDoubleComplex_ptr workspace
[in]d2magmaDoubleComplex_ptr workspace
[out]skpmagmaDoubleComplex_ptr vector[4] of scalar products [<v_i, w_i>] This vector is located on the host
[in]queuemagma_queue_t Queue to execute in.

◆ magma_zmgecsrmv()

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_ptr dval,
magmaIndex_ptr drowptr,
magmaIndex_ptr dcolind,
magmaDoubleComplex_ptr dx,
magmaDoubleComplex beta,
magmaDoubleComplex_ptr dy,
magma_queue_t queue )

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.

Parameters
[in]transAmagma_trans_t transposition parameter for A
[in]mmagma_int_t number of rows in A
[in]nmagma_int_t number of columns in A
[in]num_vecsmama_int_t number of vectors
[in]alphamagmaDoubleComplex scalar multiplier
[in]dvalmagmaDoubleComplex_ptr array containing values of A in CSR
[in]drowptrmagmaIndex_ptr rowpointer of A in CSR
[in]dcolindmagmaIndex_ptr columnindices of A in CSR
[in]dxmagmaDoubleComplex_ptr input vector x
[in]betamagmaDoubleComplex scalar multiplier
[out]dymagmaDoubleComplex_ptr input/output vector y
[in]queuemagma_queue_t Queue to execute in.

◆ magma_zmgeellmv()

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_ptr dval,
magmaIndex_ptr dcolind,
magmaDoubleComplex_ptr dx,
magmaDoubleComplex beta,
magmaDoubleComplex_ptr dy,
magma_queue_t queue )

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.

Parameters
[in]transAmagma_trans_t transposition parameter for A
[in]mmagma_int_t number of rows in A
[in]nmagma_int_t number of columns in A
[in]num_vecsmama_int_t number of vectors
[in]nnz_per_rowmagma_int_t number of elements in the longest row
[in]alphamagmaDoubleComplex scalar multiplier
[in]dvalmagmaDoubleComplex_ptr array containing values of A in ELLPACK
[in]dcolindmagmaIndex_ptr columnindices of A in ELLPACK
[in]dxmagmaDoubleComplex_ptr input vector x
[in]betamagmaDoubleComplex scalar multiplier
[out]dymagmaDoubleComplex_ptr input/output vector y
[in]queuemagma_queue_t Queue to execute in.

◆ magma_zmgeelltmv()

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_ptr dval,
magmaIndex_ptr dcolind,
magmaDoubleComplex_ptr dx,
magmaDoubleComplex beta,
magmaDoubleComplex_ptr dy,
magma_queue_t queue )

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.

Parameters
[in]transAmagma_trans_t transposition parameter for A
[in]mmagma_int_t number of rows in A
[in]nmagma_int_t number of columns in A
[in]num_vecsmama_int_t number of vectors
[in]nnz_per_rowmagma_int_t number of elements in the longest row
[in]alphamagmaDoubleComplex scalar multiplier
[in]dvalmagmaDoubleComplex_ptr array containing values of A in ELL
[in]dcolindmagmaIndex_ptr columnindices of A in ELL
[in]dxmagmaDoubleComplex_ptr input vector x
[in]betamagmaDoubleComplex scalar multiplier
[out]dymagmaDoubleComplex_ptr input/output vector y
[in]queuemagma_queue_t Queue to execute in.

◆ magma_zmgesellpmv()

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_ptr dval,
magmaIndex_ptr dcolind,
magmaIndex_ptr drowptr,
magmaDoubleComplex_ptr dx,
magmaDoubleComplex beta,
magmaDoubleComplex_ptr dy,
magma_queue_t queue )

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!

Parameters
[in]transAmagma_trans_t transpose A?
[in]mmagma_int_t number of rows in A
[in]nmagma_int_t number of columns in A
[in]num_vecsmagma_int_t number of columns in X and Y
[in]blocksizemagma_int_t number of rows in one ELL-slice
[in]slicesmagma_int_t number of slices in matrix
[in]alignmentmagma_int_t number of threads assigned to one row
[in]alphamagmaDoubleComplex scalar multiplier
[in]dvalmagmaDoubleComplex_ptr array containing values of A in SELLP
[in]dcolindmagmaIndex_ptr columnindices of A in SELLP
[in]drowptrmagmaIndex_ptr rowpointer of SELLP
[in]dxmagmaDoubleComplex_ptr input vector x
[in]betamagmaDoubleComplex scalar multiplier
[out]dymagmaDoubleComplex_ptr input/output vector y
[in]queuemagma_queue_t Queue to execute in.