Table of Contents

Class CuSolverNative

Namespace
NVMathNet.Interop
Assembly
NVMath.Net.dll

Raw P/Invoke bindings for cuSOLVER dense (cusolverDn).

public static class CuSolverNative

Inheritance

Inherited Members

Methods

Check(CuSolverStatus, string?)

Throws NVMathNet.Interop.CuSolverException if status is not NVMathNet.Interop.CuSolverStatus.Success.

public static void Check(CuSolverStatus status, string? context = null)

Parameters

status CuSolverStatus
context string?

Create()

Creates a cuSOLVER dense handle.

public static nint Create()

Returns

nint

CreateGesvdjInfo()

Creates a gesvdjInfo_t parameter object (Jacobi tolerance, sweeps, residual).

public static nint CreateGesvdjInfo()

Returns

nint

Destroy(nint)

Destroys a cuSOLVER dense handle.

public static void Destroy(nint handle)

Parameters

handle nint

DestroyGesvdjInfo(nint)

Destroys a gesvdjInfo_t parameter object.

public static void DestroyGesvdjInfo(nint info)

Parameters

info nint

Dgeqrf(nint, int, int, double*, int, double*, double*, int, int*)

Double-precision QR factorisation: A = Q*R.

public static void Dgeqrf(nint handle, int m, int n, double* A, int lda, double* TAU, double* workspace, int lwork, int* devInfo)

Parameters

handle nint
m int
n int
A double*
lda int
TAU double*
workspace double*
lwork int
devInfo int*

DgeqrfBufferSize(nint, int, int, double*, int)

Queries workspace size for double-precision QR factorisation.

public static int DgeqrfBufferSize(nint handle, int m, int n, double* A, int lda)

Parameters

handle nint
m int
n int
A double*
lda int

Returns

int

Dgesvd(nint, byte, byte, int, int, double*, int, double*, double*, int, double*, int, double*, int, double*, int*)

Double-precision SVD: A = USVT.

public static void Dgesvd(nint handle, byte jobu, byte jobvt, int m, int n, double* A, int lda, double* S, double* U, int ldu, double* VT, int ldvt, double* work, int lwork, double* rwork, int* info)

Parameters

handle nint
jobu byte
jobvt byte
m int
n int
A double*
lda int
S double*
U double*
ldu int
VT double*
ldvt int
work double*
lwork int
rwork double*
info int*

DgesvdBufferSize(nint, int, int)

Queries workspace size for double-precision SVD.

public static int DgesvdBufferSize(nint handle, int m, int n)

Parameters

handle nint
m int
n int

Returns

int

DgesvdjBatched(nint, CuSolverEigMode, int, int, double*, int, double*, double*, int, double*, int, double*, int, int*, nint, int)

Double-precision batched Jacobi SVD (m, n ≤ 32): A = U·diag(S)·V^T per matrix.

public static void DgesvdjBatched(nint handle, CuSolverEigMode jobz, int m, int n, double* A, int lda, double* S, double* U, int ldu, double* V, int ldv, double* work, int lwork, int* info, nint gesvdjParams, int batchSize)

Parameters

handle nint
jobz CuSolverEigMode
m int
n int
A double*
lda int
S double*
U double*
ldu int
V double*
ldv int
work double*
lwork int
info int*
gesvdjParams nint
batchSize int

DgesvdjBatchedBufferSize(nint, CuSolverEigMode, int, int, double*, int, double*, double*, int, double*, int, nint, int)

Queries workspace size for double-precision batched Jacobi SVD.

public static int DgesvdjBatchedBufferSize(nint handle, CuSolverEigMode jobz, int m, int n, double* A, int lda, double* S, double* U, int ldu, double* V, int ldv, nint gesvdjParams, int batchSize)

Parameters

handle nint
jobz CuSolverEigMode
m int
n int
A double*
lda int
S double*
U double*
ldu int
V double*
ldv int
gesvdjParams nint
batchSize int

