Table of Contents

Namespace NVMathNet.LinAlg

Classes

DiagonalMultiply

Stateless helpers for cuBLAS diagonal matrix multiply (DGMM): C = diag(X) * A (side=Left) or C = A * diag(X) (side=Right) in column-major layout.

Gemm

Stateless helpers for classic cuBLAS GEMM operations. Supports single-precision (System.Single), double-precision (System.Double), and half-precision (System.Half) element types.

Computes C = alpha * op(A) * op(B) + beta * C where all matrices are in column-major layout on the GPU device.

For mixed-precision or epilog support, see NVMathNet.LinAlg.Matmul (cuBLASLt).

Matmul

Stateful cuBLASLt matrix multiplication wrapper. Mirrors the design of nvmath.linalg.Matmul:

  1. Construct with dimension info and options.
  2. Call NVMathNet.LinAlg.Matmul.PlanAsync(NVMathNet.LinAlg.MatmulPlanPreferences,System.Threading.CancellationToken) to select an algorithm.
  3. Call NVMathNet.LinAlg.Matmul.ExecuteAsync(System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.Double,System.Double,System.Threading.CancellationToken) (possibly multiple times).
  4. Dispose to free CUDA resources.

Computes: D = alpha * op(A) * op(B) + beta * C where op() is optional transpose.

MatmulOptions

Options controlling matrix multiplication behaviour.

MatmulPlanCache

Process-wide cache of NVMathNet.LinAlg.Matmul planning results. When a NVMathNet.LinAlg.Matmul is planned with the same shape, data types, options, epilog configuration and preferences as an earlier one on the same device, the cuBLASLt heuristic is not queried again and the algorithm chosen by NVMathNet.LinAlg.Matmul.Autotune(System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.Double,System.Double,System.Int32) (if any) is reused. Caching is enabled by default.

MatmulPlanPreferences

Fine-grained control over the cuBLASLt algorithm selection used during NVMathNet.LinAlg.Matmul.Plan(NVMathNet.LinAlg.MatmulPlanPreferences) / NVMathNet.LinAlg.Matmul.PlanAsync(NVMathNet.LinAlg.MatmulPlanPreferences,System.Threading.CancellationToken). Pass an instance to the optional preferences parameter on those methods.

SymmetricMultiply

Stateless helpers for cuBLAS symmetric matrix-matrix multiply (SYMM): C = alpha * A * B + beta * C (side=Left) or C = alpha * B * A + beta * C (side=Right) where A is symmetric, in column-major layout.

TriangularSolve

Stateless helpers for cuBLAS triangular solve (TRSM): B = alpha * inv(op(A)) * B (side=Left) or B = alpha * B * inv(op(A)) (side=Right) where A is triangular, in column-major layout.

Enums

MatmulComputeType

cuBLASLt compute types available for matrix multiplication.

MatmulEpilog

Epilog operations applied after the matrix multiplication.

MatrixDataType

Element data types for matrices.