public static extern cusparseStatus cusparseZbsrmv(cusparseContext handle,
											cusparseDirection dirA,
											cusparseOperation transA,
											int mb,
											int nb,
											int nnzb,
											ref cuDoubleComplex alpha,
											cusparseMatDescr descrA,
											CUdeviceptr bsrValA,
											CUdeviceptr bsrRowPtrA,
											CUdeviceptr bsrColIndA,
											int blockDim,
											CUdeviceptr x,
											ref cuDoubleComplex beta,
											CUdeviceptr y);
		public static extern cusparseStatus cusparseZcsric0(cusparseContext handle, 
                                              cusparseOperation trans, 
                                              int m,
											  cusparseMatDescr descrA,
											  CUdeviceptr csrValA_ValM,
											/* matrix A values are updated inplace 
											   to be the preconditioner M values */
											  CUdeviceptr csrRowPtrA,
											  CUdeviceptr csrColIndA,
                                              cusparseSolveAnalysisInfo info);
		public static extern cusparseStatus cusparseZcsrgemm(cusparseContext handle,
											  cusparseOperation transA,
											  cusparseOperation transB,
											  int m,
											  int n,
											  int k,
											  cusparseMatDescr descrA,
											  int nnzA,
											  CUdeviceptr csrValA,
											  CUdeviceptr csrRowPtrA,
											  CUdeviceptr csrColIndA,
											  cusparseMatDescr descrB,
											  int nnzB,
											  CUdeviceptr csrValB,
											  CUdeviceptr csrRowPtrB,
											  CUdeviceptr csrColIndB,
											  cusparseMatDescr descrC,
											  CUdeviceptr csrValC,
											  CUdeviceptr csrRowPtrC,
											  CUdeviceptr csrColIndC);
		public static extern cusparseStatus cusparseZcsrsm_solve(cusparseContext handle, cusparseOperation transA, int m, int n, ref cuDoubleComplex alpha, cusparseMatDescr descrA, CUdeviceptr csrValA, CUdeviceptr csrRowPtrA, CUdeviceptr csrColIndA, cusparseSolveAnalysisInfo info, CUdeviceptr x, int ldx, CUdeviceptr y, int ldy);
		public static extern cusparseStatus cusparseZbsrmm(cusparseContext handle,
											cusparseDirection dirA,
											cusparseOperation transA,
											cusparseOperation transB,
											int mb,
											int n,
											int kb,
											int nnzb,
											CUdeviceptr alpha,
											cusparseMatDescr descrA,
											CUdeviceptr bsrValA,
											CUdeviceptr bsrRowPtrA,
											CUdeviceptr bsrColIndA,
											int blockSize,
											CUdeviceptr B,
											int ldb,
											CUdeviceptr beta,
											CUdeviceptr C,
											int ldc);
		public static extern cusparseStatus cusparseCcsrsv_analysis(cusparseContext handle, cusparseOperation transA, int m, int nnz, cusparseMatDescr descrA, CUdeviceptr csrValA, CUdeviceptr csrRowPtrA, CUdeviceptr csrColIndA, cusparseSolveAnalysisInfo info);
		public static extern cusparseStatus cusparseZbsrsv2_bufferSizeExt(cusparseContext handle,
														cusparseDirection dirA,
														cusparseOperation transA,
														int mb,
														int nnzb,
														cusparseMatDescr descrA,
														CUdeviceptr bsrVal,
														CUdeviceptr bsrRowPtr,
														CUdeviceptr bsrColInd,
														int blockDim,
														bsrsv2Info info,
														ref SizeT pBufferSize);