Returns

int

Dgetrf(nint, int, int, double*, int, double*, int*, int*)

Double-precision LU factorisation: PA = LU.

public static void Dgetrf(nint handle, int m, int n, double* A, int lda, double* workspace, int* devIpiv, int* devInfo)

Parameters

handle nint
m int
n int
A double*
lda int
workspace double*
devIpiv int*
devInfo int*

DgetrfBufferSize(nint, int, int, double*, int)

Queries workspace size for double-precision LU factorisation.

public static int DgetrfBufferSize(nint handle, int m, int n, double* A, int lda)

Parameters

handle nint
m int
n int
A double*
lda int

Returns

int

Dgetrs(nint, int, int, int, double*, int, int*, double*, int, int*)

Double-precision LU solve: solves A*X = B given factorised A and pivots.

public static void Dgetrs(nint handle, int trans, int n, int nrhs, double* A, int lda, int* devIpiv, double* B, int ldb, int* devInfo)

Parameters

handle nint
trans int
n int
nrhs int
A double*
lda int
devIpiv int*
B double*
ldb int
devInfo int*

Dorgqr(nint, int, int, int, double*, int, double*, double*, int, int*)

Overwrites A (holding Householder vectors from geqrf) with the first n columns of Q.

public static void Dorgqr(nint handle, int m, int n, int k, double* A, int lda, double* tau, double* work, int lwork, int* info)

Parameters

handle nint
m int
n int
k int
A double*
lda int
tau double*
work double*
lwork int
info int*

DorgqrBufferSize(nint, int, int, int, double*, int, double*)

Queries workspace size for double-precision orgqr.

public static int DorgqrBufferSize(nint handle, int m, int n, int k, double* A, int lda, double* tau)

Parameters

handle nint
m int
n int
k int
A double*
lda int
tau double*

Returns

int

Dormqr(nint, CuBlasSideMode, CuBlasOperation, int, int, int, double*, int, double*, double*, int, double*, int, int*)

Applies Q (or Q^T) from geqrf to C: C = op(Q) C or C op(Q).

public static void Dormqr(nint handle, CuBlasSideMode side, CuBlasOperation trans, int m, int n, int k, double* A, int lda, double* tau, double* C, int ldc, double* work, int lwork, int* info)

Parameters

handle nint
side CuBlasSideMode
trans CuBlasOperation
m int
n int
k int
A double*
lda int
tau double*
C double*
ldc int
work double*
lwork int
info int*

DormqrBufferSize(nint, CuBlasSideMode, CuBlasOperation, int, int, int, double*, int, double*, double*, int)

Queries workspace size for double-precision ormqr.

public static int DormqrBufferSize(nint handle, CuBlasSideMode side, CuBlasOperation trans, int m, int n, int k, double* A, int lda, double* tau, double* C, int ldc)

Parameters

handle nint
side CuBlasSideMode
trans CuBlasOperation
m int
n int
k int
A double*
lda int
tau double*
C double*
ldc int

Returns

int

Dpotrf(nint, CuBlasFillMode, int, double*, int, double*, int, int*)

Double-precision Cholesky factorisation: A = LL^T or U^TU.

public static void Dpotrf(nint handle, CuBlasFillMode uplo, int n, double* A, int lda, double* workspace, int lwork, int* devInfo)

Parameters

handle nint
uplo CuBlasFillMode
n int
A double*
lda int
workspace double*
lwork int
devInfo int*

DpotrfBatched(nint, CuBlasFillMode, int, double**, int, int*, int)

Batched double-precision Cholesky. aArray is a device array of batchSize device pointers, each to an n×n matrix.

public static void DpotrfBatched(nint handle, CuBlasFillMode uplo, int n, double** aArray, int lda, int* infoArray, int batchSize)

Parameters

handle nint
uplo CuBlasFillMode
n int
aArray double**
lda int
infoArray int*
batchSize int

