public static extern CublasStatus cublasZtrsm_v2(CudaBlasHandle handle,
										SideMode side,
										FillMode uplo,
										Operation trans,
										DiagType diag,
										int m,
										int n,
										[In] CUdeviceptr alpha, //host or device pointer  
										[In] CUdeviceptr A,
										int lda,
										CUdeviceptr B,
										int ldb);
        public static extern CublasStatus cublasChemm_v2(CudaBlasHandle handle,
										 SideMode side,
										 FillMode uplo,
										 int m,
										 int n,
										 [In] CUdeviceptr alpha, //host or device pointer  
										 [In] CUdeviceptr A,
										 int lda,
										 [In] CUdeviceptr B,
										 int ldb,
										 [In] CUdeviceptr beta, //host or device pointer  
										 CUdeviceptr C,
										 int ldc);
 public static extern CublasStatus cublasZtrsmBatched( CudaBlasHandle    handle, 
                                                   SideMode  side, 
                                                   FillMode  uplo,
                                                   Operation trans, 
                                                   DiagType  diag,
                                                   int m, 
                                                   int n, 
                                                   ref cuDoubleComplex alpha, /*Host or Device Pointer*/
                                                   CUdeviceptr A, 
                                                   int lda,
                                                   CUdeviceptr B, 
                                                   int ldb,
                                                   int batchCount);
        public static extern CublasStatus cublasZdgmm(CudaBlasHandle handle,
												  SideMode mode, 
												  int m, 
												  int n,
												  CUdeviceptr A, 
												  int lda,
												  CUdeviceptr x, 
												  int incx,
												  CUdeviceptr C, 
												  int ldc);
        public static extern CublasStatus cublasCtrmm_v2(CudaBlasHandle handle,
										SideMode side,
										FillMode uplo,
										Operation trans,
										DiagType diag,
										int m,
										int n,
										[In] ref cuFloatComplex alpha, //host or device pointer  
										[In] CUdeviceptr A,
										int lda,
										[In] CUdeviceptr B,
										int ldb,
										CUdeviceptr C,
										int ldc);
			public static extern cusolverStatus cusolverDnZunmqr(cusolverDnHandle handle, SideMode side, Operation trans, int m, int n, int k, CUdeviceptr A, int lda, CUdeviceptr tau, CUdeviceptr C, int ldc, CUdeviceptr work, int lwork, CUdeviceptr devInfo);
Esempio n. 7
0
		/// <summary>
		/// This function computes the QR factorization of a m×n matrix A=Q*R
		/// where A is a m×n matrix, Q is a m×n matrix, and R is a n×n upper triangular matrix.
		/// </summary>
		/// <param name="side">indicates if matrix Q is on the left or right of C.</param>
		/// <param name="trans">operation op(Q) that is non- or (conj.) transpose.</param>
		/// <param name="m">number of rows of matrix A.</param>
		/// <param name="n">number of columns of matrix A.</param>
		/// <param name="k">number of elementary relfections.</param>
		/// <param name="A">array of dimension lda * n with lda is not less than max(1,m).</param>
		/// <param name="lda">leading dimension of two-dimensional array used to store matrix A.</param>
		/// <param name="tau">array of dimension at least min(m,n). The vector tau is from geqrf,
		/// so tau(i) is the scalar of i-th elementary reflection vector.</param>
		/// <param name="C">array of size ldc * n. On exit, C is overwritten by op(Q)*C.</param>
		/// <param name="ldc">leading dimension of two-dimensional array of matrix C. ldc >= max(1,m).</param>
		/// <param name="work">working space, array of size lwork.</param>
		/// <param name="lwork">size of working array work.</param>
		/// <param name="devInfo">if info = 0, the ormqr is successful. if info = -i, the i-th parameter is wrong.</param>
		public void Unmqr(SideMode side, Operation trans, int m, int n, int k, CudaDeviceVariable<cuDoubleComplex> A, int lda, CudaDeviceVariable<cuDoubleComplex> tau, CudaDeviceVariable<cuDoubleComplex> C, int ldc, CudaDeviceVariable<cuDoubleComplex> work, int lwork, CudaDeviceVariable<int> devInfo)
		{
			res = CudaSolveNativeMethods.Dense.cusolverDnZunmqr(_handle, side, trans, m, n, k, A.DevicePointer, lda, tau.DevicePointer, C.DevicePointer, ldc, work.DevicePointer, lwork, devInfo.DevicePointer);
			Debug.WriteLine(String.Format("{0:G}, {1}: {2}", DateTime.Now, "cusolverDnZunmqr", res));
			if (res != cusolverStatus.Success) throw new CudaSolveException(res);
		}