Table of Contents

Class DiagonalMultiply

Namespace
NVMathNet.LinAlg
Assembly
NVMath.Net.dll

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.

public static class DiagonalMultiply

Inheritance

Inherited Members

Methods

DdgmmAsync(DeviceBuffer<double>, DeviceBuffer<double>, DeviceBuffer<double>, int, int, bool, CudaStream?, CancellationToken)

Diagonal matrix multiply (double-precision, async). C = diag(x) * A when leftSide is true, or C = A * diag(x) when false.

public static Task DdgmmAsync(DeviceBuffer<double> a, DeviceBuffer<double> x, DeviceBuffer<double> c, int m, int n, bool leftSide = true, CudaStream? stream = null, CancellationToken ct = default)

Parameters

a DeviceBuffer<double>
x DeviceBuffer<double>
c DeviceBuffer<double>
m int
n int
leftSide bool
stream CudaStream?
ct CancellationToken

Returns

Task

SdgmmAsync(DeviceBuffer<float>, DeviceBuffer<float>, DeviceBuffer<float>, int, int, bool, CudaStream?, CancellationToken)

Diagonal matrix multiply (single-precision, async). C = diag(x) * A when leftSide is true, or C = A * diag(x) when false.

public static Task SdgmmAsync(DeviceBuffer<float> a, DeviceBuffer<float> x, DeviceBuffer<float> c, int m, int n, bool leftSide = true, CudaStream? stream = null, CancellationToken ct = default)

Parameters

a DeviceBuffer<float>

Device buffer for dense matrix A (m×n), column-major.

x DeviceBuffer<float>

Device buffer for diagonal vector x (length m if leftSide, n if rightSide).

c DeviceBuffer<float>

Device buffer for output matrix C (m×n), column-major.

m int

Number of rows.

n int

Number of columns.

leftSide bool

If true, left-multiply by diag(x); if false, right-multiply.

stream CudaStream?

Optional CUDA stream.

ct CancellationToken

Cancellation token.

Returns

Task