DpotrfBufferSize(nint, CuBlasFillMode, int, double*, int)

Queries workspace size for double-precision Cholesky factorisation.

public static int DpotrfBufferSize(nint handle, CuBlasFillMode uplo, int n, double* A, int lda)

Parameters

handle nint
uplo CuBlasFillMode
n int
A double*
lda int

Returns

int

Dsyevd(nint, CuSolverEigMode, CuBlasFillMode, int, double*, int, double*, double*, int, int*)

Double-precision symmetric eigenvalue decomposition.

public static void Dsyevd(nint handle, CuSolverEigMode jobz, CuBlasFillMode uplo, int n, double* A, int lda, double* W, double* work, int lwork, int* info)

Parameters

handle nint
jobz CuSolverEigMode
uplo CuBlasFillMode
n int
A double*
lda int
W double*
work double*
lwork int
info int*

DsyevdBufferSize(nint, CuSolverEigMode, CuBlasFillMode, int, double*, int, double*)

Queries workspace size for double-precision symmetric eigenvalue decomposition.

public static int DsyevdBufferSize(nint handle, CuSolverEigMode jobz, CuBlasFillMode uplo, int n, double* A, int lda, double* W)

Parameters

handle nint
jobz CuSolverEigMode
uplo CuBlasFillMode
n int
A double*
lda int
W double*

Returns

int

SetStream(nint, nint)

Associates a CUDA stream with the handle.

public static void SetStream(nint handle, nint stream)

Parameters

handle nint
stream nint

Sgeqrf(nint, int, int, float*, int, float*, float*, int, int*)

Single-precision QR factorisation: A = Q*R.

public static void Sgeqrf(nint handle, int m, int n, float* A, int lda, float* TAU, float* workspace, int lwork, int* devInfo)

Parameters

handle nint
m int
n int
A float*
lda int
TAU float*
workspace float*
lwork int
devInfo int*

SgeqrfBufferSize(nint, int, int, float*, int)

Queries workspace size for single-precision QR factorisation.

public static int SgeqrfBufferSize(nint handle, int m, int n, float* A, int lda)

Parameters

handle nint
m int
n int
A float*
lda int

Returns

int

Sgesvd(nint, byte, byte, int, int, float*, int, float*, float*, int, float*, int, float*, int, float*, int*)

Single-precision SVD: A = USVT.

public static void Sgesvd(nint handle, byte jobu, byte jobvt, int m, int n, float* A, int lda, float* S, float* U, int ldu, float* VT, int ldvt, float* work, int lwork, float* rwork, int* info)

Parameters

handle nint
jobu byte
jobvt byte
m int
n int
A float*
lda int
S float*
U float*
ldu int
VT float*
ldvt int
work float*
lwork int
rwork float*
info int*

SgesvdBufferSize(nint, int, int)

Queries workspace size for single-precision SVD.

public static int SgesvdBufferSize(nint handle, int m, int n)

Parameters

handle nint
m int
n int

Returns

int

SgesvdjBatched(nint, CuSolverEigMode, int, int, float*, int, float*, float*, int, float*, int, float*, int, int*, nint, int)

Single-precision batched Jacobi SVD (m, n ≤ 32): A = U·diag(S)·V^T per matrix.

public static void SgesvdjBatched(nint handle, CuSolverEigMode jobz, int m, int n, float* A, int lda, float* S, float* U, int ldu, float* V, int ldv, float* work, int lwork, int* info, nint gesvdjParams, int batchSize)

Parameters

handle nint
jobz CuSolverEigMode
m int
n int
A float*
lda int
S float*
U float*
ldu int
V float*
ldv int
work float*
lwork int
info int*
gesvdjParams nint
batchSize int

SgesvdjBatchedBufferSize(nint, CuSolverEigMode, int, int, float*, int, float*, float*, int, float*, int, nint, int)

Queries workspace size for single-precision batched Jacobi SVD.