Ejemplo n.º 8
0
 /// <summary>
 /// Performs matrix-matrix operations. A is CSR format matrix and B, C is dense format.
 /// C = alpha * op(A) * B + beta * C
 /// </summary>
 /// <param name="m">number of rows of matrix A; m must be at least zero.</param>
 /// <param name="k">number of columns of matrix A; k must be at least zero.</param>
 /// <param name="n">number of columns of matrices B and C; n must be at least zero.</param>
 /// <param name="nnz">number of non-zero elements of matrix A.</param>
 /// <param name="alpha">scalar multiplier applied to op(A) * B.</param>
 /// <param name="csrValA">array of nnz elements, where nnz is the number of non-zero elements and can be obtained from csrRowA[m] - csrRowA[0].</param>
 /// <param name="csrRowA">array of m+1 index elements.</param>
 /// <param name="csrColA">array of nnz column indices.</param>
 /// <param name="B">array of dimension (ldb, n).</param>
 /// <param name="beta">scalar multiplier applied to C. If beta is zero, C does not have to be a valid input.</param>
 /// <param name="C">array of dimension (ldc, n).</param>
 /// <param name="op">specifies op(A).</param>
 /// <param name="ldb">leading dimension of B.</param>
 /// <param name="ldc">leading dimension of C.</param>
 public void CSRMM(int m, int k, int n, int nnz, ref double alpha, double[] csrValA, int[] csrRowA, int[] csrColA, double[] B, ref double beta, double[] C, cusparseOperation op = cusparseOperation.NonTranspose, int ldb = 0, int ldc = 0)
 {
     CSRMM(m, k, n, nnz, ref alpha, csrValA, csrRowA, csrColA, B, ref beta, C, defaultMatDescr, op, ldb, ldc);
 }
Ejemplo n.º 9
0
 private static extern CUSPARSEStatus cusparseScsrmv_v2(cusparseHandle handle, cusparseOperation transA, int m, int n, int nnz, ref float alpha, cusparseMatDescr descrA, IntPtr csrValA, IntPtr csrRowPtrA, IntPtr csrColIndA, IntPtr x, ref float beta, IntPtr y);
Ejemplo n.º 10
0
 /// <summary>
 /// Performs the solve phase of the solution of a sparse triangular linear system.
 /// op(A) * y = alpha * x
 /// </summary>
 /// <param name="m">specifies the number of rows and columns of matrix A; m must be at least zero.</param>
 /// <param name="alpha">scalar multiplier applied to x.</param>
 /// <param name="csrValA">array of nnz elements, where nnz is the number of non-zero elements and can be obtained from csrRow[m] - csrRow[0].</param>
 /// <param name="csrRowA">array of m+1 index elements.</param>
 /// <param name="csrColA">array of nnz column indices.</param>
 /// <param name="x">vector of m elements.</param>
 /// <param name="y">vector of m elements. updated according to op(A) * y = alpha * x</param>
 /// <param name="op">specifies op(A).</param>
 /// <param name="info">structure that stores the information collected during the analysis phase. It should be passed to the solve phase unchanged.</param>
 /// <param name="descrA">descriptor of matrix A.</param>
 public abstract void CSRSV_SOLVE(int m, ref double alpha, double[] csrValA, int[] csrRowA, int[] csrColA, double[] x, double[] y, cusparseOperation op, cusparseSolveAnalysisInfo info, cusparseMatDescr descrA);
Ejemplo n.º 11
0
 /// <summary>
 /// Performs matrix-matrix operations. A is CSR format matrix and B, C is dense format.
 /// C = alpha * op(A) * B + beta * C
 /// </summary>
 /// <param name="m">number of rows of matrix A; m must be at least zero.</param>
 /// <param name="k">number of columns of matrix A; k must be at least zero.</param>
 /// <param name="n">number of columns of matrices B and C; n must be at least zero.</param>
 /// <param name="nnz">number of non-zero elements of matrix A.</param>
 /// <param name="alpha">scalar multiplier applied to op(A) * B.</param>
 /// <param name="csrValA">array of nnz elements, where nnz is the number of non-zero elements and can be obtained from csrRowA[m] - csrRowA[0].</param>
 /// <param name="csrRowA">array of m+1 index elements.</param>
 /// <param name="csrColA">array of nnz column indices.</param>
 /// <param name="B">array of dimension (ldb, n).</param>
 /// <param name="beta">scalar multiplier applied to C. If beta is zero, C does not have to be a valid input.</param>
 /// <param name="C">array of dimension (ldc, n).</param>
 /// <param name="descrA">descriptor of matrix A.</param>
 /// <param name="op">specifies op(A).</param>
 /// <param name="ldb">leading dimension of B.</param>
 /// <param name="ldc">leading dimension of C.</param>
 public abstract void CSRMM(int m, int k, int n, int nnz, ref double alpha, double[] csrValA, int[] csrRowA, int[] csrColA, double[] B, ref double beta, double[] C, cusparseMatDescr descrA, cusparseOperation op = cusparseOperation.NonTranspose, int ldb = 0, int ldc = 0);