public static int SgesvdjBatchedBufferSize(nint handle, CuSolverEigMode jobz, int m, int n, float* A, int lda, float* S, float* U, int ldu, float* V, int ldv, nint gesvdjParams, int batchSize)

Parameters

handle nint
jobz CuSolverEigMode
m int
n int
A float*
lda int
S float*
U float*
ldu int
V float*
ldv int
gesvdjParams nint
batchSize int

Returns

int

Sgetrf(nint, int, int, float*, int, float*, int*, int*)

Single-precision LU factorisation: PA = LU.

public static void Sgetrf(nint handle, int m, int n, float* A, int lda, float* workspace, int* devIpiv, int* devInfo)

Parameters

handle nint
m int
n int
A float*
lda int
workspace float*
devIpiv int*
devInfo int*

SgetrfBufferSize(nint, int, int, float*, int)

Queries workspace size for single-precision LU factorisation.

public static int SgetrfBufferSize(nint handle, int m, int n, float* A, int lda)

Parameters

handle nint
m int
n int
A float*
lda int

Returns

int

Sgetrs(nint, int, int, int, float*, int, int*, float*, int, int*)

Single-precision LU solve: solves A*X = B given factorised A and pivots.

public static void Sgetrs(nint handle, int trans, int n, int nrhs, float* A, int lda, int* devIpiv, float* B, int ldb, int* devInfo)

Parameters

handle nint
trans int
n int
nrhs int
A float*
lda int
devIpiv int*
B float*
ldb int
devInfo int*

Sorgqr(nint, int, int, int, float*, int, float*, float*, int, int*)

Overwrites A (holding Householder vectors from geqrf) with the first n columns of Q.

public static void Sorgqr(nint handle, int m, int n, int k, float* A, int lda, float* tau, float* work, int lwork, int* info)

Parameters

handle nint
m int
n int
k int
A float*
lda int
tau float*
work float*
lwork int
info int*

SorgqrBufferSize(nint, int, int, int, float*, int, float*)

Queries workspace size for single-precision orgqr.

public static int SorgqrBufferSize(nint handle, int m, int n, int k, float* A, int lda, float* tau)

Parameters

handle nint
m int
n int
k int
A float*
lda int
tau float*

Returns

int

Sormqr(nint, CuBlasSideMode, CuBlasOperation, int, int, int, float*, int, float*, float*, int, float*, int, int*)

Applies Q (or Q^T) from geqrf to C: C = op(Q) C or C op(Q).

public static void Sormqr(nint handle, CuBlasSideMode side, CuBlasOperation trans, int m, int n, int k, float* A, int lda, float* tau, float* C, int ldc, float* work, int lwork, int* info)

Parameters

handle nint
side CuBlasSideMode
trans CuBlasOperation
m int
n int
k int
A float*
lda int
tau float*
C float*
ldc int
work float*
lwork int
info int*

SormqrBufferSize(nint, CuBlasSideMode, CuBlasOperation, int, int, int, float*, int, float*, float*, int)

Queries workspace size for single-precision ormqr.

public static int SormqrBufferSize(nint handle, CuBlasSideMode side, CuBlasOperation trans, int m, int n, int k, float* A, int lda, float* tau, float* C, int ldc)

Parameters

handle nint
side CuBlasSideMode
trans CuBlasOperation
m int
n int
k int
A float*
lda int
tau float*
C float*
ldc int

Returns

int

Spotrf(nint, CuBlasFillMode, int, float*, int, float*, int, int*)

Single-precision Cholesky factorisation: A = LL^T or U^TU.

public static void Spotrf(nint handle, CuBlasFillMode uplo, int n, float* A, int lda, float* workspace, int lwork, int* devInfo)

Parameters

handle nint
uplo CuBlasFillMode
n int
A float*
lda int
workspace float*
lwork int
devInfo int*

SpotrfBatched(nint, CuBlasFillMode, int, float**, int, int*, int)

Batched single-precision Cholesky. aArray is a device array of batchSize device pointers, each to an n×n matrix.

public static void SpotrfBatched(nint handle, CuBlasFillMode uplo, int n, float** aArray, int lda, int* infoArray, int batchSize)

Parameters

handle nint
uplo CuBlasFillMode
n int
aArray float**
lda int
infoArray int*
batchSize int

SpotrfBufferSize(nint, CuBlasFillMode, int, float*, int)

Queries workspace size for single-precision Cholesky factorisation.

public static int SpotrfBufferSize(nint handle, CuBlasFillMode uplo, int n, float* A, int lda)

Parameters

handle nint
uplo CuBlasFillMode
n int
A float*
lda int

Returns

int

Ssyevd(nint, CuSolverEigMode, CuBlasFillMode, int, float*, int, float*, float*, int, int*)

Single-precision symmetric eigenvalue decomposition.

public static void Ssyevd(nint handle, CuSolverEigMode jobz, CuBlasFillMode uplo, int n, float* A, int lda, float* W, float* work, int lwork, int* info)

Parameters

handle nint
jobz CuSolverEigMode
uplo CuBlasFillMode
n int
A float*
lda int
W float*
work float*
lwork int
info int*

SsyevdBufferSize(nint, CuSolverEigMode, CuBlasFillMode, int, float*, int, float*)

Queries workspace size for single-precision symmetric eigenvalue decomposition.

public static int SsyevdBufferSize(nint handle, CuSolverEigMode jobz, CuBlasFillMode uplo, int n, float* A, int lda, float* W)

Parameters

handle nint
jobz CuSolverEigMode
uplo CuBlasFillMode
n int
A float*
lda int
W float*

Returns

int

Zgeqrf(nint, int, int, Complex*, int, Complex*, Complex*, int, int*)

Complex QR factorisation.

public static void Zgeqrf(nint handle, int m, int n, Complex* A, int lda, Complex* tau, Complex* workspace, int lwork, int* devInfo)

Parameters

handle nint
m int
n int
A Complex*
lda int
tau Complex*
workspace Complex*
lwork int
devInfo int*

ZgeqrfBufferSize(nint, int, int, Complex*, int)

Queries workspace size for complex QR factorisation.

public static int ZgeqrfBufferSize(nint handle, int m, int n, Complex* A, int lda)

Parameters

handle nint
m int
n int
A Complex*
lda int

Returns

int

Zgesvd(nint, byte, byte, int, int, Complex*, int, double*, Complex*, int, Complex*, int, Complex*, int, double*, int*)

Complex SVD: A = U·diag(S)·V^H (VT holds V^H). Requires m ≥ n.

public static void Zgesvd(nint handle, byte jobu, byte jobvt, int m, int n, Complex* A, int lda, double* S, Complex* U, int ldu, Complex* VT, int ldvt, Complex* work, int lwork, double* rwork, int* info)

Parameters

handle nint
jobu byte
jobvt byte
m int
n int
A Complex*
lda int
S double*
U Complex*
ldu int
VT Complex*
ldvt int
work Complex*
lwork int
rwork double*
info int*

ZgesvdBufferSize(nint, int, int)

Queries workspace size for complex SVD (NVMathNet.Interop.CuSolverNative.Zgesvd(System.IntPtr,System.Byte,System.Byte,System.Int32,System.Int32,System.Numerics.Complex*,System.Int32,System.Double*,System.Numerics.Complex*,System.Int32,System.Numerics.Complex*,System.Int32,System.Numerics.Complex*,System.Int32,System.Double*,System.Int32*)).

public static int ZgesvdBufferSize(nint handle, int m, int n)

Parameters

handle nint
m int
n int

Returns

int

ZgesvdjBatched(nint, CuSolverEigMode, int, int, Complex*, int, double*, Complex*, int, Complex*, int, Complex*, int, int*, nint, int)

Batched complex Jacobi SVD (m, n ≤ 32): A = U·diag(S)·V^H per matrix.