Ejemplo n.º 12
0
 /// <summary>
 /// Performs the analysis phase of the solution of a sparse triangular linear system.
 /// op(A) * y = alpha * x
 /// </summary>
 /// <param name="m">specifies the number of rows and columns of matrix A; m must be at least zero.</param>
 /// <param name="nnz">number of non-zero elements of matrix A.</param>
 /// <param name="csrValA">array of nnz elements, where nnz is the number of non-zero elements and can be obtained from csrRow[m] - csrRow[0].</param>
 /// <param name="csrRowA">array of m+1 index elements.</param>
 /// <param name="csrColA">array of nnz column indices.</param>
 /// <param name="op">specifies op(A).</param>
 /// <param name="info">structure that stores the information collected during the analysis phase. It should be passed to the solve phase unchanged.</param>
 /// <param name="descrA">descriptor of matrix A.</param>
 public abstract void CSRSV_ANALYSIS(int m, int nnz, double[] csrValA, int[] csrRowA, int[] csrColA, cusparseOperation op, cusparseSolveAnalysisInfo info, cusparseMatDescr descrA);
Ejemplo n.º 13
0
        public override void CSRMM(int m, int k, int n, int nnz, ref double alpha, double[] csrValA, int[] csrRowA, int[] csrColA, double[] B, ref double beta, double[] C, cusparseMatDescr descrA, cusparseOperation op = cusparseOperation.NonTranspose, int ldb = 0, int ldc = 0)
        {
            if (op == cusparseOperation.NonTranspose)
            {
                ldb = (ldb == 0 ? k : ldb);
                ldc = (ldc == 0 ? m : ldc);
            }
            else
            {
                ldb = (ldb == 0 ? m : ldb);
                ldc = (ldc == 0 ? k : ldc);
            }

            CUdeviceptr ptrcsrv = GetDeviceMemory(csrValA);
            CUdeviceptr ptrcsrr = GetDeviceMemory(csrRowA);
            CUdeviceptr ptrcsrc = GetDeviceMemory(csrColA);

            CUdeviceptr ptrb = GetDeviceMemory(B);
            CUdeviceptr ptrc = GetDeviceMemory(C);

            LastStatus = _driver.CusparseDcsrmm(_sparse, op, m, n, k, nnz, ref alpha, descrA, ptrcsrv.Pointer, ptrcsrr.Pointer, ptrcsrc.Pointer, ptrb.Pointer, ldb, ref beta, ptrc.Pointer, ldc);
        }
Ejemplo n.º 14
0
        public override void CSRSV_SOLVE(int m, ref double alpha, double[] csrValA, int[] csrRowA, int[] csrColA, double[] x, double[] y, cusparseOperation op, cusparseSolveAnalysisInfo info, cusparseMatDescr descrA)
        {
            CUdeviceptr ptrcsrv = GetDeviceMemory(csrValA);
            CUdeviceptr ptrcsrr = GetDeviceMemory(csrRowA);
            CUdeviceptr ptrcsrc = GetDeviceMemory(csrColA);
            CUdeviceptr ptrx    = GetDeviceMemory(x);
            CUdeviceptr ptry    = GetDeviceMemory(y);

            LastStatus = _driver.CusparseDcsrsv_solve(_sparse, op, m, ref alpha, descrA, ptrcsrv.Pointer, ptrcsrr.Pointer, ptrcsrc.Pointer, info, ptrx.Pointer, ptry.Pointer);
        }
Ejemplo n.º 15
0
		public static extern cusparseStatus cusparseZbsrxmv(cusparseContext handle,
											cusparseDirection dirA,
											cusparseOperation transA,
											int sizeOfMask,
											int mb,
											int nb,
											int nnzb,
											CUdeviceptr alpha,
											cusparseMatDescr descrA,
											CUdeviceptr bsrValA,
											CUdeviceptr bsrMaskPtrA,
											CUdeviceptr bsrRowPtrA,
											CUdeviceptr bsrEndPtrA,
											CUdeviceptr bsrColIndA,
											int blockDim,
											CUdeviceptr x,
											CUdeviceptr beta,
											CUdeviceptr y);
Ejemplo n.º 16
0
 private static extern CUSPARSEStatus cusparseDcsrsv_analysis_v2(cusparseHandle handle, cusparseOperation transA, int m, int nnz, cusparseMatDescr descrA, IntPtr csrValA, IntPtr csrRowPtrA, IntPtr csrColIndA, cusparseSolveAnalysisInfo info);