public static void ZgesvdjBatched(nint handle, CuSolverEigMode jobz, int m, int n, Complex* A, int lda, double* S, Complex* U, int ldu, Complex* V, int ldv, Complex* work, int lwork, int* info, nint gesvdjParams, int batchSize)

Parameters

handle nint
jobz CuSolverEigMode
m int
n int
A Complex*
lda int
S double*
U Complex*
ldu int
V Complex*
ldv int
work Complex*
lwork int
info int*
gesvdjParams nint
batchSize int

ZgesvdjBatchedBufferSize(nint, CuSolverEigMode, int, int, Complex*, int, double*, Complex*, int, Complex*, int, nint, int)

Queries workspace size for batched complex Jacobi SVD.

public static int ZgesvdjBatchedBufferSize(nint handle, CuSolverEigMode jobz, int m, int n, Complex* A, int lda, double* S, Complex* U, int ldu, Complex* V, int ldv, nint gesvdjParams, int batchSize)

Parameters

handle nint
jobz CuSolverEigMode
m int
n int
A Complex*
lda int
S double*
U Complex*
ldu int
V Complex*
ldv int
gesvdjParams nint
batchSize int

Returns

int

Zgetrf(nint, int, int, Complex*, int, Complex*, int*, int*)

Complex LU factorisation with partial pivoting.

public static void Zgetrf(nint handle, int m, int n, Complex* A, int lda, Complex* workspace, int* devIpiv, int* devInfo)

Parameters

handle nint
m int
n int
A Complex*
lda int
workspace Complex*
devIpiv int*
devInfo int*

ZgetrfBufferSize(nint, int, int, Complex*, int)

Queries workspace size for complex LU factorisation.

public static int ZgetrfBufferSize(nint handle, int m, int n, Complex* A, int lda)

Parameters

handle nint
m int
n int
A Complex*
lda int

Returns

int

Zgetrs(nint, int, int, int, Complex*, int, int*, Complex*, int, int*)

Complex LU solve from the factors of NVMathNet.Interop.CuSolverNative.Zgetrf(System.IntPtr,System.Int32,System.Int32,System.Numerics.Complex*,System.Int32,System.Numerics.Complex*,System.Int32*,System.Int32*).

public static void Zgetrs(nint handle, int trans, int n, int nrhs, Complex* A, int lda, int* devIpiv, Complex* B, int ldb, int* devInfo)

Parameters

handle nint
trans int
n int
nrhs int
A Complex*
lda int
devIpiv int*
B Complex*
ldb int
devInfo int*

Zheevd(nint, CuSolverEigMode, CuBlasFillMode, int, Complex*, int, double*, Complex*, int, int*)

Eigenvalues (and optionally eigenvectors) of a Hermitian matrix; W holds real eigenvalues.

public static void Zheevd(nint handle, CuSolverEigMode jobz, CuBlasFillMode uplo, int n, Complex* A, int lda, double* W, Complex* work, int lwork, int* info)

Parameters

handle nint
jobz CuSolverEigMode
uplo CuBlasFillMode
n int
A Complex*
lda int
W double*
work Complex*
lwork int
info int*

ZheevdBufferSize(nint, CuSolverEigMode, CuBlasFillMode, int, Complex*, int, double*)

Queries workspace size for NVMathNet.Interop.CuSolverNative.Zheevd(System.IntPtr,NVMathNet.Interop.CuSolverEigMode,NVMathNet.Interop.CuBlasFillMode,System.Int32,System.Numerics.Complex*,System.Int32,System.Double*,System.Numerics.Complex*,System.Int32,System.Int32*).

public static int ZheevdBufferSize(nint handle, CuSolverEigMode jobz, CuBlasFillMode uplo, int n, Complex* A, int lda, double* W)

Parameters

handle nint
jobz CuSolverEigMode
uplo CuBlasFillMode
n int
A Complex*
lda int
W double*

Returns

int

Zpotrf(nint, CuBlasFillMode, int, Complex*, int, Complex*, int, int*)

Cholesky factorisation of a Hermitian positive-definite matrix.

public static void Zpotrf(nint handle, CuBlasFillMode uplo, int n, Complex* A, int lda, Complex* workspace, int lwork, int* devInfo)

Parameters

handle nint
uplo CuBlasFillMode
n int
A Complex*
lda int
workspace Complex*
lwork int
devInfo int*

ZpotrfBatched(nint, CuBlasFillMode, int, Complex**, int, int*, int)

Batched complex Cholesky. aArray is a device array of device pointers.

public static void ZpotrfBatched(nint handle, CuBlasFillMode uplo, int n, Complex** aArray, int lda, int* infoArray, int batchSize)

Parameters

handle nint
uplo CuBlasFillMode
n int
aArray Complex**
lda int
infoArray int*
batchSize int

ZpotrfBufferSize(nint, CuBlasFillMode, int, Complex*, int)

Queries workspace size for complex Cholesky factorisation.

public static int ZpotrfBufferSize(nint handle, CuBlasFillMode uplo, int n, Complex* A, int lda)

Parameters

handle nint
uplo CuBlasFillMode
n int
A Complex*
lda int

Returns

int

Zungqr(nint, int, int, int, Complex*, int, Complex*, Complex*, int, int*)

Forms the first n columns of the unitary factor Q from a complex QR factorisation.

public static void Zungqr(nint handle, int m, int n, int k, Complex* A, int lda, Complex* tau, Complex* work, int lwork, int* info)

Parameters

handle nint
m int
n int
k int
A Complex*
lda int
tau Complex*
work Complex*
lwork int
info int*

ZungqrBufferSize(nint, int, int, int, Complex*, int, Complex*)

Queries workspace size for NVMathNet.Interop.CuSolverNative.Zungqr(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Numerics.Complex*,System.Int32,System.Numerics.Complex*,System.Numerics.Complex*,System.Int32,System.Int32*).

public static int ZungqrBufferSize(nint handle, int m, int n, int k, Complex* A, int lda, Complex* tau)

Parameters

handle nint
m int
n int
k int
A Complex*
lda int
tau Complex*

Returns

int

Zunmqr(nint, CuBlasSideMode, CuBlasOperation, int, int, int, Complex*, int, Complex*, Complex*, int, Complex*, int, int*)

Applies Q (or Q^H) from a complex QR factorisation to C.

public static void Zunmqr(nint handle, CuBlasSideMode side, CuBlasOperation trans, int m, int n, int k, Complex* A, int lda, Complex* tau, Complex* C, int ldc, Complex* work, int lwork, int* info)

Parameters

handle nint
side CuBlasSideMode
trans CuBlasOperation
m int
n int
k int
A Complex*
lda int
tau Complex*
C Complex*
ldc int
work Complex*
lwork int
info int*

ZunmqrBufferSize(nint, CuBlasSideMode, CuBlasOperation, int, int, int, Complex*, int, Complex*, Complex*, int)

Queries workspace size for NVMathNet.Interop.CuSolverNative.Zunmqr(System.IntPtr,NVMathNet.Interop.CuBlasSideMode,NVMathNet.Interop.CuBlasOperation,System.Int32,System.Int32,System.Int32,System.Numerics.Complex*,System.Int32,System.Numerics.Complex*,System.Numerics.Complex*,System.Int32,System.Numerics.Complex*,System.Int32,System.Int32*).

public static int ZunmqrBufferSize(nint handle, CuBlasSideMode side, CuBlasOperation trans, int m, int n, int k, Complex* A, int lda, Complex* tau, Complex* C, int ldc)

Parameters

handle nint
side CuBlasSideMode
trans CuBlasOperation
m int
n int
k int
A Complex*
lda int
tau Complex*
C Complex*
ldc int

Returns

int