Ejemplo n.º 17
0
		public static extern cusparseStatus cusparseChybmv(cusparseContext handle, cusparseOperation transA, ref cuFloatComplex alpha, cusparseMatDescr descrA, cusparseHybMat hybA, CUdeviceptr x, ref cuFloatComplex beta, CUdeviceptr y);
Ejemplo n.º 18
0
 private static extern CUSPARSEStatus cusparseDcsrsv_solve_v2(cusparseHandle handle, cusparseOperation transA, int m, ref double alpha, cusparseMatDescr descrA, IntPtr csrValA, IntPtr csrRowPtrA, IntPtr csrColIndA, cusparseSolveAnalysisInfo info, IntPtr x, IntPtr y);
Ejemplo n.º 19
0
		public static extern cusparseStatus cusparseZcsrsv2_bufferSizeExt(cusparseContext handle,
														cusparseOperation transA,
														int m,
														int nnz,
														cusparseMatDescr descrA,
														CUdeviceptr csrValA,
														CUdeviceptr csrRowPtrA,
														CUdeviceptr csrColIndA,
														csrsv2Info info,
														ref SizeT pBufferSize);
Ejemplo n.º 20
0
 private static extern CUSPARSEStatus cusparseDcsrmm_v2(cusparseHandle handle, cusparseOperation transA, int m, int n, int k, int nnz, ref double alpha, cusparseMatDescr descrA, IntPtr csrValA, IntPtr csrRowPtrA, IntPtr csrColIndA, IntPtr B, int ldb, ref double beta, IntPtr C, int ldc);
Ejemplo n.º 21
0
        public override void CSRSV_ANALYSIS(int m, int nnz, double[] csrValA, int[] csrRowA, int[] csrColA, cusparseOperation op, cusparseSolveAnalysisInfo info, cusparseMatDescr descrA)
        {
            CUdeviceptr ptrcsrv = GetDeviceMemory(csrValA);
            CUdeviceptr ptrcsrr = GetDeviceMemory(csrRowA);
            CUdeviceptr ptrcsrc = GetDeviceMemory(csrColA);

            LastStatus = _driver.CusparseDcsrsv_analysis(_sparse, op, m, nnz, descrA, ptrcsrv.Pointer, ptrcsrr.Pointer, ptrcsrc.Pointer, info);
        }
Ejemplo n.º 22
0
 public CUSPARSEStatus CusparseDcsrmv(cusparseHandle handle, cusparseOperation transA, int m, int n, int nnz, ref double alpha, cusparseMatDescr descrA, IntPtr csrValA, IntPtr csrRowPtrA, IntPtr csrColIndA, IntPtr x, ref double beta, IntPtr y)
 {
     return(cusparseDcsrmv_v2(handle, transA, m, n, nnz, ref alpha, descrA, csrValA, csrRowPtrA, csrColIndA, x, ref beta, y));
 }
Ejemplo n.º 23
0
		public static extern cusparseStatus cusparseZbsrsm2_bufferSize(cusparseContext handle,
                                                        cusparseDirection dirA,
                                                        cusparseOperation transA,
                                                        cusparseOperation transXY,
                                                        int mb,
                                                        int n,
                                                        int nnzb,
                                                        cusparseMatDescr descrA,
														CUdeviceptr bsrVal,
														CUdeviceptr bsrRowPtr,
														CUdeviceptr bsrColInd,
                                                        int blockSize,
                                                        bsrsm2Info info,
														ref int pBufferSizeInBytes);
Ejemplo n.º 24
0
 public CUSPARSEStatus CusparseDcsrsv_analysis(cusparseHandle handle, cusparseOperation transA, int m, int nnz, cusparseMatDescr descrA, IntPtr csrValA, IntPtr csrRowPtrA, IntPtr csrColIndA, cusparseSolveAnalysisInfo info)
 {
     return(cusparseDcsrsv_analysis_v2(handle, transA, m, nnz, descrA, csrValA, csrRowPtrA, csrColIndA, info));;
 }
Ejemplo n.º 25
0
		public static extern cusparseStatus cusparseZbsrsm2_solve(cusparseContext handle,
												   cusparseDirection dirA,
												   cusparseOperation transA,
												   cusparseOperation transXY,
												   int mb,
												   int n,
												   int nnzb,
												   CUdeviceptr alpha,
												   cusparseMatDescr descrA,
												   CUdeviceptr bsrVal,
												   CUdeviceptr bsrRowPtr,
												   CUdeviceptr bsrColInd,
												   int blockSize,
												   bsrsm2Info info,
												   CUdeviceptr X,
												   int ldx,
												   CUdeviceptr Y,
												   int ldy,
												   cusparseSolvePolicy policy,
												   CUdeviceptr pBuffer);
Ejemplo n.º 26
0
 public CUSPARSEStatus CusparseDcsrsv_solve(cusparseHandle handle, cusparseOperation transA, int m, ref double alpha, cusparseMatDescr descrA, IntPtr csrValA, IntPtr csrRowPtrA, IntPtr csrColIndA, cusparseSolveAnalysisInfo info, IntPtr x, IntPtr y)
 {
     return(cusparseDcsrsv_solve_v2(handle, transA, m, ref alpha, descrA, csrValA, csrRowPtrA, csrColIndA, info, x, y));
 }
Ejemplo n.º 27
0
		public static extern cusparseStatus cusparseXcsrgemmNnz(cusparseContext handle,
												  cusparseOperation transA,
												  cusparseOperation transB,
												  int m,
												  int n,
												  int k,
												  cusparseMatDescr descrA,
												  int nnzA,
												  CUdeviceptr csrRowPtrA,
												  CUdeviceptr csrColIndA,
												  cusparseMatDescr descrB,
												  int nnzB,
												  CUdeviceptr csrRowPtrB,
												  CUdeviceptr csrColIndB,
												  cusparseMatDescr descrC,
												  CUdeviceptr csrRowPtrC,
												  CUdeviceptr nnzTotalDevHostPtr);
Ejemplo n.º 28
0
 public CUSPARSEStatus CusparseDcsrmm(cusparseHandle handle, cusparseOperation transA, int m, int n, int k, int nnz, ref double alpha, cusparseMatDescr descrA, IntPtr csrValA, IntPtr csrRowPtrA, IntPtr csrColIndA, IntPtr B, int ldb, ref double beta, IntPtr C, int ldc)
 {
     return(cusparseDcsrmm_v2(handle, transA, m, n, k, nnz, ref alpha, descrA, csrValA, csrRowPtrA, csrColIndA, B, ldb, ref beta, C, ldc));
 }
Ejemplo n.º 29
0
		public static extern cusparseStatus cusparseZgemvi_bufferSize( cusparseContext handle,
									cusparseOperation transA, int m, int n, int nnz, ref int pBufferSize);
Ejemplo n.º 30
0
		public static extern cusparseStatus cusparseZbsrsv2_solve(cusparseContext handle,
												   cusparseDirection dirA,
												   cusparseOperation transA,
												   int mb,
												   int nnzb,
												   ref cuDoubleComplex alpha,
												   cusparseMatDescr descrA,
												   CUdeviceptr bsrVal,
												   CUdeviceptr bsrRowPtr,
												   CUdeviceptr bsrColInd,
												   int blockDim,
												   bsrsv2Info info,
												   CUdeviceptr x,
												   CUdeviceptr y,
												   cusparseSolvePolicy policy,
												   CUdeviceptr pBuffer);
Ejemplo n.º 31
0
		public static extern cusparseStatus cusparseZgemvi(cusparseContext handle,
									cusparseOperation transA,
									int m,
									int n,
									CUdeviceptr alpha, /* host or device pointer */
									CUdeviceptr A,
									int lda,
									int nnz,
									CUdeviceptr xVal,
									CUdeviceptr xInd,
									CUdeviceptr beta, /* host or device pointer */
									CUdeviceptr y,
									cusparseIndexBase idxBase,
									CUdeviceptr pBuffer);
Ejemplo n.º 32
0
		public static extern cusparseStatus cusparseCcsrsv2_solve(cusparseContext handle,
												   cusparseOperation transA,
												   int m,
												   int nnz,
												   CUdeviceptr alpha,
												   cusparseMatDescr descra,
												   CUdeviceptr csrValA,
												   CUdeviceptr csrRowPtrA,
												   CUdeviceptr csrColIndA,
												   csrsv2Info info,
												   CUdeviceptr x,
												   CUdeviceptr y,
												   cusparseSolvePolicy policy,
												   CUdeviceptr pBuffer);
Ejemplo n.º 33
0
		public static extern cusparseStatus cusparseZcsrmv(cusparseContext handle, cusparseOperation transA, int m, int n, int nnz, CUdeviceptr alpha, cusparseMatDescr descrA, CUdeviceptr csrValA, CUdeviceptr csrRowPtrA, CUdeviceptr csrColIndA, CUdeviceptr x, CUdeviceptr beta, CUdeviceptr y);
Ejemplo n.º 34
0
		public static extern cusparseStatus cusparseZhybsv_analysis(cusparseContext handle, cusparseOperation transA, cusparseMatDescr descrA, cusparseHybMat hybA, cusparseSolveAnalysisInfo info);
Ejemplo n.º 35
0
		public static extern cusparseStatus cusparseZhybmv(cusparseContext handle, cusparseOperation transA, CUdeviceptr alpha, cusparseMatDescr descrA, cusparseHybMat hybA, CUdeviceptr x, CUdeviceptr beta, CUdeviceptr y);
Ejemplo n.º 36
0
		public static extern cusparseStatus cusparseZhybsv_solve(cusparseContext handle, cusparseOperation trans, CUdeviceptr alpha, cusparseMatDescr descra, cusparseHybMat hybA, cusparseSolveAnalysisInfo info, CUdeviceptr x, CUdeviceptr y);
Ejemplo n.º 37
0
		public static extern cusparseStatus cusparseZcsrsv_solve(cusparseContext handle, cusparseOperation transA, int m, CUdeviceptr alpha, cusparseMatDescr descrA, CUdeviceptr csrValA, CUdeviceptr csrRowPtrA, CUdeviceptr csrColIndA, cusparseSolveAnalysisInfo info, CUdeviceptr x, CUdeviceptr y);
Ejemplo n.º 38
0
		public static extern cusparseStatus cusparseZcsrmm(cusparseContext handle, cusparseOperation transA, int m, int n, int k, int nnz, ref cuDoubleComplex alpha, cusparseMatDescr descrA, CUdeviceptr csrValA, CUdeviceptr csrRowPtrA, CUdeviceptr csrColIndA, CUdeviceptr B, int ldb, ref cuDoubleComplex beta, CUdeviceptr C, int ldc);
Ejemplo n.º 39
0
		public static extern cusparseStatus cusparseZcsrsv2_analysis(cusparseContext handle,
													  cusparseOperation transA,
													  int m,
													  int nnz,
													  cusparseMatDescr descrA,
													  CUdeviceptr csrValA,
													  CUdeviceptr csrRowPtrA,
													  CUdeviceptr csrColIndA,
													  csrsv2Info info,
													  cusparseSolvePolicy policy,
													  CUdeviceptr pBuffer);
Ejemplo n.º 40
0
		public static extern cusparseStatus cusparseZcsrmm2(cusparseContext handle, cusparseOperation transa, cusparseOperation transb, int m, int n, int k, int nnz,
											CUdeviceptr alpha, cusparseMatDescr descrA, CUdeviceptr csrValA, CUdeviceptr csrRowPtrA, CUdeviceptr csrColIndA, CUdeviceptr B, int ldb, CUdeviceptr beta, CUdeviceptr C, int ldc);
Ejemplo n.º 41
0
		public static extern cusparseStatus cusparseDbsrsv2_analysis(cusparseContext handle,
													  cusparseDirection dirA,
													  cusparseOperation transA,
													  int mb,
													  int nnzb,
													  cusparseMatDescr descrA,
													  CUdeviceptr bsrVal,
													  CUdeviceptr bsrRowPtr,
													  CUdeviceptr bsrColInd,
													  int blockDim,
													  bsrsv2Info info,
													  cusparseSolvePolicy policy,
													  CUdeviceptr pBuffer);
Ejemplo n.º 42
0
        public override void CSRMV(int m, int n, int nnz, ref double alpha, double[] csrValA, int[] csrRowA, int[] csrColA, double[] x, ref double beta, double[] y, cusparseMatDescr descrA, cusparseOperation op = cusparseOperation.NonTranspose)
        {
            CUdeviceptr ptrcsrv = GetDeviceMemory(csrValA);
            CUdeviceptr ptrcsrr = GetDeviceMemory(csrRowA);
            CUdeviceptr ptrcsrc = GetDeviceMemory(csrColA);
            CUdeviceptr ptrx    = GetDeviceMemory(x);
            CUdeviceptr ptry    = GetDeviceMemory(y);

            LastStatus = _driver.CusparseDcsrmv(_sparse, op, m, n, nnz, ref alpha, descrA, ptrcsrv.Pointer, ptrcsrr.Pointer, ptrcsrc.Pointer, ptrx.Pointer, ref beta, ptry.Pointer);
        }